《C语言习题有答案(12页).doc》由会员分享,可在线阅读,更多相关《C语言习题有答案(12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C语言习题有答案-第 12 页2、在下列选项中,不正确的赋值语句是_D_.A) +t; B) n1=(n2=(n3=0); C) k=i=j; D) a=b+c=1;4、表达式: 10!=9的值是_D_.A) true B) 非零值 C) 0 D) 15、C语言提供的合法的数据类型关键字是_B_.A) Double B) short C) integer D) Char6、字符(char)型数据在微机内存中的存储形式是_D_ .A) 反码 B) 补码 C) EBCDIC码 D) ASCII码7、C语言程序的基本单位是_C_.A) 程序行 B) 语句 C) 函数 D) 字符8、设 int a=
2、12,则执行完语句a+=a后,a的值是_D_A) 552 B) 264 C) 44 D) 2410、下面程序的输出是_B_.#includevoid main()int x=23; printf(%dn,-x);A) 17 B) 22 C) 23 D) 2411、下面程序的输出的是_C_.#includevoid main()int x=10,y=3; printf(%dn,y=x/y);A) 0 B) 1 C) 3 D) 不确定的值12、已知字母A的ASCII码为十进制的65,下面程序的输出是_A_.#includevoid main()char ch1,ch2; ch1=A+5-3; ch
3、2=A+6-3; printf(%d,%cn,ch1,ch2);A) 67,D B) B,C C) C,D D) 不确定的值13、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_D_.A) a0 B) !a C) a=0 D) a14、以下程序的输出结果是_D_.#includevoid main() int x=10,y=10; printf(%d %dn,x-,-y);A) 10 10 B) 9 9 C) 9 10 D) 10 915、设有如下定义: int x=10,y=3,z;则语句 printf(%dn,z=x%y);的输出结果是_A_.A) 1 B)
4、 0 C) 4 D) 316、为表示关系xyz,应使用C语言表达式_A_.A) (x=y)&(y=z) B) (x=y)AND(y=z)C) (x=y=z) D) (x=y) & (y=z)19、阅读下面的程序#includevoid main()char ch;scanf(%c,&ch);printf(%c,ch);如果从键盘上输入 abc则程序的运行结果是_A_.A) a B) b C) c D) 程序语法出错20、阅读下面的程序#includevoid main() int i,j; i=10; j=9; printf(%d,%d,i-j,i+j);则程序的运行结果是_A_.A) 1,1
5、9 B) -1,19 C) 1,17 D) -1,1721、阅读下面的程序#includevoid main() int i,j,m,n; i=8;j=10; m=+i; n=j+; printf(%d,%d,%d,%d,i,j,m,n);程序的运行结果是_C_.A) 8,10,8,10 B) 9,11,8,10 C) 9,11,9,10 D) 9,10,9,1125、下面程序的输出结果是_D_.#includevoid main() int a=-1, b=4, k; k=(+a=0)&(b-=0); printf(%d,%d,%dn,k,a,b);A) 1,1,2 B) 1,0,3 C)
6、0,1,2 D) 0,0,330、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是_C_ _.A) 5.5 B) 5 C) 3 D) 4.035、若有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值_A_.A) 0 B) 1 C) 12 D) 636、若有定义int x=3,y=2和float a=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是_D_.A) 0 B) 2 C) 1.5 D) 137、在C语言中,以下叙述不正确的是_A_.A) 在C程序中,无论是整数还是实数,都能被准确无误的表示B) 在C程序中,变量名代表
7、存储器中的一个位置C) 静态变量的生存期与整个程序的生存期相同D) C语言中变量必须先定义后引用38、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符_A_.A) 必须为字母 B) 必须为下划线C) 必须为字母或下划线 D) 可以是字母,数字或下划线中的任意一种39、设有说明:char w; int x; float y; double z; 则表达式: w*x+z-y值的数据类型是_D_.A) float B) char C) int D) double40、一个C语言的执行是从_A_.A) 本程序的主函数开始,到本程序的主函数结束B) 本程序的第一个函数开始,到本程序的最
8、后一个函数结束C) 本程序的主函数开始,到本程序的最后一个函数结束D) 本程序的第一个函数开始,到本程序的主函数结束42、下列程序执行后的输出结果是_C_. #include void main( ) int a=5,b=60,c; if (ab) c=a*b;printf(%d*%d=%dn,b,a,c); else c=b/a;printf(%d/%d=%dn,b,a,c);A) 60/5=12 B) 300 C) 60*5=300 D) 1244、运行下面程序时,若从键盘输入3,5,则程序的输出结果是_D_. #include void main( ) int x,y; scanf(%d
9、,%d,&x,&y); if (x=y) printf(x=y); else if (xy) printf(xy); else printf(xy);A) 33 C) xy D) xy45、运行下面程序时,若从键盘输入数据为6,5,7,则输出结果是_C_. #include void main( ) int a,b,c; scanf(%d,%d,%d,&a,&b,&c); if (ab) if (ac) printf(%dn,a); else printf(%dn,c); else if (bc) printf(%dn,b); else printf(%dn,c);A) 5 B) 6 C) 7
10、 D) 不定值48、执行下面程序后,运行结果是_A_. #include void main( ) int x=41,y=1; if (x%3=0 & x%7=0) y+=x;printf(y=%dn,y); else y=x;printf(y=%d,y);A) y=41 B) y=43 C) y=42 D) y=150、运行下面程序时,从键盘输入字母H,则输出结果是_C_. #include void main( ) char ch; ch=getchar( ); switch(ch) case H:printf(Hello!n); case G:printf(Good morning!n)
11、; default:printf(Bye_Bye!n);A) Hello! B) Hello! Good Morning!C) Hello! D) Hello! Goodmorning! Bye_Bye! Bye_Bye!51、执行下列程序段后的输出结果是_A_. int x=1,y=1,z=1; x+=y+=z; printf(%dn,xy?y:x);A) 3 B) 2 C) 1 D) 457、假定等级和分数有以下对应关系: 等级:A 分数:85100等级:B 分数:6084等级:C 分数:60 以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是_D_.A) switch (
12、grade) case A:printf(85-100n); case B:printf(60-84n); case C:printf(60以下n); default:printf(等级错误!n);B) switch (grade) case A:printf(85-100n);break; case B:printf(60-84n); case C:printf(60以下n); default:printf( 等级错误!n);C) switch (grade) case A:printf(85-100n);break; case B:printf(60-84n);break; case C:
13、printf(60以下n); default:printf(等级错误!n);D) switch (grade) case A:printf(85-100n);break; case B:printf(60-84n);break; case C:printf(60以下 n);break; default:printf(等级错误!n);59、有如下程序 #include void main( ) float x=5.0,y; if(x0.0) y=0.0; else if (x10.0) y=1.0/x; else y=1.0; printf(%fn,y);该程序的输出结果是_C_.A) 0.00
14、0000 B) 0.50000 C) 0.200000 D) 1.00000079、为了避免嵌套的if-else语句的二义性,C语言规定else总是与_C_组成配对关系.A) 缩排位置相同的if B) 在其之前未配对的ifC) 在其之前尚未配对的最近的if D) 同一行上的if81、以下程序段_C_. x=-1; do x=x*x; while (!x);A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误83、下面程序段的输出结果是_A_. #includevoid main() int x=3; int y; do y=x-; if (!y) printf(*);continu
15、e; printf(#); while(x=2);A) # B) #* C) 死循环 D)输出错误信息89、下面程序段的运行结果是_B_. for(x=10;x3;x-) if(x%3) x-; -x; -x; printf(%d ,x);A) 6 3 B) 7 4 C) 6 2 D) 7 391、下面程序段的运行结果是_D_. for(i=1;i=5;) printf(%d,i); i+;A) 12345 B) 1234 C) 15 D) 无限循环97、下面程序的输出结果是_A_. #include void main( ) int i; for(i=1;i6;i+) if (i%2!=0)
16、 printf(#);continue; printf(*); printf(n);A) #*#*# B) # C) * D) *#*#*98、下面程序的输出结果是_D_. #include void main( ) int x=10,y=10,i; for(i=0;x8;y=+i) printf(%d %d ,x-,y);A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1100、有如下程序 #include void main( ) int n=9; while(n6) n-;printf(%d,n);该程序段的输出结果是_B_.A) 987 B)
17、 876 C) 8765 D) 9876102、以下循环体的执行次数是_D_ #include void main( ) int i,j; for(i=0,j=1; i=j+1; i+=2, j-) printf(%d n,i);A) 3 B) 2 C) 1 D) 0103、在执行以下程序时,如果从键盘上输入:ABCdef,则输出为_B_. #include void main( ) char ch; while (ch=getchar( )!=n) if (ch=A & ch=a & chz) ch=ch-32; printf(%c,ch); printf(n);A) ABCdef B) a
18、bcDEF C) abc D) DEF104、下面程序的输出结果是_D_. main( ) int i,k=0, a=0, b=0; for(i=1;i=4;i+) k+; if (k%2=0) a=a+k; continue; b=b+k; a=a+k; printf(k=%d a=%d b=%dn,k,a,b);A) k=5 a=10 b=4 B) k=3 a=6 b=4C) k=4 a=10 b=3 D) k=4 a=10 b=4105、执行下面程序段后,k的值是_D_. int i,j,k; for(i=0,j=10;ij;i+,j-) k=i+j;A) 9 B) 11 C) 8 D)
19、 10106、下面程序是计算n个数的平均值,请填空.B_ _#include void main( ) int i,n; float x,avg=0.0; scanf(%d,&n); for(i=0;in;i+) scanf(%f,&x); avg=avg+_; avg=_; printf(avg=%fn,avg);A) i B) x C) x D) i avg/i avg/n avg/x avg/n107、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。_#include void main( ) float x,amax,ami
20、n; scanf(%f,&x); amax=x; amin=x; while (_D_ ) if (xamax) amax=x; if (_) amin=x; scanf(%f,&x); printf(namax=%fnamin=%fn,amax,amin); A) x0 C) x0 D) x=0 xamin xamin xamin114、以下叙述正确的是_B_.A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句体内使用break语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句119
21、、C语言中while 和do-while 循环的主要区别是._ _AA) do-while的循环体至少无条件执行一次B) while 的循环控制条件比do-while 的循环控制条件严格C) do-while 允许从外部转到循环体内D) do-while 的循环体不能是复合语句121、合法的数组定义是_D_.A) int a6=string; B) int a5=0,1,2,3,4,5;C) char a=string; D) char a=0,1,2,3,4,5;122、要求下面的程序运行后,显示如下结果:2 10 4 61 5 2 32 4 7 85 1 3 2则程序中的划线处应填入_B_
22、.#include void main( ) int a44= _ ; int i,j; for(i=0;i4;i+) for(j=0;j4;j+) printf(%4d,aij); printf(n); A) 1,5,2,3,2,4,7,8,5,1,3,2B) 2,10,4,6,1,5,2,3,2,4,7,8,5,1,3,2C) 5,1,3,2,2,4,7,8,1,5,2,3D) 2,1,2,5,10,5,4,1,4,2,7,3,6,3,8,2124、定义如下变量和数组:int i;int x44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;则下面语句的输出
23、结果是_C_.for(i=0;i4;i+) printf(%3d,xi3-i);A) 1 5 9 13 B) 1 6 11 16 C) 4 7 10 13 D) 4 8 12 16125、下面程序输出的结果是_D_.#include void main( ) int i,j,x=0; static int a6=1,2,3,4,5,6; for(i=0,j=1;i5;+i,j+) x+=ai*aj; printf(%dn,x); A) 数组a中首尾的对应元素的乘积B) 数组a中首尾的对应元素的乘积之和C) 数组a中相邻各元素的乘积D) 数组a中相邻各元素的乘积之和127、若有以下说明:char
24、 s1 =tree,s2=flower; ,则以下对数组元素或数组的输出语句中,正确的是_C_.A) printf(%s%s,s15,s27); B) printf(%c%c,s1,s2);C) puts(s1);puts(s2); D) puts(s1,s2);129、运行下面程序段的输出结果是_A_. char s110=S,e,t,0,u,p,0; printf(%s,s1);A) Set B) Setup C) Set up D) Set130、以下程序段的输出结果是_B_. char s =an apple; printf(%dn,strlen(s);A) 7 B) 8 C) 9 D
25、) 10135、下列一组初始化语句中,正确的是_B_.A) int a8= ; B) int a9=0,7,0,4,8;C) int a5=9,5,7,4,0,2; D) int a7=7*6;144、以下关于数组的描述正确的是_C_.A) 数组的大小是固定的,但可以有不同类型的数组元素。B) 数组的大小是可变的,但所有数组元素的类型必须相同。C) 数组的大小是固定的,所有数组元素的类型必须相同。D) 数组的大小是可变的,可以有不同类型的数组元素。169、若函数调用时用数组名作为函数参数,以下叙述中,不正确的是_C_.A) 实参与其对应的形参共占用同一段存储空间B) 实参将其地址传递给形参,结
26、果等同于实现了参数之间的双向值传递C) 实参与其对应的形参分别占用不同的存储空间D) 在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组171、如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量_C_.A) 为全局变量,在本程序文件范围内有效B) 为局部变量,只在该函数内有效C) 为局部变量,只在该复合语句中有效D) 定义无效,为非法变量172、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是_D_.A) 实参将其地址传递给形参,并释放原先占用的存储单元B) 实参将其地址传递给形参,调用结束时形参再将其地址回传给实参C)
27、 实参将其值传递给形参,调用结束时形参再将其值回传给实参D) 实参将其值传递给形参,调用结束时形参并不将其值回传给实参173、以下叙述中,不正确的是_B_.A) 在同一C程序文件中,不同函数中可以使用同名变量B) 在main函数体内定义的变量是全局变量C) 形参是局部变量,函数调用完成即失去意义D) 若同一文件中全局变量和局部变量同名,则全局变量在局部变量作用范围内不起作用180、对于C语言的函数,下列叙述中正确的是_B_.A) 函数的定义不能嵌套,但函数调用可以嵌套B) 函数的定义可以嵌套,但函数调用不能嵌套C) 函数的定义和调用都不能嵌套D) 函数的定义和调用都可以嵌套187、C语言规定,
28、除主函数外,程序中各函数之间_A_.A) 既允许直接递归调用也允许间接递归调用B) 不允许直接递归调用也不允许间接递归调用C) 允许直接递归调用不允许间接递归调用D) 不允许直接递归调用允许间接递归调用程序改错题(共15题)3、在考生文件夹下,给定程序MODI.C的功能是:求一维数组a中的最大元素及其下标。例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9,程序的输出应为:The max is: 34,pos is: 7 。 #include #include void main() int a10=1,4,2,7,3,12,5,34,5,9,i,max,pos; max
29、 = a0; pos = 0; for ( i=1; i10; i+) /*found*/if(max ai)max = ai; /*found*/pos=i;i = pos; printf(The max is: %d ,pos is: %dn, max , pos);5、在考生文件夹下,给定程序MODI.C的功能是:求一维数组a中所有元素的平均值。例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9程序的输出应为:The aver is: 9.10 。#include #include void main() int a10=10,4,2,7,3,12,5,34,5,
30、9,i; double aver,s; s = a0;for ( i=1; i10; i+) /*found*/ for ( i=0; i10; i+) /*found*/s = s + ai; s = s + i; aver = s / i; printf(The aver is: %.2fn, aver);6、在考生文件夹下,给定程序MODI.C的功能是:输入一个百分制成绩,打印出五级记分成绩。考试成绩在90分或90分以上为优秀,8089分为良好,7079为中等,6069为及格,低于60分为不及格。#include #include #include #include void main(
31、) int score,t; printf(Please enter a score:); do scanf(%d,&score); while(score100); t=score/10;switch(t) /*found*/ switch(score) case 10: case 9:printf(优秀!n);break; case 8:printf(良好!n);break; case 7:printf(中等!n);break; case 6:printf(及格!n);break; /*found*/ else :printf(不及格!n);default: printf(不及格!n);
32、7、在考生文件夹下,给定程序MODI.C的功能是:输出100200之间既不能被3整除也不能被7整除的整数并统计这些整数的个数,要求每行输出8个数。#include #include #include #include void main() int i; /*found*/int n=0; int n; for(i=100;i=200;i+) /*found*/ if(i%3=0&i%7=0) if(n%8=0) printf(n);if(i%3!=0 & i%7!=0) printf(%6d,i); n+; printf(nNumbers are: %dn,n);9、在考生文件夹下,给定程序
33、MODI.C的功能是:输出200300之间的所有素数,要求每行输出8个素数。#include #include main() int m,j,n=0,k; for(m=200;m=300;m+) k=sqrt(m); for(j=2;jk) if(n%8=0) printf(n); /*found*/printf(%d,m); printf(%d,j); n+;10、在考生文件夹下,给定程序MODI.C的功能是:求出a所指数组中最小数(规定最小数不在a0中),最小数和a0中的数对调。例如数组中原有的数为:7、10、12、0、3、6、9、11、5、8,输出的结果为:0、10、12、7、3、6、9
34、、11、5、8。 #include #include #define N 20 main( ) int aN=7,10,12,0,3,6,9,11,5,8, n=10, i, k,m,min,t; for ( i = 0; in; i+) printf(%d ,ai); printf(n); min= a0; m=0; for ( k = 0; k n; k+ ) /*found*/ if(akmin ) min = ak; m = k; /*found*/ t = a0; am=a0; am = t; for ( i=0; in; i+ ) printf(%d ,ai); printf(n);12、在考生文件夹下,给定程序MODI.C