《大学c语言考试试题(含答案)期末题库.docx》由会员分享,可在线阅读,更多相关《大学c语言考试试题(含答案)期末题库.docx(103页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、选择题部分第一章,概述1,以下叙述中错误的是(B )A. 一个C语言程序只能有一个主函数B. C语言编写的每个函数都可以进行独立的编译并执行C. C语言编写的函数都可以作为一个独立的源程序文件D.C语言编写的函数源程序,其文件名后缀可以是C2,计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是(A )A. C语言程序仅可以编译执行B. C语言程序仅可以解释执行C.以上说法都不对D. C语言程序既可以编译执行又可以解释执行3, C语言规定:在一个源程序中,main的位置(A )A.可以任意B.必须在最后C.必须在最开始D.必须在系统调用的库函数后面4, 一个C语言程序是由(
2、C )A.若干过程组成B.若干子程序组成C.函数组成D.一个主程序和若干子程序组成5,以下关于结构化程序设计的叙述中正确的是(B )A.一个结构化程序必须同时由顺序、分支、循环三种结构组成B.在C语言中,程序的模块化是利用函数实现的C.由三种基本结构构成的程序只能解决小规模的问题D.结构化程序使用goto语句会很便捷6,以下叙述正确的是(C )A.在C程序中,main函数必须位于程序的最前面B.在对一个C程序进行编译的过程中,可发现注释中的拼写错误C. C语言本身没有输入输出语句D.程序的每行中只能写一条语句7,以下叙述中错误的是(A )A. C语言编写的每个函数都可以进行独立的编译并执行B.
3、C语言编写的函数源程序,其文件名后缀可以是CC. 一个C语言程序只能有一个主函数D. C语言编写的函数都可以作为一个独立的源程序文件8,以下叙述正确的是(B )A.C程序的书写格式是固定的,每行只能写一条语句B. C程序中注释部分可以单独占一行C.构成C程序的基本单位是函数,所有函数名都可以由用户命名D.在对C语言程序进行编译时,可以发现注释行中的拼写错误9,以下叙述正确的是(D )A. C语言程序是由过程和函数组成的B. C语言函数不可以单独编译C. C语言中除了main函数,其他函数不可作为单独文件形式存在D. C语言函数可以嵌套调用,例如:fun (fun (x)10,一个C程序的执行是
4、从(D )A.本程序文件的第一个函数开始,到本程序main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序的main函数开始,到main函数结束11,以下叙述不正确的是(A )A.在C程序中,注释说明只能位于一条语句的后面B. C程序的基本组成单位是函数C. 一个C源程序可由一个或多个函数组成D. 一个C源程序必须包含一个main函数第二章,数据类型、运算符和表达式3ae1,若有数学式左,则不正确的C语言表达式是(A )A.3*a*e/b*cB.a/b/c*e*3C.3*a*e/b/cD. a*e/c/
5、b*32,设:int a=l, b=2, c=3, d=4, m=2, n=2;执行(m=ab)&(n=cd)后n的值为(C )。A. 4B. 3C. 2D. 13,下列表达式中,不满足当x的值为偶数时值为真,为奇数时值为假的要求的是(C)A. (x/2*2-x)=0B. !(x%2)C.!(x%2=0)D.x%2=04,表达式18/4*sqrt(4.0)/8值的数据类型为(B )。A.charB.doubleC.不确定D.float5,在C语言中,要求运算数必须是整型的运算符是(A ) A.%B./C. +D. !=6,若x, i, j和k都是int型变量,则计算表达式 x=(i=4, j=
6、16,k=32)后,x的值为(B )0 A.4B. 32C. 16D. 527 , C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(D )A.必须为下划线8 .必须为字母C.可以是字母、数字和下划线中的任意一种D.必须为字母或下划线8,若a是数值类型,则逻辑表达式(a=l)|(a!=l)的值是(D )A.不知道a的值,不能确定B. 0C. 2D. 19,判断字符型变量cl是否为数字字符的正确表达式为(A)A. (cl=0,)&(cl=0)&(cl=cl)|(9=cl)D.,0,=cl=cl)|( z=,a )&(cl=a)&(cl=z)D. a =clk2)&(k2=k2k
7、l)后,kl和k2的值分别为(B)A. 0和1B. 0和20C. 10和1D. 10和2020,以下选项中,能表示逻辑值假的是(B )A. 0.000001B. 0C. 100.0D. 121,以下选项中非法的字符常量是(B )A.,102,B.019C.xff第三章,算法和控制语句部分1,为表示关系xyNz,应使用的表达式是AA. (x=y)&(y=z)B. (x=y=z)C. (x=y)AND(y=z)D. (x=y)&(y=z)2,有以下程序main () int i;for(i=0; i3; i+)switch(i) case 1: printfi);case 2: printfi);
8、default : printf i);执行后输出结果是AA.011122B.120C.012020D.0123,对for(表达式1;表达式3)可理解为(A)。A. for (表达式1;1;表达式3)B. for (表达式1;0;表达式3)C. for (表达式1;表达式1;表达式3)D. for (表达式1;表达式3;表达式3)4,若i为整型变量,则以下循环执行次数是(A)。for(i=2;i=0;) printf(%d, i一);A.。次B.1次C.无限次D.2次5,有以下程序段int n=0, p;doscanf&p);n+;while(p!=12345&n3);此处do-while循环
9、的结束条件是 D。A. p的值等于12345并且n的值大于等于3B. p的值不等于12345并且n的值小于3C. p的值不等于12345或者n的值小于3D. p的值等于12345或者n的值大于等于36,以下描述中正确的是(D)。A. do-while循环中,根据情况可以省略whileB.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句C. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号D.在do-while循环体中,一定要有能使while后面表达式的值变为零(假)的操作7,执行语句for(i=l;i+bc)print
10、f(%dn”,d);else if (c-1= d)=1)printf (,%dn,J d+1);else printf (,%dn, d+2);执行后输出结果是D1, 28, 4C.编译时出错D.39, main ()int x=l,a=O, b=0;switch (x) case 0: b+;case 1: a+;case 2: a+;b+;printf (a=%d, b二%d”, a, b);该程序的输出结果是(B)A. 2,2B. 2,1C. 1,1D. 1,010,以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:main () int n
11、, k;float score, sum, ave;sum=0.0;for (n=l;n=10;n+)for (k=l;k=4;k+)scanf(f”,&score);sum+=score;ave=sum/4.0;printf (,N0%d:%fn,, n, ave);)上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是BA. ave=sum/4.0B. sum=0.0;C. sum+=score;D. printf (,N0%d:%fn”, n, ave);11,运行以下程序后,输出的结果是Amain () int k =-3;if(k 0) y =1;els
12、e y =0;A.r o (x0)B./1(x 0c.-1(x 听y =1(x =0)0).D.r -1(x0)13,以下程序的输出结果是Amain () int x, i;for(i =1; i =100; i+) x = i;if (+x %2=0)if(+x %3=0)if (+x %7=0)printf (b?(bc?l:0):0;功能相同的是(A)A. if(ab)&(bc) k=l;else k=0;B. if (ab)|(bc) k=l;else k=0;C. if(ab) k=l;else if (bc) k=l;else k=0;D. if (a=b) k=0;else if
13、(b=c) k=l;15,为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与(B)配对。A.其之后最近的ifB.其之前最近的ifC.缩排位置相同的ifD.同一行上的if16, t为int类型,进人下面的循环之前,t的值为0while( t=l )则以下叙述中正确的是B_oA.以上说法都不对B.循环控制表达式的值为1C.循环控制表达式的值为0D.循环控制表达式不合法17,以下程序段的输出结果是Bint k, j, s;for(k =2; k 6; k+, k+) s =1;for(j = k; j 6; j+)s += j;printf (t%dn,J s);A.
14、 15B. 10C. 24D. 918,语句while (!E);中的表达式!E等价于(B)。A. E!= lB. E=0C. E=lD. E!=019,以下程序段的输出结果是Bint x=3;do pritnf(%3d”,x-=2); while (!(-x);A.死循环B. 1-2C. 30D. 120,以下程序的运行结果是(B)。main ()int i=l, sum=0;while (ib) c=a, a=b, b=c;B. if(ab) c=a, a=b, b=c;C. if (ab) c=a;a=b;b=c;D. if (ab) c=a;a=b;b=c;22,以下程序中,while
15、循环的循环次数是_A main ()int i=0;while (i10)if(ib)a=b; if (ac)a=c;则a的值为(A) oA.1B.不一定C. 3D. 225,有以下程序,若想从键盘上输入数据,使变量m中的值为123, n中的值为456, p中的值为789,则正确的输入是(B)#include int main ()int m, n, p;scanf(m=%dn=%dp=%d,&m,&n,&p);printf (%d%d%dn,m, n, p);return 0;A. m=123 n=456 p=789B. m=123n=456p=789C.123456789D. m=123,
16、 n=456, p=78926,有以下程序main (A)int i=l, j=l, k=2;if (j+|k+)&i+)printf (d,%d,%d n,i, j, k);)执行后输出结果是A. 2,2,2B. 2,2,3C. 1,1,2D. 2,2,127,以下程序段的输出结果为(A) o for(i=4;il;i-) for (j=l; ji ; j+) putchar (#);A.#B.无C. #D. #28,有如下程序main (A)float x=2.0, y;if (x0.0) y=0.0;else if (x10.0) y=l.0/x;else y=l.0;printf (f
17、n,y);该程序的输出结果是A. 0.500000B. 0.250000C. 1.000000D. 0.00000029,判断两个字符串是否相等,正确的表达方式是DA. while(sl=s2)B. while(sl=s2)C. while(strcmp(si, s2)=0)D. while(strcmp(si, s2)=0)30,若x是int类型变量,以下程序段的输出结果是D for(x =3; x 6; x+)printf (x%2)?(*%d”):(“#%dn”),x);A.#3*4B.#3*4#5C.*3 in *5D.*3制。3i, C语言中,switch后的括号内表达式的值可以是C
18、A.只能为整型和字符型B.只能为整型C.任何类型D.只能为整型,字符型,枚举型32,设j和k都是int类型,则下面的for循环语句(C)。for(j=0, k=0;jbc)a=b; else a=c;则a的值为(C) oA. 2B. 3C. 1D. 034,为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else总与(C )配对A.同一行上的ifB.其之后最近的ifC.其之前最近的未配对的ifD.缩排位置相同的if35,以下不正确的if语句形式是(D)。A. if (xy&x!=y);C. if (x=y) x+=y;D. if (x!=y) scanf(d”,&x) else
19、 scanf(%d,&y);36,结构化程序设计所规定的三种基本控制结构是(D)。A.树形、网形、环形B.输入、处理、输出C.主程序、子程序、函数D.顺序、选择、循环37,以下程序的输出结果是Dmain () int y =10for(; y 0; y 一)if(y %3=0) pritnf -y);continue;A.741B. 963C. 875421D. 85238,以下程序的执行结果是Cmain () int x =0, s =0;while(!x !=0) s +=+x;printf(%d ,s );A. .无限循环B. 0C. 1D.语法错误39, int a=l, b=2, c
20、=3; if (ac)b=a;a=c;c=b;则c的值为(B) oA. 3B. 2C.不一定D.140,以下叙述正确的是(B)。A. do-while语句构成的循环不能用其它语句构成的循环来代替.B.用do-while语句构成的循环,在while后的表达式为零时结束循环C.用do-while语句构成的循环,在while后的表达式为非零时结束循环.D. do-while语句构成的循环只能用break语句退出.41,假定所有变量均已正确定义,下列程序段运行后x的值是(D)。kl=l;k2=2;k3=3;x=15;if (!kl)x一;else if (k2)x=4;else x=3;A. 15B.
21、 14C. 3D. 442,有以下程序,程序运行后的输出结果是(B ) ttinclude int main ()int i, j, m=l;for(i=l;i0; j)if (i*j3) break;printfm);return 0;JA. m=2B. m=6C. m=4D. m=543,以下for循环的执行次数是for(x=0, y=0;(y=123)&(x4);x+);(A)。A.4次B.是无限循环C.3次D.循环次数不定44,下列程序的输出结果是(A)。int x=l, y=0, a=0, b=0;switch(x)1case 1:switch (y)case 0:a+;break;
22、case 1:b+;break;)case 2:a+;b+;break;case 3:a+;b+;break;printf(a=%d, b=%dn”, a,b);)A. a=2, b=lB. a=2, b=2C. a=l, b-0D. a=l, b=l45,有以下程序,当执行程序时,按下列方式输入数据(从第1列开始,R代表回车,注意:回车也是一个字符)1234则输出结果是(C)Winclude int main ()char a, b, c, d;scanf (%c%c,&a,&b);c=getchar (); d=getchar();printf (,%c%c%c%cn,J a, b, c,
23、 d);return 0;A. 1234B. 1234C. 123D. 1246,以下程序的运行结果是(D)。main () int n;for (n=l;n+y;x=i+) i=x;D. for (i=lO;i-)sum+=i;49,从循环体内某一层跳出继续执行循环外的语句是AA. break语句B. return语句C. continue语句D.空语句50,下列程序的输出为(C)。main () int y=10;while (y一);printf(y=%dn,y);A. while构成无限循环B. y=0C. y=-lD. y=l51,有以下程序,程序运行后的输出结果是(D) ttinc
24、lude int main ()int a=1, b=2;while(a0|E0)C. (!E=0)D. (E!=0)53,以下程序段的输出结果是Cint i, j, m =0;for(i =1; i =15; i +=4)for(j =3; j =19; j +=4) m+;printf (tt%dn,) m);A. 15B. 12C. 20D. 2554,执行下列语句后的输出为(C)。int j=-l;if(j=l) printf(*n);else printf;A.%cB.有错,执行不正确C. *D. %55,以下程序的执行结果是_A_.main () int num =0;while(
25、 num =2) num+;printf (d, num );A. 1,2,3,B. 1,2,3,4,C. 1,2,D. 0,1,256,下面程序的运行结果是A#include main ()(int y=10;doy一;while (一y);printf (dn,y-);)A. 0B. 1C. 8D.-l57,若有定义语句int a, b;double x;则下列选项中没有错误是(B)A. switch(int)(x)%2)case 0.0:a+;break; case 1.0:b+;break; default:a+;b+;B. switch(int)x%2)case 0:a+;break
26、; case 1:b+;break; default:a+;b+;C. switch(x%2)case 0:a+;break; case 1:b+;break; default:a+;b+;D. switch(int)x%2.0)case 0:a+;break; case 1:b+;break; default:a+;b+;58,设a、b和c都是int变量,且a=3, b=4, c=5;则以下的表达式中,值为0的表达式是CA. a|Ib+c&bcB. a=bC. !(a j共执行了多少次C include main ()int i =0, j =10, k =2, s =0; for(;)i
27、+= k;if(i j)printf C4%dn, s);break;A. 4B. 8C. 6D. 761, while (fabs (t)le-5) if (! s/10) break;循环结束的条件是(C) oA. fabs(t)le-5&!s/10B. fabs (t)=le-5&t-10&s10D. s/10=062,以下叙述正确的是:CA.用do-while构成循环时,只有在while后的表达式为非零时结束循环B. do-while语句构成的循环不能用其它语句构成的循环来代替。C.用do-while构成循环时,只有在while后的表达式为零时结束循环D. do-while语句构成的循
28、环只能用break语句退出。63,以下程序的输出结果是Bmain () int i, sum;for(i =1; i 6; i+)sum += i;printf (%dn sum);A.15B.不确定C. 16D. 064,有以下程序,程序运行后的输出结果是(D )#includeint main ()char b, c; int i;b=a ; c- A,;for(i=0;i10;i+)D. int s=6; m:if(s100) exit (0); else s-=2; goto m:67,判断char型变量c是否为大写字母的C的表达式是CA. A=c=ZB. (tA,=c)C. (c=,
29、A,)&(c=,A,)&(c=,Z,)68,下列程序的输出结果是(A)。main () int x=l, y=0, a=0, b=0;switch(x)case 1:switch(y) case 0:a+;break;case 1:b+;break;)case 2:a+;b+;break;case 3:a+;b+;break;printf (a二%d, b二%dn”, a, b);)A. a=2, b=lB. a=l, b=0C. a=2, b=2D. a=l, b=l69,下面有关for循环的正确描述是(D)。A. for循环是先执行循环循环体语句,后判断表达式B.在for循环中,不能用br
30、eak语句跳出循环体C. for循环只能用于循环次数已经确定的情况D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来70,假定所有变量均已正确定义,下面语句段执行后的x的值是Ba b c =0; x 35;if (!a) x一一; else if (b); if(c) x =3; else x =4;A.34B. 4C. 35D. 371,在C语言中,为了结束由while语句构成的循环,while 后一对圆括号中表达式的值应该为(B)。A. 1B. 0C. TrueD.非。72,有以下程序,程序执行后的输出结果是(A )include int main ()int y=10
31、;while(y-);printf (y=%dn,y);return 0;A. y=-lB. y=lC. while构成无限循环D. y=073,有以下程序,程序运行后的输出结果是(B ) ftinclude int main ()int a=l, b=0;i f(!a) b+;else if (a=0) if(a) b+=2;else b+=3;printf (级dn,b);return 0;A. 3B. 0C. 1D. 274,有输入语句:scanf (z,a=%d, b=%d, c=%d,z,&a,&b,&c);为使变量a的值为1, b的值为3, c的值为2,则正确的数据输入方式是(B
32、)。A. a=l b=3 c=2/B. a=l, b=3, c=2ZC. 132/D. 1,3,2/75,程序段: int x=12; doubley=3.141593;printf (M%d%8.6r, x, y);的输出结果是(C) A.12,3.141593B. 123.141593C. 123.141593D.123.141593076,若变量已正确定义,有以下程序段i=0;do printf (%d,”, i); while(i+);printf (“刎n,i);其输出结果是(D)A.0,0B.程序进入无限循环C. 1,1D. 0,177,下列条件语句中输出结果与其他语句不同的是(C
33、)A. if (a) printf (%dn, x); else printf (%dn, y);B. if(a=0)printfy);elseprintf (,%dn,x);C. if(a=0)printf (,%dn,J x);elseprintf (,%dn,y);D. if(a!=0)printf (%dn, x);elseprintf (,%dn?,,y);78,有以下程序,程序运行后的输出结果是(C )#include int main () int x=l,y=0;if(!x) y+;else if (x=0)if (x) y+=2;else y+=3;printf(dn, y);return 0;A. 3B. 2C. 0D.179,有以下程序段char name20;int num;scanf (name=%s num=%d, name;&num);当执行上述程序,并从键盘输入:name=Lili 1111111=1001回车后,name的值(C)A. Lili num二B. name=LiliC. LiliD. name=Lili num=100180,执行下列程序片段时输出的结果是(C )oint x=13,y=5;printf(%d, x%=(y/=2);A. 2B. 3C. 1D. 081,已知有如下定义和输入语