1、C 语言复习题及参考答案一、单项选择1、以下叙述正确的是:B。A)C 语言的源程序不必通过编译就可以直接运行。B)C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。C) C 语言源程序经编译形成的二进制代码可以直接运行。D)C 语言中的函数不可以单独进行编译。2、以下 4 个用户定义标识符中,全部合法的一组是A。A)_main enclude sin B )if max turbo C )txt REAL 3COM D)int k_2 _0013、以下不能定义为用户标识符的是D。A)scanf B)Void C)_3com D )int4、C 语言中用于结构化程序设计的 3 种基本结
2、构是A。A)顺序结构、选择结构、循环结构B)if、switch 、breakC) for、while、do-whileD)if、for、continue5、为解决某一特定问题而设计的指令序列称为C。A)文档 B)语言 C )程序 D )系统6、用高级程序设计语言编写的程序称为C。A)目标程序 B)可执行程序 C)源程序 D )伪代码7、能将高级语言编写的源程序转换成目标程序的是B。A)编辑程序 B)编译程序 C)驱动程序 D)链接程序8、下列叙述中,正确一条是C。A)计算机语言中,只有机器语言属于低级语言。B)高级语言源程序可以被计算机直接执行。C) C 语言属于高级语言。D)机器语言是所用机
3、器无关的。9、以下符合 C 语言语法的实型常量是 C。A)1.2E0.5 B)3.14159E C).5E-3 D)E1510、下面叙述正确的是A。A)C 程序中注释部分可以出现在程序中任何合适的地方。B)花括号“”和“ ”只能作为函数体的定界符。C)构成 C 程序的基本单位是函数,所有函数名都可以由用户命名。D)分号是 C 语句之间的分隔符,不是语句的一部分。11、设有以下定义:int a=0; double b=1.25; char c=A;#define d 2则下面语句中,错误是D。A)a+; B )b+; C)c+; D)d+;12、设有如下程序段:int x=2002,y=2003
4、;printf(“%dn”,(x,y);则以下叙述正确的是D。A)输出语句中格式说明的个数少于输出项的个数,不能正确输出。B)运行时产生出错信息。C)输出值为 2002。D)输出值为 2003。13、要求以下程序功能是计算: 10.321smain()int n; float s;s=1.0;for(n=10;n1;n-) s=s+1/n;printf(“%6.4fn”,s);程序运行后输出结果错误,导致错误结果的程序行是C。A)s=1.0; B)for(n=10;n1;n-) C)s=s+1/n; D)printf(“%6.4fn”,s);14、在一个 C 程序中 B。A)main 函数必须
5、出现在所有函数之前。B)main 函数可以在任何地方出现。C) main 函数必须出现在所有函数之后。D)main 函数必须出现在固定位置。15、下列关于 C 语言用户标识符的叙述中正确的是B 。A)用户标识中可以出现下划线和中划线(减号) 。B)用户标识符中不可以出现中划线,但可以出现下划线。C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头。D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头。16、有以下程序:main() int i=10,j=1; printf(“%d,%dn”,i-,+j);执行后输出结果是B。A)9,2 B)10,2 C) 9,1 D )
6、10,117、 、一个 C 语言的源程序中, A。A)必须有一个主函数 B )可能有多个主函数C)必须有除主函数外其它函数 D )可以没有主函数18、C 语言程序总是从 C开始执行。A)第一条语句 B)第一个函数 C)主函数 D)子程序19、在 C 语言中,不正确的 short int 类型常数是A。A)32768 B)0 C)037 D)0xAF20、C 语言中运算对象必须是整形的运算符是A。A)%= B)/ C)= D)*=21、设有 int x=11;,则表达式(x+*1/3) 的值是A。A)3 B )4 C )11 D)1222、若已定义 x 和 y 为 double 类型,则表达式
7、x=1,y=x+3/2 的值是C 。A)1 B )2 C )2.0 D)1223、若变量已正确定义并赋值,下面符合 C 语言语法的表达式是B 。A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D )a=a+7=c+b24、假定有以下变量定义:int k=7,x=12;,则值为 3 的表达式是D。A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)25、设 x 和 y 均为 int 型变量,则下列语句:x+=y;y=x-y;x-=y;的功能是D。A)把 x 和 y 按从大到小排列 B)把 x 和 y 按从小到大排列C)无确定结果
8、D )交换 x 和 y 中的值26、设 x、y、z 和 k 都是 int 型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为C。A)4 B )16 C )32 D)5227、有以下程序:main()int x=102,y=012;printf(“%2d,%2dn”,x,y);执行后输出结果是C。A)10,01 B)02,12 C)102,10 D)02,1028、有定义语句:int x,y;,若要通过语句 scanf(“%d,%d”,使变量 x 得到数值 11,变量 y 得到数值 12,下面四组输入形式中,正确的是C。A)11 12 B)11, 12 C)11,12 D)11
9、, 1229、设有定义:int a,*pa=,以下 scanf 语句中能正确为变量 a 读入数据的是A。A)scanf(“%d”,pa); B)scanf(“%d”,a); C)scanf(“%d”, D)scanf(“%d”,*pa);30、若有变量 a,i 已正确定义,且 i 已正确赋值,合法的语句是B 。A)a=1 B)+i C)a=a+=5 D )a=int(i)31、有如下程序:main()int y=3,x=3,z=1;printf(“%d %dn”,(+x,y+),z+2);运行该程序的输出结果是D。A)3 4 B)4 2 C)4 3 D)3 332、以下程序的输出结果是D。ma
10、in() int k=17;printf(“%d, %o, %xn”,k,k,k);A)17, 21, 0x11 B)17, 17, 17C) 17, 0x11, 021 D)17, 21, 1133、以下叙述正确是D。A)输入项可以是一个实型常量,如:scanf(“%d”,3.5) 。B)只有格式控制,没有输入项,能正确输入数据到内存,如:scanf(“a=%d,b=%d);。C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(“%4.2f”,34、以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是A。A)if(abelse k=0; B)if(ab
11、)|(bc) k=1;else k=0;C) if(ab) k=1;else if(bc) k=1;else k=0;35、有以下程序:此题应注意短路逻辑main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ad) x=1;else if(ad) x=2;else x=3;else x=6;else x=7;A)1 B )2 C )3 D)438、当 c 的值不为 0 时,在下列选项中能正确将 c 的值赋给变量 a、b 的是C 。A)c=b=a; B)(a=c)|(b=c); C )(a=c) D)a=c=b;39、能正确表示逻辑关系:“a10 或 a0”的 C 语言
12、表达式是D 。A)a=10 or a=0|a=10的输出结果是D。A)无输出 B)结果不确定 C)1 D)142、设 int x=1,y=1;,表达式(!x|y-)的值是B 。A)0 B)1 C)2 D)-143、有以下程序:main() int i,s=0;for(i=1;i6)n-;printf(“%d”,n);该程序段的输出结果是B。A)987 B )876 C)8765 D)987648、以下程序的输出结果是D。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
13、9 0 D)10 10 9 149、以下程序的输出结果是A。main() int n=4; while(n-)printf(“%d”,-n);A)20 B)31 C)321 D)21050、当执行以下程序段时,A。x=-1;dox=x*x;while(!x);A)循环体将执行 1 次 B )循环体将执行 2 次C)循环体将执行无限次 D )系统提示有语法错误51、执行语句:for(i=1;i+main()printf(“%dn”,NULL);程序运行后的输出结果是A。A)0 B)1 C)1 D)NULL 没定义,出错57、已经定义以下函数:fun(int *p)return *p;该函数的返回
14、值是C。A)不确定值 B)形参 p 中存放的值C)形参 p 所指存储单元中的值 D)形参 p 的地址值58、有以下程序段:main()int a=5,*b,*c;c=b=程序在执行了 c=b=语句后,表达式*c 的值是 C。A)变量 a 的地址 B)变量 b 中的值C)变量 a 中的值 D)变量 b 的地址59、有如下程序段 int *p,a=10,b=1;p=a=*p+b;执行该程序段后,a 的值为B 。A)12 B)11 C)10 D)编译出错60、下列程序的输出结果是A。void func(int *a,int b)b0=*a+6;main()int a,b5;a=0;b0=3;func
15、(printf(“%dn”,b0);A)6 B)7 C)8 D)961、有以下程序:int a10=1,2,3,4,5,6,7,8,9,10,*p=b=p5;b 中的值是D。A)5 B)6 C)8 D)962、以下不能正确定义二维数组的选项是D。A)int a22=1,2 B)int a2=1,2,3,4C) int a22=1,2,3 D)int a2=1,2,3,463、有以下程序:main()int m3=1,4,7,2,5,8,3,6,9;int i,j,k=2;for(i=0;i。7、若想通过以下输入语句使得 a=5.0,b=4,c=3 ,则输入数据的形式应该是5.0,4,c=3或
16、5,4,c=3。.int b,c; float a;scanf(“%f, %d,c=%d”,.8、有 4 条语句:x+;、+x;、x=x+1;、x=1+x;,执行后都使变量 x 中的值增 1,写出一条同一功能的赋值语句(不得与列举的相同)x+=1;。9、以下程序的输出的结果是261。main() int a=177;printf(“%on”,a);10、以下程序的输出结果是2,1。main() int a=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%dn”,a,b);11、有以下程序:main()int n=0,m=1,x=2;if(!n) x-=1;if(m) x
17、-=2;if(x) x-=3;printf(“%dn”,x);执行后输出结果是-4。12、以下程序运行后的输出结果是3。main()int p=30;printf(“%dn”,(p/30?p/10:p%3);13、以下程序运行后的输出结果是yes。main()int a=1,b=3,c=5;if(c=a+b) printf(“yesn”);else printf(“non”);14、有以下程序:main()int p,a=5;if(p=a!=0)printf(“%d”,p);else printf(“%dn”,p+2);执行后输出结果是1。15、下面程序的功能是:输出 100 以内能被 3 整
18、除且个位数为 6 的所有整数,请将程序补充完整,使之能完成需要的功能。i=10)?3*x-11: (x=1if(1 ) if(2) y=2*x-1; else y=x;else y=3*x-11;17、若 x 为 int 类型,请以最简单的形式写出与逻辑表达式!x 等价的 C 语言关系表达式。 x=018、表示“整数 x 的绝对值大于 5”时值为“真”的 C 语言表达式是。 x5|x=0;i-) t*=i; printf(“%dn”,t);执行后输出的结果是。0 注意此题的技巧20、执行以下程序后,输出#号的个数是。6#includemain() int i,j;for(i=1;idouble
19、 pi(long n)double s=0.0;long i;for(i=1;i,则以下 while 循环执行0次。while(ch=getchar()=e)printf(“*”);24、下面程序的功能是:计算 110 之间奇数之和及偶数之和,请填空。main() int a,b,c,i; a=c=0;for(i=0;imain() char ch1,ch2; int n1,n2; ch1=getchar();ch2=getchar(); n1=ch1-0;n2=n1*10+(ch2-0);printf(“%dn”,n2);程序运行时输入:12,执行后输出结果是。 1227、以下程序运行后的输
20、出结果是。 bmain() char m; m=B+32;printf(“%cn”,m);28、有以下程序:main() char a; a=H-A+0; printf(“%cn”,a); 729、已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码值是 97,则用八进制表示的字符常量101是。A30、函数 fun 的功能是计算 xn。double fun(double x,int n)int i;double y=1;for(i=1;ichar *ss(char *s)return s+strlen(s)/2;main()char *p,*str=”abcdefg
21、h”;p=ss(str);printf(“%sn”,p);2、有以下程序:main() int a44=1,2,-3,4,0,-12,-13,14,-21,23,0,-24,-31,32,-33,0;int i,j,s=0;for(i=0;i=i)m=1;n+;printf(“%dn”,n);7、有以下程序:char fun(char x,char y) if(xy) return x; return y;main() int a=9,b=8,c=7;printf(“%cn”,fun(fun(a,b),fun(b,c) 程序运行结果是7。8、有以下程序 void f(int v , int w) int t; t=v;v=w;w=t; main( )