1、-第-2-装-线-班级 姓名 学号 -第-1-装-线- C语言程序设计期末考试卷及答案得分阅卷人复核人一、单项选择题。从A、B、C、D四个选项中,选择一个最佳答案填入括号内( 每小题1分,共计30分)。1一个C语言程序的执行是从( )。A)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束B)本程序的main函数开始,到main函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序的main函数结束2下列选项中不属于C语言关键字的是( )。A)switch B)printf C)default D)case3设有语句 int a =
2、 4; ,则执行了语句 a += a -= a * a; 后,变量a的值是( )。A)24 B) -24 C)4 D)16 4已知int i;float d;,则正确的表达式是( )。A)(int d) B)int(d)%i C)(int)d%i D)int(d%i)5已知int i,a;,执行语句i=(a=3*9,a/5),a+11; 后,变量i的值是( )。A)5 B)16 C)27 D)386下列选项中合法的字符型常量是( )。A)a B)n C)n D)a7下面程序的运行结果是( )。 #include void main( ) int k = 15; printf(k = %d,k
3、= %o,k = %xn,k,k,k);A)k = 15,k = 15,k = 15 B)k = 15,k = 17,k = 17 C)k = 15,k = 017,k = 0xf D)k = 15,k = 17,k = f8已知a,b,c为int类型,执行语句:scanf(%d%d%d,&a,&b,&c);使得a为10,b为20,c为30,以下不正确的输入形式是( )。A)10 B)10 C)10,20,30 D)10 2020 20 30 30309已知int x=1,y=2,z=3;,执行下列程序段后,输出的结果是( )。if(xy) z=x;x=y;y=z; printf(%d,%d,
4、%d,x,y,z); A)1,2,3 B)2,3,3 C)2,3,1 D)2,3,210若变量c为char类型,能正确判断出c为大写字母的表达式是( )。A)A=c=Z B)(A=c)|(c=Z) C)(A=c)&(c=Z) D)(A=c)&(c=Z)11有以下程序段:int k=0;while(k=1) k+; while循环执行的次数是( )。 A)无限次 B)有语法错,不能执行 C)一次也不执行 D)执行1次12以下程序的输出结果是( )。void main( )int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+;
5、printf(a=%d,b=%d,a,b);A)a=1,b=0 B)a=1,b=1 C)a=2,b=1 D)a=2,b=2 13若有定义int i = 1;,执行语句while ( i 10 ) i+; 后,i的值为( )。A)9 B)10 C)11 D)1214有说明语句int a =1,2,3,4,5;,则数组a包括了( )个元素。A)10 B)5 C)6 D)不确定15以下程序段执行后,输出结果是( )。char str=abcn012n;printf(%d,strlen(str);A)5 B)6 C)7 D)1316若有以下定义:float t54;,能正确引用t数组元素的表达式是(
6、)。A)t14 B)t50C)t00 D)t0,0 17执行下列程序段:int i,s = 0;int a 3 = 1,2,3,4,5,6;for ( i = 0;i b?a:b); 并将其放在主调函数之后,则在调用之前应该对该函数进行声明,以下选项中错误的声明是( )。A) float max( float a,b ); B) float max( float ,float );C) float max( float a ,float b ); D) float max( float x ,float y );23要使函数体内的某局部变量能保留函数前一次调用后的值,供下一次调用时继续使用,该
7、变量的存储类型应是( )。A) auto B) extern C) static D) register24类型相同的两个指针变量之间不能进行的运算是( )。A)+ B)- C)= D)=25若有说明语句:int i, x34 ;,则不能将x11的值赋值给变量i的语句是( )。A)i = *( *( x + 1 ) + 1 ); B)i = x11; C)i = *( *( x + 1 ) ); D)i = *( x1 + 1 );26有如下程序段:int a6 = 1,2,3,4,5,6 ;int m,*ptr;ptr = &a0;m = ( *ptr )*( *( ptr + 2 ) )
8、*( *( ptr + 4 ) );执行该程序段后,m的值为( )。A) 15 B)48 C)24 D)827设有定义:enum team my,your=4,his,her = his+10;则枚举元素my、your、his、her的值分别是( )。A)0 1 2 3 B)0 4 0 10 C)0 4 5 15 D)1 4 5 1528下面程序的运行结果是( )。union myunstruct int x,y,z; u; int k;a;void main( ) a.u.x = 4; a.u.y = 5; a.u.z = 6; a.k = 0;printf(%dn,a.u.x);A)4 B
9、)0 C)5 D)629表达式11 & 18的值是( )。A)0 B)1 C)2 D)2730当顺利执行了文件关闭操作后,fclose函数的返回值是( )。A) 0 B)true C) -1 D) 1得分阅卷人复核人二、填空题(每小题2分,共计20分)。1C语言源程序编译后生成 程序,然后经过连接生成可执行程序。2实型常量有两种表示方法:小数形式和 。3rewind函数的功能是 。4. 若ch是字符型变量,与ch=getchar();功能相同的语句是 。5以下程序段要使指针变量p指向一个整型的动态存储单元,请填空。int * p;p= malloc(sizeof(int); 6已知:int *
10、p,a = 2,b = 1;,则执行程序段p = &a;a = *p + b; 后,a的值为 。 7已知:int x = 1, y = 2, z;,则执行z = x y ? +x : +y;后,z的值为 。8当执行下面程序且输入:ABC时,输出的结果是 。#include void main( ) char ss10 =12345; gets(ss);printf(“%sn”,ss);9下面程序的功能是用函数的递归调用求n!(n1),请填空。float f(int n) if (n=1) return(1);else return ( );void main( ) int n; scanf(%
11、d,&n); printf(%.0fn,f(n);10以下程序执行后的输出结果是 。void main( ) int a = 3,b = 1,t; t = ( a 2 ) | b; printf(%dn,t ); 得分阅卷人复核人三、程序阅读题(每小题4分,共计20分)。1以下程序执行后的输出结果是 。#include void main( )int i;for ( i = 1;i 5;i+ ) putchar(#);2. 以下程序执行后的输出结果是 。void main( ) int arr10=-1,2,3,4,-5,6,7,-8,9,0,i,k = 0; for ( i = 0;i 10
12、;i + ) if(arri0) k+; printf(%dn,k );3以下程序执行后的输出结果是 。void fun(int a10)int i,j,t; for (i=0;i9;i+) for (j=0;jaj+1) t=aj;aj=aj+1;aj+1=t; void main( )int i; int a10=4,3,5,1,0,8,2,6,7,9; fun(a); for (i=0;i10;i+) printf(%3d,ai); printf(n); 4以下程序执行后的输出结果是 。#include struct stu int x; int *y;*p;int a2 = 10,20
13、;struct stu aa2 = 150,&a0,250,&a1;void main( ) p = aa; printf(%dn,(+p)- x ); 5以下程序执行后的输出结果是 。void swap( int *p1 ,int *p2) int k; k = *p1; *p1 = *p2; *p2 = k;void main( ) int a = 3,b = 6,*x = &a,*y = &b; swap( x,y ); printf(%d,%dn,*x,*y ); 得分阅卷人复核人四、程序改错题(共2小题,每正确修改一处错误得2分,共计10分)。注意:不得增行或删行,写出改正后的程序行
14、,使之能够得出正确的结果。1下列程序的功能是计算数列1,3,5,2n-1,的前n项之和,其中n由键盘输入。void main( )int s=0,n,i=1; scanf(%d,n); /* 1)该行有错误*/ do s=s+i; i=i+2; while (i2*n-1); /* 2)该行有错误*/ printf(s=%dn,s);2下列给定的程序中,函数average的功能是:求10个数的平均值。#include float average(float *array) int i; float aver,sum; /* 1)该行有错误*/ for (i=0;i10;i+) sum=arra
15、yi; /* 2)该行有错误*/ aver=sum/10; return(aver);void main( ) float data10,aver; int i; printf(Please input 10 data:n); for (i=0;i10;i+) scanf(%f,&datai); aver=average(data0); /* 3)该行有错误*/ printf(averege data is %5.2fn,aver);得分阅卷人复核人五、程序设计题(共3小题,第1小题6分,第2、3小题各7分,共20分)。1输入x,计算并输出下列分段函数y的值(结果保留2位小数)。2在一个已排序
16、的整型数组(设从小到大)中,插入一个整数,使之仍然有序(要求数组中原有的10个整数从键盘按顺序输入)。3请先编写一个函数concat(char str1 ,char str2 ),实现两个字符串的连接(注意不要用strcat函数);再编写一个main( )函数进行测试:在主函数中输入两个字符串,然后调用concat函数,最后将连接后的字符串输出。参考答案一、单项选择题。从A、B、C、D四个选项中,选择一个最佳答案填入括号内( 每小题1分,共30分,错选、漏选、多选均不得分)。12345678910BBBCABDCBD11121314151617181920ACBBCCACBD212223242
17、52627282930DACACACBCA得分阅卷人复核人二、填空题(每小题2分,共20分,错填、漏填均不得分)。题 号12345答 案目标指数形式使文件的位置指针返回到文件头scanf(“%c”,&ch);(int *)题 号678910答 案33ABCn*f(n-1)13得分阅卷人复核人三、程序阅读题(每小题4分,共20分)题 号12345答 案#3 0 1 2 3 4 5 6 7 8 9 2506,3说明:对于程序阅读题,如果该题考生所给出的答案仅仅是书写格式上的错误,没有其它方面错误,扣1分,否则该题不得分。得分阅卷人复核人四、程序改错题(共2小题,每正确修改一处错误得2分,共计10分
18、)。注意:不得增行或删行,写出改正后的程序行,使之能够得出正确的结果。1. 1)scanf(%d,&n);2)while (i=2*n-1);2. 1)float aver,sum=0;2)sum=sum+arrayi; (或者改为sum+=arrayi; 、sum=sum+*(array+i); 、sum+= *(array+i);sum=sum+(*(array+i);也正确)3)aver=average(data); (或者改为aver=average(&data0); 也正确)得分阅卷人复核人五、程序设计题(共3小题,第1小题6分,第2、3小题各7分,共20分)评分总则:若考生给出的程
19、序语法正确,符合要求,能够实现具体功能,即可得满分;若程序存在错误,不能得出正确结果,阅卷教师酌情给分,给分方法参考下列评分标准。1)源程序代码 #include main()float x,y; 1 分 printf(input x:); scanf(%f,&x); 2 分 if(x0) y=0; else if (x=15) y=4*x/3; else y=2.5*x-10.5; 2 分 printf(y=%.2fn,y); 1 分 2)源程序代码#include stdio.hmain()int a11,i,b; printf(imput 10 sorted integer number
20、:n); for (i=0;i=0&aib;i-) ai+1=ai; 2 分 ai+1=b; 1 分 printf(sorted numbers:n); for (i=0;i11;i+) printf(%5d,ai); 1 分3)源程序代码#include #include void concat(char str1,char str2) 1 分int i,j; j=strlen(str1); 1 分 for (i=0; str2i!=0; i+) str1j=str2i; j+; 1 分 str1j=0; 1 分main() char str120,str220; printf(input two string:n); gets(str1); gets(str2); 1 分 concat(str1,str2); 1 分 puts(str1); 1 分
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。