当前位置:文档之家› 哈工大(威海)C语言考前复习

哈工大(威海)C语言考前复习


29
函数sort 使用冒泡法将一维整型数组中各 元素按值从大到小排序

void sort( int a[ ], int n) { int k, j, t; for(k=1; k<n; k++) for( ⑷ ; j < n-k; j++) if( ⑸ ) ⑹ }
30
类型转化
void main( ) { int *p; p=( )malloc(sizeof( strcpy(p, "student"); printf(" %s\n", p); free(p) }


float double char
short int long
实数
a single character

整数
3
真假判断
在while(x)语句中的x与下面条件表达式等价的 是 。 A) x==0 B) x==1 C) x!=1 D) x!=0

4
溢出Overflow

例如:
byte b = 100; b = b * 100;
7
Operators
Assignment: = Increment (++) and decrement (--) 给整型变量加 1 的四种方法: i = i + 1; i += 1; i++; There are many such compound operators ++i
8

强制类型转化


20
以下对一维整型数组a的正确说明是 A) int a(10); B) int n=10,a[n]; C) int n; scanf(“%d”,&n); int a[n]; D) #define SIZE 10 int a[SIZE];


21
main() { int x[N], y1[N], y2[N]; int i, j, n1, n2, t, p;
26
静态变量问题:只生一次,只死一次
# include <stdio.h> int f(int m) { static int k=2; k++; return k+m; } void main( ) { int s; s=f(2); printf("%d, %d\n", s, f(s)); }
27
sort_test.c
22
参数传递
#include <stdio.h> void p(int *x,int y) { ++ *x; y --; } void main() { int x=0, y=3; p(&x, y); printf("%d, %d",x, y); }
23
#include <stdio.h> int z; void p(int *x, int y){ ++*x; y--; z=*x+y+z; printf("%d, %d, %d#", *x, y, z); }
)+
));
1_6.C
}
若程序中出现书写格式错误 请按语法规则分析
32


若二维数组a有m列,则计算任一元素a[i][j]在数组 中位置的公式为 。 假设a[0][0]位于数组的第一个位置上。 i*m+j+1

假设a[0][0]位于数组的第0个位置上。 i*m+j
33
int xtoi(
char *s
}
} return d;
1_9.C 34
分清条件语句的结构
main(){ int x=2,y=-1,z=2; if(x<y) if(y<0) z=0; else z+=1; printf("%d\n",z); } void main() { int i; for(i=0;i<3;i++) switch(i) { case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i); } }
输入1个长整数,求各位数字的平方和。 例如:输入-123,输出14。
#include <stdio.h> void main( ) { int digit; long in,s; scanf("%ld", &in); ⑺ ; ⑻ ; while(in>0){ ⑼ ; s=s+digit*digit; ⑽ ; } printf("sum=%ld\n", s); }
for(i=0; i<n2-1; i++){ p=i; for(j=i+1; j<n2; j++) if(y2[p]<y2[j]) p=j; if(p!=i){ t=y2[i]; y2[i]=y2[p]; y2[p]=t; }
}
for(i=0; i<n1; i++) printf("%d, ", y1[i]); for(i=0; i<n2; i++) printf("%d, ", y2[i]); }
}
getPut.c
18
不用中间变量,实现两个数的互换
main() { int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d,%d\n", a, b ); }
19
一维数组的初始化
以下能对一维数组a进行正确初始化的语句是 A) int a[10]=(0,0,0,0,0); B) int a[10]={}; C) int a[]={0}; D) int a[10]={10*1};
14
循环终止前,表达式3也要执行一次
#include <stdio.h> main() { int i, sum=0; for(i=1; i<=3; i++, sum++) sum+=i; printf(“%d\n”, sum); }
15
函数的参数传递
void fun(int *x, int *y) { printf("%d %d\n", *x, *y); *x=3; *y=4; } main() { int x=1,y=2; fun(&y,&x); printf("%d %d\n",x, y); }
1_3.C
31
));
二维数组中变量的访问及其地址的计算
main( ) {
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
int i, j; for(i=0; i<3; i++) { for(j=0; j<4; j++) printf("%d, ", *(*( printf("\n"); }

一个 byte 能存放的最大值 +127 This is called overflow


编译器不做任何提醒!

向下溢出: b -= b*100;
5
条件表达式


表示条件:a<x<b或x<c的C语言表达式是 (a<x)&&(x<b)||(x<c)

6
短路
int a=1,b=1,c; c=a||--b; printf(“%d,%d”,c,b) 上述程序的打印结果为
n1=n2=0; for(i=0;i<N;i++){ scanf(“%d”, &x[i]); if(x[i] % 2==0) y1[n1++]=x[i]; else y2[n2++]=x[i]; } for(i=1; i<n1; i++) for(j=0; j<n1-1; j++) if(y1[j]>y1[j+1]){ t=y1[j]; y1[j]=y1[j+1]; y1[j+1]=t; }
default的位置即使在最前面, 也不会先执行
int n='c'; switch(n++) { default: printf("error");break; case 'a': case 'A': case 'b': case 'B':printf("good");break; case 'c':case 'C':printf("pass"); case 'd':case 'D':printf("warn"); }


Casting converts one type to another 如:
int x = 1; (double) x; double d = 3.4; (int) d;
9
强制类型转化
float x1, x2; x1=3/2; x2=x1/2; printf("%d, %.1f", (int)x1, x2) ;
相关主题