《c语言期末题库》word版.doc_第1页
《c语言期末题库》word版.doc_第2页
《c语言期末题库》word版.doc_第3页
《c语言期末题库》word版.doc_第4页
《c语言期末题库》word版.doc_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

期末考试试题,填空题只出第五章内容,改错题为第六章,程序设计为第三、八章。选择题部分第一章,概述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语言程序是由( 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.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程序的执行是从( D ) A.本程序文件的第一个函数开始,到本程序main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序的main函数开始,到main函数结束11, 以下叙述不正确的是( A )A.在C程序中,注释说明只能位于一条语句的后面B.C程序的基本组成单位是函数C.一个C源程序可由一个或多个函数组成D.一个C源程序必须包含一个main函数第二章,数据类型、运算符和表达式1,若有数学式,则不正确的C语言表达式是( A )A.3*a*e/b*cB.a/b/c*e*3C.3*a*e/b/cD.a*e/c/b*32, 设:int a=1,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=16,k=32)后,x的值为( B )。A.4B.32C.16D.527, C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( D )A.必须为下划线B.必须为字母C.可以是字母、数字和下划线中的任意一种D.必须为字母或下划线8, 若a是数值类型,则逻辑表达式(a=1)|(a!=1)的值是( D )A.不知道a的值,不能确定B.0C.2D.19, 判断字符型变量c1是否为数字字符的正确表达式为(A)A.(c1=0)&(c1=0)&(c1=c1)|(9=c1)D.0=c1=c1)|(z=a)&(c1=a)&(c1=z)D.a=c1k2)&(k2=k2k1)后,k1和k2的值分别为 ( B)A.0和1B.0和20C.10和1D.10和2020, 以下选项中,能表示逻辑值假的是( B )A.0.000001B.0C.100.0D.121, 以下选项中非法的字符常量是( B )A.102B.019C.xff第3章 ,算法和控制语句部分1, 为表示关系xyz,应使用的表达式是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: printf(%d, i); case 2: printf(%d, i); default : printf(%d, 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.0次B.1次C.无限次D.2次5, 有以下程序段int n=0,p;do scanf(%d,&p); n+;while(p!=12345&n3);此处do-while循环的结束条件是_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=1;i+bc) printf(%dn,d); else if(c-1 = d) = 1) printf(%dn,d+1); else printf(%dn,d+2); 执行后输出结果是DA.2B.4C.编译时出错D.39, main()int x=1,a=0,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,k; float score,sum,ave; sum=0.0; for(n=1;n=10;n+) for(k=1;k=4;k+ ) scanf(%f,&score); sum+=score; ave=sum/4.0; printf(NO%d:%fn,n,ave); 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是BA.ave=sum/4.0B.sum=0.0;C.sum+=score;D.printf(NO%d:%fn,n,ave);11, 运行以下程序后,输出的结果是Amain() int k = -3; if(k 0) y = 1;else y = 0;A.B.C.D.13, 以下程序的输出结果是A main() int x, i; for(i = 1; i b?(bc?1:0):0;功能相同的是( A)A.if(ab)&(bc) k=1; else k=0; B.if(ab)|(bc) k=1; else k=0;C.if(ab) k=1;else if(bc) k=1;else k=0;D.if(a=b) k=0;else if(b=c) k=1;15, 为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与(B)配对。A.其之后最近的ifB.其之前最近的ifC.缩排位置相同的ifD.同一行上的if16, t为int类型,进人下面的循环之前,t的值为0while( t=1 ) 则以下叙述中正确的是_B_。A.以上说法都不对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(“%dn”, s);A.15B.10C.24D.918, 语句while(!E);中的表达式!E等价于(B)。A.E!=1B.E=0C.E=1D.E!=019, 以下程序段的输出结果是Bint x= 3;do pritnf(“%3d”, x-=2); while (!(-x);A.死循环B.1 -2 C.3 0D.120, 以下程序的运行结果是(B)。main() int i=1,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循环的循环次数是_A_main() int i=0; while(i10) if(ib)a=b; if(ac)a=c; 则a的值为(A)。A.1B.不一定C.3D.225,有以下程序,若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(B)#includeint 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.123 456 789D.m=123,n=456,p=78926,有以下程序main(A) int i=1,j=1,k=2; if(j+|k+)&i+)printf(%d,%d,%dn,i,j,k);执行后输出结果是 A.2,2,2B.2,2,3C.1,1,2D.2,2,127,以下程序段的输出结果为(A)。 for(i=4;i1;i-) for(j=1;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=1.0/x;else y=1.0;printf(%fn,y);该程序的输出结果是A.0.500000B.0.250000C.1.000000D.0.00000029,判断两个字符串是否相等,正确的表达方式是DA.while(s1=s2)B.while(s1= =s2)C.while(strcmp(s1,s2)=0)D.while(strcmp(s1,s2)= =0)30,若x是int类型变量,以下程序段的输出结果是D for(x = 3; x 6; x+) printf( (x%2)?(“*%d”):(“#%dn”),x);A.B.C.D.31,C语言中,switch后的括号内表达式的值可以是CA.只能为整型和字符型B.只能为整型C.任何类型D.只能为整型,字符型,枚举型32,设j和k都是int类型,则下面的for循环语句(C)。 for(j=0,k=0;jbc)a=b; else a=c; 则a的值为(C)。A.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 scanf(%d,&y);36,结构化程序设计所规定的三种基本控制结构是(D)。A.树形、网形、环形B.输入、处理、输出C.主程序、子程序、函数D.顺序、选择、循环37,以下程序的输出结果是Dmain() int y = 10 for(; y 0; y -) if(y % 3 = 0) pritnf(“%d”, -y); continue; A.741 B.963C.875421D.85238,以下程序的执行结果是Cmain() int x = 0, s = 0; while( !x != 0 ) s += +x; printf( %d ,s ); A.无限循环B.0C.1D.语法错误39,int a=1,b=2,c=3; if(ac)b=a;a=c;c=b;则c的值为(B)。A.3B.2C.不一定D.140,以下叙述正确的是(B)。A.do-while语句构成的循环不能用其它语句构成的循环来代替.B.用do-while语句构成的循环,在while后的表达式为零时结束循环C.用do-while语句构成的循环,在while后的表达式为非零时结束循环.D.do-while语句构成的循环只能用break语句退出.41,假定所有变量均已正确定义,下列程序段运行后x的值是(D)。k1=1;k2=2;k3=3;x=15;if(!k1) x-;else if(k2) x=4; else x=3;A.15B.14C.3D.442,有以下程序, 程序运行后的输出结果是 (B )#include int main()int i,j,m=1;for(i=1;i0;j-) if(i*j3) break; m*=i*j;printf(“m=%dn”,m);return 0;A.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)。 main() int x=1,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=1B.a=2,b=2C.a=1,b=0D.a=1,b=145,有以下程序, 当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是(C)#include int main()char a,b,c,d;scanf(%c%c,&a,&b);c=getchar(); d=getchar();printf(%c%c%c%cn,a,b,c,d);return 0;A.1234B.1234C.123D.1246,以下程序的运行结果是(D)。main() int n; for(n=1;n+y;x=i+) i=x;D.for(i=10;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=-1D.y=151,有以下程序,程序运行后的输出结果是(D)#include 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(“%dn”, m);A.15B.12C.20D.2554,执行下列语句后的输出为(C)。 int j=-1; if(j=1) printf(*n); else printf(%n);A.%cB.有错,执行不正确C.*D.%55,以下程序的执行结果是_A_. main() int num = 0; while( 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.-157,若有定义语句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; 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|b+c&b-cB.a=bC.!(a j共执行了多少次C#include main() int i = 0, j = 10, k = 2, s = 0; for( ; ; ) i += k; if(i j) printf(“%dn”, s); break; s += i; A.4B.8C.6D.761,while(fabs(t)1e-5)if(!s/10)break;循环结束的条件是(C)。A.fabs(t)1e-5&!s/10B.fabs(t)=1e-5&t-10&s10D.s/10=062,以下叙述正确的是:CA.用do-while构成循环时,只有在while后的表达式为非零时结束循环B.do-while语句构成的循环不能用其它语句构成的循环来代替。C.用do-while构成循环时,只有在while后的表达式为零时结束循环D.do-while语句构成的循环只能用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. (A=c) C. (c=A)&(c=A)&(c=Z)68,下列程序的输出结果是(A)。main() int x=1,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=1B.a=1,b=0C.a=2,b=2D.a=1,b=169,下面有关 for 循环的正确描述是(D)。A.for 循环是先执行循环循环体语句,后判断表达式B.在 for 循环中,不能用 break 语句跳出循环体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.非072,有以下程序,程序执行后的输出结果是(A )#include int main()int y=10;while(y-);printf(“y=%dn”,y);return 0;A.y=-1B.y=1C.while构成无限循环D.y=073,有以下程序, 程序运行后的输出结果是( B )#include int main()int a=1,b=0;if(!a) b+;else if(a=0) if(a) b+=2;else b+=3;printf(%dn,b);return 0;A.3B.0C.1D.274,有输入语句:scanf(a=%d,b=%d,c=%d,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( B )。A.a=1 b=3 c=2B.a=1,b=3,c=2C.132D.1,3,275,程序段:int x=12;double y=3.141593;printf(“%d%8.6f”,x,y);的输出结果是(C)A.12,3.141593 B.12 3.141593C.123.141593D.123.141593076,若变量已正确定义,有以下程序段i=0;do printf(“%d,”,i); while(i+);printf(“%dn”,i); 其输出结果是 ( D )A.0,0B.程序进入无限循环C.1,1D.0,177,下列条件语句中输出结果与其他语句不同的是(C)A.if(a) printf(%dn,x); else printf(%dn,y);B.if(a=0) printf(%dn,y); else printf(%dn,x);C.if(a=0) printf(%dn,x); else printf(%dn,y);D.if(a!=0) printf(%dn,x); else printf(%dn,y);78,有以下程序,程序运行后的输出结果是 (C )#includeint main() int x=1,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 num=1001后,name的值(C)A.Lili num=B.name=LiliC.LiliD.name=Lili num=100180,执行下列程序片段时输出的结果是( C )。int x=13,y=5;printf(%d,x%=(y/=2);A.2B.3C.1D.081,已知有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( A )。int a1,a2; char c1,c2;scanf(%d%c%d%c,&a1,&c1,&a2,&c2);A.10A20BB.10A20 BC.10 A20BD.10 A 20 B82,若定义x为double型变量,则能正确输入x值的语句是( C )。A.scanf(%5.1f,&x);B.scanf(%f,x);C.scanf(%lf,&x);D.scanf(%f,&x);83,以下程序段中的变量已正确定义for(i=0;i4;i+,i+)for(k=1;k3;k+) printf(“*”);程序段的输出结果是 (C )A.*B.*C.*D.*84,有以下程序段,以下叙述中正确的是(B)int main() while( getchar()!=n); A.此while语句将无限循环B.当执行此while语句时,只有按回车键程序才能继续执行C.当执行此while语句时,按任意键程序就能继续执行D.getchar()不可以出现在while语句的条件表达式中85,有以下程序:程序运行后的输出结果是 ( A )#include int main() int a=7;while(a-);printf(%dn,a);return 0;A.-1B.1C.0D.786,if语句的基本形式是:if(表达式)语句,以下关于表达式值的叙述中正确的是( B)A.必须是正数B.可以是任意合法的数值C.必须是整数值D.必须是逻辑值87,设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是(B )A.n=+x; printf(%dn,n);B.n=x+; printf(%dn,n);C.+x; printf(%dn,x);D.x+; printf(%dn,x);88,若有定义:int a,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5付给变量b的输入数据是(C )A.3,5B.3 5C.3;5D.3589,有以下程序#include int main()int a1,a2; char c1,c2;scanf(%d%c%d%c,&a1,&c1,&a2,&c2);printf(%d,%c,%d,%c,a1,c1,a2,c2);return 0;若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是C(以下_代表空格,代表回车)A.12,a,34,bB.12_a34_bC.12a34bD.12_a_34_b90,有以下程序,程序运行后的输出结果是(D)#include int main()int a=1,b=2;for(;a8;a+) b+=a;a+=2;printf(“%d,%dn”,a,b);return 0;A.8,11B.7,11C.9,18D.10,1491,若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k+) printf(*n);下面关于语句执行情况的叙述中正确的是 (A)A.构成无限循环B.循环体一次也不执行C.循环体执行两次D.循环体执行一次第4章 ,函数1, 有以下程序,程序运行后的输出结果是( B )#includeint fun (int x,int y) if (x!=y) return (x+y)/2);else return (x);int main() int a=4,b=5,c=6;printf(%dn,fun(2*a,fun(b,c);return 0;A.12B.6C.3D.82, 有以下程序,程序运行的输出结果( A )#include int f(int x);int main() int n=1,m; m=f(f(f(n); printf(“%dn”,m); return 0 ;int f(int x) return x*2;A.8B.4C.1D.23, 有以下程序,程序执行后变量w中的值是( C )#includeint funl(double a)return a*=a;int fun2(double x,double y) double a=0,b=0; a=funl(x);b=funl(y);return (int)(a+b);int main()double w;w=fun2(1.1,2.0);A.5.21B.0.0C.5.0D.54, 有以下程序,程序运行后的输出结果是(B )#includeint f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论