5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( C ) A. 4; B. 16; C. 30; D. 50;
6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( B ) A. 10,5 B. 15,6 C. 15,5 D. 10,6
7.若有定义 int x,*p;,则以下正确的赋值表达式是( B ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x;
8.以下对结构体类型变量的定义中,不正确的是( C )
A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; }stud; AA stud;
C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句:
func(rec1,rec2+rec3,(rec4+rec5));
函数调用语句中,含有的实参个数是( A )
A. 3 B. 4
C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x
#define QQ(x,y) SQ(x)- SQ(y)
宏调用QQ(2*3,2+3)执行后值为( C ) A.25 B.11
C.43 D.以上均不是
1.设int a=5, c=32;float b=2.5;,表达式b+c/a的值为___ 8.5 ___。 2.若x和a均是int型变量,则计算x=(a=4,6*2)后x的值是 12 __。 3.设a=3,b=4,c=5。则a+b>c&&b==c的值为 0 ___。 4.有如下程序段: int k=10;
while(k=0) k=k-1;
则循环体语句执行_0_次。 5.int i=0,s=0;
while (i for(__i=0_,s=0___;__i 6.将p说明为字符数组指针,数组大小为10,应写_char (*p)[10]_; 7.对于 int *p,*q,i=5,j=6; ,执行: p=&i;q=p;p=&j; 输出结果(*p)=____6___,(*q)=___5_____。 三、程序阅读题(请写出程序的输出结果。每题6分,共30分) 1. #include main() { int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(″%d, %d, %d, %d″,i,j,m,n); } 输出结果:9,11,9,10 2.. #include main() { int i; for(i=3;i<10;i++) { if(i*i/20>1) break; printf(\ } printf(\ } 输出结果:3,4,5,6 3. #include int fac(int n) { static int f=1; f=f*n; return(f); } main() { int i; for(i=2;i<=5;i++) printf(“%d!=%d\\n”,i,fac(i)); } 输出结果: 2!=2 3!=6 4!=24 5!=120 4. #include { char s[]=“ABCD”,*p; for(p=s+1;*p!=’\\0’;p++) printf(“%s\\n”,p); } 该程序的输出结果是: BCD CD D 5. #include while(*s) k=k*10+*s++-‘0’; return(k); } main() { int a; a=f(“1234”); printf(“a=%d\\n”,a); } 该程序的输出结果是:1234 四、根据下列各编程题题意填空(每空2分,共10分) 1、用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为: for (i=1; i<=9; i++) printf(“=”, _3*i-2__); 2、程序A如下: int f(int n) { if(n<=1) return n; else return f(n-1)+f(n-2); } 等价于程序B: int f(int n) { Int t0,t1,t_____; t0=0;t1=1;t=n; while(__n>=2__) { t=__t0+t1____; t0=t1; t1=t; n--; } return __t____; } 五、编程题(第1题8分,第2题12分,共20分) 1.求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,?,的前20项之和。 1.#include main() { int n,t; float a=2,b=1,s=0; for (n=1;n<=20;n++) { s=s+a/b; t=a; a+=b;b=t; } printf(“the total is %f\\n”,s); } 2. 输入5个字符串,从中找出最大的字符串并输出。要求:用二维字符数组存放这5个字符串,用指针数组元素分别指向这5个字符串,用一个二级指针变量指向这个指针数组。 2. #include main() { char a[5][80],*p[5],**q,**max; int i; for (i=0;i<5;i++) p[i]=a[i]; for (i=0;i<5;i++) gets(p[i]); max=&p[0]; q=&p[1]; for (i=1;i<5;i++,q++) if (strcmp(*max,*q)<0 max=q; puts(*max); } C语言考试期末考试复习题及答案 一、 选择题 (1) 一个C语言程序总是从()开始执行 A) 书写顺序的第一个函数 B) 书写顺序的第一条执行语句 C) 主函数main() D) 不确定 (2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ?x?&&?y? B) x||y+z&&y-z C) x<=y D) !((x (3) 执行以下程序段后,i的值是 ( ) int i=10; switch(i+1) { case 10: i++; break; case 11: ++i; case 12: ++i; break; default : i=i+1; } A) 11 B) 13 C) 12 D) 14 (4) 语句while(!e);中的条件!e等价于 ( ) A) e==0 B)e!=1 C) e!=0 D) 运行时出错 (5) 用 int a[4]={1,2}; 对数组进行初始化后,数组元素a[3]的值是 ( ) A) 随机值 B) 0 C) 1 D) F (6) 在执行char str[10]=“china\\0”; strlen(str)的结果是 ( ) A)5 B) 6 D) 7 D 9 (7) 若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运行结果是 ( ) A) 随机值 B) m C)o D) omputer (8) 在以下函数调用语句中 fun1(x,10,(x,10),fun2(y,10,(y,10))); 函数fun1参数的个数为 ( ) A) 8 B) 4 C) 5 D) 编译出错 (9) 在说明一个结构体变量时系统分配给它的存储空间是() A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间 C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和 Key:CDCAB ABBD 1. 用C语言编写的代码程序 A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行 2. C语言中用于结构化程序设计的三种基本结构是 A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue 3. 以下定义语句中正确的是 A)char a='A'b='B'; float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a; 4.下列选项中,不能用作标识符的是 A)_1234_ B)_1_2 C) int_2_ D)2_int_ 5.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则 A)称为函数的直接递归调用 B)称为函数的间接递归调用 C)称为函数的循环调用 D)C语言中不允许这样的递归调用 6.以下叙述中正确的是 A)局部变量说明为static存储类,其生存期将得到延长 B)全局变量说明为static存储类,其作用域将被扩大 C)任何存储类的变量在未赋初值时,其值都是不确定的 D)形参可以使用的存储类说明符与局部变量完全相同 7.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是 A)for(i=1,p=1;i<=5;i++) p*=i;B)for(i=1;i<=5;i++){ p=1; p*=i;} C)i=1;p=1;while(i<=5){p*=i; i++;}D)i=1;p=1;do{p*=i; i++; }while(i<=5); 8.有以下程序 main() { char a='a',b;