、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查 对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要 选出正确的答案,而且要淸楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问 题,应该通过上机实验来检验 【1.1】以下不正确的C语言标识符是。 A) int B)a1 2C)ablexe D)x 【1.2】以下是正确的C语言标识符是 A)#define B) 123 C)%d D)\n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 A)print b)i\am C) Pxq D)str 1 3d one half My->book Cpp oodb startSit line# pow aBc pai his age whil 【1.4】下面各选项组中,均是C语言关键字的组是。 A)auto, enum, include B)switch, typedef, continue C)signed, union, scanf D) if, struct, type 【1.5】下列不属于C语言关键字的是。A) default B) register c) enum d) external 【1.6】C语言程序从 maino函数开始执行,所以这个函数要写在 )程序文件的开始B)程序文件的最后 C)它所调用的函数的前面D)程序文件的任何位置 【1.7】下列关于C语言的叙述错误的 A)大写字母和小写字母的意义相同 B)不同类型的变量可以在一个表达式中 C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是 )32768B)0C)037D)0xAF
一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查 对 C 语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要 选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问 题,应该通过上机实验来检验。 【1.1】以下不正确的 C 语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的 C 语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是 。 ••• A) print B) i\am C) Pxq D) str_l ••• _3d one_half My->book Cpp ••• oodb start$it line# pow ••• aBc 3pai His.age while 【1.4】下面各选项组中,均是 C 语言关键字的组是 。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于 C 语言关键字的是 。 A) default B) register C) enum D) external 【1.6】C 语言程序从 main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 【1.7】下列关于 C 语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在 C 语言中,错误的 int 类型的常数是 。 A) 32768 B) 0 C) 037 D) 0xAF
【1.9】执行语句 printf("%x",-1):屏幕显示_。 A)-1 B)1 C)-ffff D) ffff 【1.10】已知 long i=32768:执行语句 printf("%d",i):屏幕显示_。 A)-1B)-32768C)1D)32768 【1.11】已知1ongi=65539:执行语句 printf("%d”,i):屏幕显示_。 A)65539B)-3C)3D)程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A)111111111111000B)1000000000001000 C)0000000000001000D)1111111111110111 【1.13】C语言中字符型(char)数据在内存中的存储形式 A)原码B)补码C)反码D) ASCII码 【1.14】将字符g赋给字符变量c,正确的表达式是。 )c=\147B)c="\147"C)c=\147’D) 【1.15】下列转义字符中错误的一个是 A)’\000B)’0014’C)\x11tD)’\2 【1.16】将空格符赋给字符变量c,正确的赋值语句是_。 A)C=\0 B)C=NULL C)C=0 D)c=32 【1.17】已知: char a=\70’:则变量a中。 A)包含1个字符B)包含2个字符C)包含3个字符D)说明非法 【1.18】字符串”\"EOF\n=-611”"的长度是 A)8B)9C)14D)非法字符串
【1.9】执行语句 printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) -ffff D) ffff 【1.10】已知 long i=32768;执行语句 printf("%d",i);屏幕显示____。 A) -1 B) -32768 C) 1 D) 32768 【1.11】已知 long i=65539;执行语句 printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3 D) 程序不能执行 【1.12】在C语言中,整数-8 在内存中的存储形式是 。 A) 1111 1111 1111 1000 B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。 A) 原码 B) 补码 C) 反码 D) ASCII 码 【1.14】将字符 g 赋给字符变量 c,正确的表达式是 。 A) c=\147 B) c="\147" C) c='\147' D) c='0147' 【1.15】下列转义字符中错误的一个是____。 A) '\000' B) '\0014' C) '\x111' D) '\2' 【1.16】将空格符赋给字符变量 c,正确的赋值语句是____。 A) c='\0' B) c=NULL C) c=0 D) c=32 【1.17】已知:char a='\70';则变量 a 中 。 A) 包含 1 个字符 B) 包含 2 个字符 C) 包含 3 个字符 D) 说明非法 【1.18】字符串"\"EOF\n=-\61\""的长度是____。 A) 8 B) 9 C) 14 D) 非法字符串
【1.19】字符串””的长度是。 A)0B)1C)2D)非法字符串 【1.20】己 tb: float c; double d:执行语句"c=a+b+c+d:"后,变量c的数据 类型是。 【1.21】温度华氏和摄氏的关系是:C=-(F-32)。已知: float o,F;由华氏求摄氏的正确的 9 赋值表达式是 A)C=5/9(F-32)B)C=5*(F-32)/9 C)C=5/9*(F-32)D)三个表达式都正确 【1.22】逗号表达式”(a=3*5,a*4),a+15"的值是 A)15B)60C)30D)不确定 【1.23】如果inta=1,b=2,c=3,d=4:则条件表达式"a5&&++x=57&&c=90k&c c>=122 B)!(c=57&&c=90&kc=122) !(c>=48&c=65&kc=97&c<=122)
【1.19】字符串""的长度是____。 A) 0 B) 1 C) 2 D) 非法字符串 【1.20】已知:char a;int b;float c;double d;执行语句"c=a+b+c+d;"后,变量 c 的数据 类型是 。 A) int B) char C) float D) double 【1.21】温度华氏和摄氏的关系是: C=-(F-32)。已知:float C,F;由华氏求摄氏的正确的 9 赋值表达式是____。 A) C=5/9(F-32) B) C=5*(F-32)/9 C) C=5/9*(F-32) D) 三个表达式都正确 【1.22】逗号表达式"(a=3*5,a*4),a+15"的值是____。 A) 15 B) 60 C) 30 D) 不确定 【1.23】如果 int a=1,b=2,c=3,d=4;则条件表达式"a5&&++x=57&&c=90&&c=122 B) !(c=57&&c=90&&c=122) C) c>=48&&c=65&&c=97&&c=48&&c=65&&c=97&&c<=122)
【1.28】已知inta[3][2]={3,2,1}:则表达式"a[0][o]/a[0[1]/a[o][2]"的值是_。 A)0.16667B)1C)0D)错误的表达式 【1.29】已知intx=1,y=1,z=1:表达式"x++y+++z+"的值是 A)3B)4C)5D)表达式错误 【1.30】用十进制表示表达式12|012″的值是 A)1B)0C)12D)14 【1.31】已知以下程序段 int a=3, b=4 a=a b a=a b: 则执行以上语句后a和b的值分别是 A)a=3,b=4B)a=4,b=3C)a=4,b=4D)a=3,b=3 【1.32】在位运算中,操作数每右移一位,其结果相当于_。 )操作数乘以2B)操作数除以2C)操作数除以16D)操作数乘以16 【1.33】已知 char a=222;执行语句a=a&052:后,变量a的值是 A)222B)10C)244D)254 【1.34】已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4 位取反,低4位不变,则二进制数b的值应是。 A)11110000B)00001111C)11111100000000 【1.35】已知inta=15,执行语句a=a<<2以后,变量a的值是_。 A)20B)40C)60D)80 【1.36】已知intx=5,y=5,z=5:执行语句x%=y+z:后,x的值是 A)0B)1C)5D)
【1.28】已知 int a[3][2]={3,2,1};则表达式"a[0][0]/a[0][1]/a[0][2]"的值是____。 A) 0.166667 B) 1 C) 0 D) 错误的表达式 【1.29】已知 int x=1,y=1,z=1;表达式"x+++y+++z++"的值是____。 A) 3 B) 4 C) 5 D) 表达式错误 【1.30】用十进制表示表达式"12|012"的值是____。 A) 1 B) 0 C) 12 D) 14 【1.31】已知以下程序段: int a=3,b=4; a=a^b; b=b^a; a=a^b; 则执行以上语句后 a 和 b 的值分别是____。 A) a=3,b=4 B) a=4,b=3 C) a=4,b=4 D) a=3,b=3 【1.32】在位运算中,操作数每右移一位,其结果相当于____。 A) 操作数乘以 2 B) 操作数除以 2 C) 操作数除以 16 D) 操作数乘以 16 【1.33】已知 char a=222;执行语句 a=a&052;后,变量 a 的值是____。 A) 222 B) 10 C) 244 D) 254 【1.34】已知二进制数 a 是 00101101,如果想通过整型变量 b 与 a 做异或运算,使变量 a 的高 4 位取反,低 4 位不变,则二进制数 b 的值应是____。 A) 11110000 B) 00001111 C) 11111111 D) 00000000 【1.35】已知 int a=15,执行语句 a=a<<2 以后,变量 a 的值是____。 A) 20 B) 40 C) 60 D) 80 【1.36】已知 int x=5,y=5,z=5;执行语句 x%=y+z;后,x 的值是____。 A) 0 B) 1 C) 5 D) 6
【1.37】使用语句 scanf("x=%f,y=%f",&x,&y):输入变量x、y的值(口代表空格),正确的输入 A)1.25,2.4B)1.25口2.4C)x=1.25,y=2.4D)x=1.25口y=2.4 【1.38】下列循环语句中有语法错误的是_ A)while(x=y)5: B)while(0); c)do 2: while(x==b): d)do x++ while(x==10) 【1.39】已知intx=(1,2,3,4):变量x的值是_。 A)1B)2C)3D)4 【1.40】表达式 sizeof( double)是 A)函数调用B) double型表达式C)int型表达式D)非法表达式 二、阅读程序题 导读:学会阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读 别人写好的程序来打开自己的思路,就所谓见多识广。读者通过阅读理解程序,从给出的四个备选 参考答案中,选择程序的正确输出。如果选择有误,就要认真分析原因,是概念方面的错误还是对 程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。程序设计语言是开发程序的 一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备 选答案,增强动手能力。习题基本上是按照教材的章节来安排的,读者可以根据学习的进度选择部 分习题 【2.1】以下程序的输出结果是。main() I float a a=1/100000000 printf( %g", a) A)0.00000e+00B)0.0C)1.000009-07D)0 【2.2】下面程序的输出结果是 #include maIn i int x=10: int x=20:
【1.37】使用语句 scanf("x=%f,y=%f",&x,&y);输入变量 x、y 的值(□代表空格),正确的输入 是____。 A) 1.25,2.4 B) 1.25□2.4 C) x=1.25,y=2.4 D) x=1.25□y=2.4 【1.38】下列循环语句中有语法错误的是____。 A) while(x=y) 5; B) while(0) ; C) do 2;while(x==b); D) do x++ while(x==10); 【1.39】已知 int x=(1,2,3,4);变量 x 的值是____。 A) 1 B) 2 C) 3 D) 4 【1.40】表达式 sizeof(double)是 。 A) 函数调用 B) double 型表达式 C) int 型表达式 D) 非法表达式 二、 阅读程序题 导读:学会阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读 别人写好的程序来打开自己的思路,就所谓见多识广。读者通过阅读理解程序,从给出的四个备选 参考答案中,选择程序的正确输出。如果选择有误,就要认真分析原因,是概念方面的错误还是对 程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。程序设计语言是开发程序的 一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备 选答案,增强动手能力。习题基本上是按照教材的章节来安排的,读者可以根据学习的进度选择部 分习题。 【2.1】以下程序的输出结果是 。 main( ) { float a; a=1/100000000; printf("%g",a); } A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0 【2.2】下面程序的输出结果是____。 #include main( ) { int x=10; { int x=20;
printf printf("%dn”,x) A)10,20B)20,10C)10,10D)20,20 【2.3】以下程序的输出结果是 main o I unsigned int n int i=-521 printf("n=‰\n",n) A)n=-521B)n=521C)n=65015D)n=102170103 【2.4】以下程序的输出结果是。main() I int x=10, y=10: printf("%d %d\n",x A)1010B)99C)910D)109 【2.5】以下程序的输出结果是 in o i int n=1 printf(%d %d %d\n", n, n++, n--) A)111B)101C)110D)121 【2.6】以下程序的输出结果是 main o I int x=0x02ff, y=0xOff00 printf("%d\n", (x&y)>>4 0x005f): A)127B)255C)128D)1 【2.7】以下程序的输出结果是 main o char c=
printf ("%d,", x); } printf("%d\n", x); } A) 10,20 B) 20,10 C) 10,10 D) 20,20 【2.3】以下程序的输出结果是____。 main() { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); } A) n=-521 B) n=521 C) n=65015 D) n=102170103 【2.4】以下程序的输出结果是 。 main( ) { int x=10, y=10; printf("%d %d\n", x――, ――y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 【2.5】以下程序的输出结果是____。 main() { int n=1; printf("%d %d %d\n",n,n++,n--); } A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1 【2.6】以下程序的输出结果是____。 main() { int x=0x02ff,y=0x0ff00; printf("%d\n",(x&y)>>4|0x005f); } A) 127 B) 255 C) 128 D) 1 【2.7】以下程序的输出结果是____。 main() { int a=1; char c='a';
float f=2.0: printf("%dn",(!(a=0),f!=0&&c==A')) A)0B)1 【2.8】下面程序的输出结果是 main o int a=l, i=a+1 Iwhile(! i++>3): printf(%d\n",a) A)1B)2C)3D)4 【2.9】下面程序的输出结果是 maino i int a=lll: printf("%d, %o\n", a, a) A)111,157B)0,0C)20,24D)7,7 【2.10】下面程序的输出结果是 I char s[12]=a book printf(%.4s",s) A) a book!B) a book!<四个空格》 C)aboD)格式描述错误,输出不确定 【2.11】下面程序的输出结果是 int a. b scanf(%2d3d,&a, &b) printf("a=%d b=%d\n", a, b) A)a=12b=34B)a=123b=45C)a=12b=345D)语句右错误
float f=2.0; printf("%d\n",(!(a==0),f!=0&&c=='A')); } A) 0 B) 1 【2.8】下面程序的输出结果是____。 main() { int a=1,i=a+1; do { a++ ; }while( !~i++ > 3); printf("%d\n",a); } A) 1 B) 2 C) 3 D) 4 【2.9】下面程序的输出结果是____。 main() { int a=111; a=a^00; printf("%d,%o\n",a,a); } A) 111,157 B) 0,0 C) 20,24 D) 7,7 【2.10】下面程序的输出结果是____。 main() { char s[12]= "a book"; printf("%.4s",s); } A) a book! B) a book!<四个空格》 C) a bo D) 格式描述错误,输出不确定 【2.11】下面程序的输出结果是____。 main() { int a,b; scanf("%2d%3d",&a,&b); printf("a=%d b=%d\n",a,b); } A) a=12 b=34 B) a=123 b=45 C) a=12 b=345 D) 语句右错误
【2.12】以下程序段的输出结果是。inta=10,b=50,c=30 if(a>b) printf("a=%d b=%d c=%d\n", a, b, c): A)a=10b=50c=10B)a=10b=30c=10 C)a=50b=30c=10D)a=50b=30c=50 【2.13】以下程序的输出结果是。main inta=0,b=1,c=0,d=20; if(a) d=d-10 else if(!b) if(!c)d=15 else d=25 printf( d=%d\n, d) A)d=10B)d=15C)d=20D)d=25 【2.14】下面程序的输出结果为 maino i int a=1, b=0 I case 0: printf ("**0**"): break case 1: printf("**1**"):break case 2: printf("**2**): break: A)**0**B)**0***2**C)**0***1****2*D)有语法错误 【2.15】以下程序的输出结果是。main( char*s="12134211 int vl:=0,v2=0,v3=0,v4=0,k for(k=0: s[k]: k++) switch(slk]) case 1: vI case v3++
【2.12】以下程序段的输出结果是 。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c); A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 【2.13】以下程序的输出结果是 。 main() { int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; printf("d=%d\n",d); } A) d=10 B) d=15 C) d=20 D) d=25 【2.14】下面程序的输出结果为 。 main() { int a=1,b=0; switch(a) { case 1: switch (b) { case 0: printf("**0**"); break; case 1: printf("**1**"); break; } case 2: printf("**2**"); break; } } A) **0** B) **0****2** C) **0****1****2** D) 有语法错误 【2.15】以下程序的输出结果是 。 main() { char *s="12134211"; int v1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++) switch(s[k]) { case '1': v1++; case '3': v3++;
default: v4++; printf( v1=d, v2=%d, v3=%d, v4=%d\n", v1,v2, v3, v4) A)v1=4,v2= C)vl=5,v2=8, v4=1D)v1=4,v2=7,v3=5,v4=8 【2.16】下面程序的输出是。 main o case 1: switch(y) case 1: b++: break case 2: a++: b++: break printf("a=%d, b=%d\n"a, b) A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2 【2.17】下面程序的输出是 main printf(%d\n", num): A)1B)1C)1D) 【2.8】下面程序的输出结果是_。 in o I switch(a)
case '2': v2++; default: v4++; } printf("v1=%d, v2=%d, v3=%d, v4=%d\n",v1,v2,v3,v4); } A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1 C) v1=5,v2=8,v3=6,v4=1 D) v1=4,v2=7,v3=5,v4=8 【2.16】下面程序的输出是 。 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; } printf("a=%d,b=%d\n",a,b); } A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 【2.17】下面程序的输出是____。 main() { int num=0; while(num<=2) { num++; printf("%d\n",num); } } A) 1 B) 1 C) 1 D) 1 2 2 2 3 3 4 【2.18】下面程序的输出结果是____。 main() { int a=1,b=0; do { switch(a)
i case 1: b=l: break case 2: b=2: break: default: b=0: b=a+b )while(!b) printf( a=%d, b=%d", a, b): A)1,2B)2,1C)1,1D)2,2 【2.19】从键盘上输入”446755″时,下面程序的输出是 #include main o i int c: while(c= getchar0)!=’n’) switch(c-’2’) case 0 case 1: putchar(c+4) case 2: putchar(c+4): break case 3: putchar(c+3) default: putchar(c+2): break printf("\n") A)888988B)668966C)88898787D)66898781 【2.20】下面程序的输出结果是_。 maino i int k=0 char c=A I switch(c++) I case'A: k++ break case case case d: k=k%2: contiue casee: k=k+10: break default: k=k/3 )while(c<C' printf(k=%d\n", k)
{ case 1: b=1;break; case 2: b=2;break; default : b=0; } b=a+b; }while(!b); printf("a=%d,b=%d",a,b); } A) 1,2 B) 2,1 C) 1,1 D) 2,2 【2.19】从键盘上输入"446755"时,下面程序的输出是____。 #include main() { int c; while((c=getchar())!='\n') switch(c -'2') { case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default: putchar(c+2);break; } printf("\n"); } A) 888988 B) 668966 C) 88898787 D) 66898787 【2.20】下面程序的输出结果是____。 main() { int k=0; char c='A'; do { switch(c++) { case 'A': k++;break; case 'B': k--; case 'C': k+=2;break; case 'D': k=k%2;contiue; case 'E': k=k+10;break; default: k=k/3; } k++; }while(c<'C') ; printf("k=%d\n",k);