【计算机类职业资格】二级C语言-109及答案解析.doc

上传人:wealthynice100 文档编号:1324857 上传时间:2019-10-17 格式:DOC 页数:22 大小:77KB
下载 相关 举报
【计算机类职业资格】二级C语言-109及答案解析.doc_第1页
第1页 / 共22页
【计算机类职业资格】二级C语言-109及答案解析.doc_第2页
第2页 / 共22页
【计算机类职业资格】二级C语言-109及答案解析.doc_第3页
第3页 / 共22页
【计算机类职业资格】二级C语言-109及答案解析.doc_第4页
第4页 / 共22页
【计算机类职业资格】二级C语言-109及答案解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、二级 C 语言-109 及答案解析(总分:105.00,做题时间:90 分钟)一、选择题(总题数:46,分数:105.00)1.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。(分数:2.00)A.do*t+ +=*s+ +;while(*s);B.for(i=0;ti=si;i+ +);C.while( *t = * s)t+ +;s+ +D.for(i=0,j=0;ti+ +=sj+ +; );2.设有定义: int k=0; 以下选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。(分数:2.00)A.+ +kB.k+ =1C.k+ +D.k+13.若有定义语句:

2、int year=2009, *p= 以下不能使变量 year 中的值增至 2010 的语句是_。(分数:2.00)A.(*p)+ +;B.*p+ +;C.+ +(*p);D.*p+ =1;4.若有以下程序: #include stdio.h int f(int m) static int n=0; int a=2; n+ +; a+ +; return n+m+a; main( ) int k; for.(k=0; k4; k+ +) printf(“%d,“, f(k); 则程序的输出结果是_。(分数:2.00)A.3,5,7,9,B.4,7,10,13,C.4,5,6,7,D.4,6,8

3、,10,5.有以下程序: #include stdio.h int fun(int a, intB) return a+b; main( ) int x=6, y=7, z=8, r; r = fun (fun(x,y), z- -); printf(“%d/n“, r); 程序运行后的输出结果是_。(分数:2.00)A.21B.15C.20D.316.若有定义:double a=22;int i=0,k=18;,则不符合 C 语言规定的赋值语句是_。(分数:2.00)A.i=(a+k)=(i+k);B.i=a%11;C.a=a+ +,i+ +D.i=! a;7.若变量 x、y 已正确定义并赋

4、值,以下符合 C 语言语法的表达式是_。(分数:2.00)A.x+1=yB.+x,y=x-C.x=x+10=x+yD.double(x)/108.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是_。(分数:2.00)A.x=y= =5;B.x=n%2.5;C.x+n=i;D.x=5=4+1;9.以下选项中正确的定义语句是_。(分数:2.00)A.double, a, b;B.double a=b=7;C.double a; b;D.double a=7,b=7;10.若有定义语句: int a=3,b=2,c=1; 以下选项中错误的赋值表达式是_。(分数:2.00)A.a=(b=4)=

5、3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);11.表达式 a+ =a - = a=9 的值是_。(分数:2.00)A.18B.-9C.0D.912.有以下程序: #inelude stdio.h main( ) int a=3; printf(“%d/n“,(a+ =a- =a*a); 程序运行后的输出结果是_。(分数:2.00)A.3B.9C.0D.-1213.有以下程序: #include stdio.h main( ) int a=1,b=0; printf(“%d,“,b=a+b); printf(“%d/n“,a=2*b);(分数:2.00)A.1,2

6、B.1,0C.3,2D.0,014.以下叙述中正确的是_。(分数:2.00)A.a 是实型变量,a=10 在 C 语言中是允许的,因此可以说:实型变量中可以存放整型数B.在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式C.若有 int a=4,b=9;执行了 a=b 后,a 的值已由原值改变为 b 的值,b 的值变为 0D.若有 int a=4,b=9;执行了 a=b;b=a;之后,a 的值为 9,b 的值为 415.以下叙述中正确的是_。(分数:2.00)A.由 printf 输出的数据都隐含左对齐B.scanf 和 printf 是 C 语言提供的输入和输出语句C.赋值语句是一种

7、执行语句,必须放在函数的可执行部分D.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的16.若有以下程序: #include stdio.h main( ) int b=10, a=-11; a%=b%=4; printf(“%d%d/n“, a, b); 则程序的输出结果是_。(分数:2.00)A.1 2B.-1 2C.-1 -2D.1 -217.若有以下程序: #include stdio3.h main( ) int a=-11, b=10; a/=b/=-4; printf(“%d%d/n“, a, b); 则程序的输出结果是_。(分数:2.00)A.

8、4 -3B.-1 -2C.5 -2D.5 -318.有以下程序: # include stdio.h main( ) unsigned char a=8, c; c=a3; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:2.00)A.16B.1C.32D.019.有以下程序: # include stdio.h main( ) unsigned char a=2, b=4, c=5, d; d=a | b; d printf(“%d/n“, d); 程序运行后的输出结果是_。(分数:2.00)A.3B.4C.5D.620.设有以下语句: int a=1,b=2, c;

9、 c=a(b2); 执行后,c 的值为_。(分数:2.00)A.7B.9C.8D.621.若有以下程序段: int r=8; printf(“%d/n“,r1); 则输出结果是_。 A16 B8 C4 D12 (分数:2.00)A.B.C.D.22.有以下程序: #include stdio.h main( ) int a=1, b=2, c=3, x; x=(ab) printf(“%d/n“,x); 程序的运行结果是_。(分数:2.00)A.3B.1C.2D.023.有以下程序: #include stdio.h main( ) int a=2, b; b=a2; printf(“%d/n

10、“, b); 程序运行后的输出结果是_。(分数:2.00)A.2B.4C.6D.824.有以下程序: #include stdio.h main( ) char a=4; printf(“%d/n“,a=a1); 程序的运行结果是_。(分数:2.00)A.16B.8C.40D.425.有以下程序: #include stdio.h main( ) int a=5, b=1, t; t=(a2)|b; printf(“%d/n“,t); 程序运行后的输出结果是_。(分数:2.00)A.1B.11C.6D.2126.若变量已正确定义,则以下语句的输出结果是_。 s=32; s=32; printf

11、(“%d“,s);(分数:2.00)A.-1B.0C.1D.3227.若有以下程序: #include stdio.h main( ) int c; c=105; printf(“%d/n“, c); 则程序的输出结果是_。(分数:2.00)A.5B.15C.10000D.10528.若有以下程序: #nclude stdio.h main( ) int c; c=13|15; printf(“%d/n“,c); 则程序的输出结果是_。(分数:2.00)A.13B.15C.18D.529.有以下程序: #include stdio.h main( ) int i=0; i= i; printf

12、(“%d/n“,i); 程序运行后的输出结果是_。(分数:2.00)A.8B.0C.1D.-130.有以下程序: #include stdio.h main( ) int i=1; i = ii; printf(“%d/n“,i); 程序运行后的输出结果是_。(分数:2.00)A.1B.-1C.0D.731.下面选项中关于位运算的叙述正确的是_。(分数:2.00)A.位运算的对象只能是整型或字符型数据B.位运算符都需要两个操作数C.左移运算的结果总是原操作数的 2 倍D.右移运算时,高位总是补 032.若变量已正确定义并赋值,以下不能构成 C 语句的选项是_。(分数:2.00)A.B+ +;B

13、.A=a+b;C.a=a+bD.A?a:b;33.以下叙述中正确的是_。(分数:2.00)A.复合语句在语法上包含多条语句,其中不能定义局部变量B.花括号对只能用来表示函数的开头和结尾,不能用于其他目的C.空语句就是指程序中的空行D.当用 scanf 从键盘输入数据时,每行数据在没按下回车键(Enter 键)前,可以任意修改34.有以下程序: #include stdio.h main( ) char c1, c2, c3, c4, c5, c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); p

14、rintf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123回车 45678回车 则输出结果是_。(分数:2.00)A.1245B.1256C.1278D.126735.若有以下程序: #include stdio.h char f(char x) return x*x+“a“; main( ) char a, b=0; for(a=0; a4; a+ =1) b=f(a); putchar(b); 则程序的输出结果是_。(分数:2.00)A.abcdB.ABEJC.abcjD.ABCD36.若有以下程序: #include stdio.h char f(

15、char x) return x*x%10+ “0“; main( ) char a; int b=0; for(a=0; a5; a+ =1) b=f(a); putchar(b); 则程序的输出结果是_。(分数:2.00)A.014916B.01234C.01496D.0000037.有以下程序: #include stdio.h main( ) char a,b,c,d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%c/n“,a,b,c,d); 当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也

16、是一个字符) 12CR 34CR 则输出结果是_。(分数:2.00)A.1234B.12C.1234D.12338.以下叙述中错误的是_。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件39.要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,以下正确的程序段是_。(分数:2.00)A.while(ch=getchar() =“N“)printf(“%c“,ch);B.while(ch=getchar()! =“N

17、“) printf(“%c“,ch);C.while(ch=getchar()= =“N“)printf(“%c“,ch);D.while(ch=getchar()= =“N“)printf(“%c“,ch);40.以下不能输出字符 A 的语句是(注:字符 A 的 ASCII 码值为 65,字符 a 的 ASCII 码值为 97)_。(分数:4.00)A.printf(“%c/n“, “a“-32);B.printf(“%d/n“, “A“);C.printf(“%c/n“,65);D.printf(“%c/n“, “B“-1);41.已知字符“A“的 ASCII 代码值是 65,字符变量 c

18、1 的值是“A“,c2 的值是“D“,则执行语句 printf(“%d,%d“, c1, c2-2); 的输出结果是_。(分数:2.00)A.65,68B.A,68C.A,BD.65,6642.有以下程序: #inelude stdio.h 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); 程序运行后的输出结果是_。(分数:4.00

19、)A.a=1,b=0B.a=1,b=1C.a=2,b=1D.a=2,b=243.有以下程序: #include stdio.h main( ) int k, j, s; for(k=2; k6; k+ +,k+ + ) s=1; for(j=k; j6; J+ +) s+ =j; printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:4.00)A.6B.10C.24D.4044.有以下程序: #include stdio.h main( ) char c1,c2; c1=“A“+“8“-“4“; c2=“A“+“8“-“5“; printf(“%c,%d/n“,c1,c2);

20、已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是_。(分数:4.00)A.E,68B.D,69C.E,DD.输出无定值45.有如下程序段: int x=12; double y=3.141593; printf(“%d%8.6f“, x, y); 其输出结果是_。(分数:4.00)A.123.141593B.12 3.141593C.12, 3.141593D.123.141593046.若变量已正确定义为 int 型,要通过语句 scanf(“%d,%d,%d“, 给 a 赋值 1、给 b 赋值 2、给 c 赋值 3,以下输入形式中错误的是(注:代表一个空格符)_。(分数:5

21、.00)A.1,2,3回车B.1,2,3回车C.1,2,3回车D.123回车二级 C 语言-109 答案解析(总分:105.00,做题时间:90 分钟)一、选择题(总题数:46,分数:105.00)1.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。(分数:2.00)A.do*t+ +=*s+ +;while(*s); B.for(i=0;ti=si;i+ +);C.while( *t = * s)t+ +;s+ +D.for(i=0,j=0;ti+ +=sj+ +; );解析:解析 do*t+=*s+;while(*s);不能因为当*s=“/0“时,while(*s)跳出循环,

22、这样字符串结束标志“/0”没有复制给*t,造成*t 不完整。注意:*t+=*s+是先执行 t=*s,然后才进行t=t+1,s=s+1。B、C 和 D 都能将“/0”复制过去。2.设有定义: int k=0; 以下选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。(分数:2.00)A.+ +kB.k+ =1C.k+ + D.k+1解析:解析 +k 是先使 k 的值自增 1 后再使用;k+是先取得 k 的值,再将 k 的值自增 1,所以 C 选项中表达式的值为 0,而其他三个表达式的值均为 1,所以选择 C。3.若有定义语句: int year=2009, *p= 以下不能使变量 yea

23、r 中的值增至 2010 的语句是_。(分数:2.00)A.(*p)+ +;B.*p+ +; C.+ +(*p);D.*p+ =1;解析:解析 由于自加运算符+的运算级别高于间接运算*的运算级别,所以 B 选项的表达式*p+不能使变量 year 中的值增至 2010。因此 B 选项正确。4.若有以下程序: #include stdio.h int f(int m) static int n=0; int a=2; n+ +; a+ +; return n+m+a; main( ) int k; for.(k=0; k4; k+ +) printf(“%d,“, f(k); 则程序的输出结果是_

24、。(分数:2.00)A.3,5,7,9,B.4,7,10,13,C.4,5,6,7,D.4,6,8,10, 解析:解析 本题考查静态局部变量以及自增运算符,静态局部变量在函数凋用结束后,并不释放,仍然保留它的值,本题中,k 为 0 时,return n+m+a 之前,n 为 1,a 为局部变量,值为 3,m 为 0,所以第一个返回值为 4。k 为 1,在函数返回值之前,静态局部变量为 2,局部变量 a 仍然为 3,m 为 1,所以结果是 6,依此类推答案为 D。5.有以下程序: #include stdio.h int fun(int a, intB) return a+b; main( )

25、int x=6, y=7, z=8, r; r = fun (fun(x,y), z- -); printf(“%d/n“, r); 程序运行后的输出结果是_。(分数:2.00)A.21 B.15C.20D.31解析:解析 函数 fun 的功能是返回两个形参的和。调用函数 fun(x,y)时,将变量 x=6 和 y=7 的值分别传送变量 a 和 b,并且通过语句 return a+b;将 13 返回给主函数。继续调用函数 fun(13,z-),这里z-指将 z 的值参与运算后,再将 z 的值减 1 操作;将 13 和 8 分别传送变量 a 和 b,且通过语句 retuln a+b;将 21 返

26、回给主函数。因此 A 选项正确。6.若有定义:double a=22;int i=0,k=18;,则不符合 C 语言规定的赋值语句是_。(分数:2.00)A.i=(a+k)=(i+k);B.i=a%11; C.a=a+ +,i+ +D.i=! a;解析:解析 取模运算符“%”,是二元运算符,具有左结合性,参与运算的量均为整型。选项 B 中的 a变量是 double 实型,所以 B 不符合规定。7.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是_。(分数:2.00)A.x+1=yB.+x,y=x- C.x=x+10=x+yD.double(x)/10解析:解析 A 选项中不能

27、将变量 y 赋给表达式,C 选项中的错误与 A 选项一样,D 选项中强制类型转换表达式应写成(double)x/10。8.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是_。(分数:2.00)A.x=y= =5; B.x=n%2.5;C.x+n=i;D.x=5=4+1;解析:解析 B 选项中运算符“%”的前后必须为整数,C 选项中不能将变量赋给表达式 x+n,D 选项中不能将表达式 4+1 赋给常量 5。9.以下选项中正确的定义语句是_。(分数:2.00)A.double, a, b;B.double a=b=7;C.double a; b;D.double a=7,b=7; 解析:解

28、析 A 选项中变量类型符 double 后面不能有逗号。B 选项中变量 b 不能先使用再定义,应该写成选项 D 中的格式。C 选项中变量 a 后面应该是逗号而不是分号。10.若有定义语句: int a=3,b=2,c=1; 以下选项中错误的赋值表达式是_。(分数:2.00)A.a=(b=4)=3; B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);解析:解析 不能将变量或常量赋给一个表达式,所以 A 选项中(b=4)=3 是错误的。11.表达式 a+ =a - = a=9 的值是_。(分数:2.00)A.18B.-9C.0 D.9解析:解析 首先计算 a=9,然后计算 a

29、-=9,即 a=a-9,结果为 0,然后计算 a+=0,即 a=a+0,所以最终结果为 0。12.有以下程序: #inelude stdio.h main( ) int a=3; printf(“%d/n“,(a+ =a- =a*a); 程序运行后的输出结果是_。(分数:2.00)A.3B.9C.0D.-12 解析:解析 本题考查目的是运算符的结合性和优先级,首先计算 a*a,结果为 9,然后执行 a=a-9,即3-9,结果为-6,然后执行 a=(-6)+(-6),即 a=的值为-12。所以选择 D。13.有以下程序: #include stdio.h main( ) int a=1,b=0;

30、 printf(“%d,“,b=a+b); printf(“%d/n“,a=2*b);(分数:2.00)A.1,2 B.1,0C.3,2D.0,0解析:解析 首先打印 b=a+b=1+0=1 的值 1,此时已给 b 赋值为 1。然后打印 a=2*b=2*1=2 的值 2。所以结果是 1,2。14.以下叙述中正确的是_。(分数:2.00)A.a 是实型变量,a=10 在 C 语言中是允许的,因此可以说:实型变量中可以存放整型数B.在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式 C.若有 int a=4,b=9;执行了 a=b 后,a 的值已由原值改变为 b 的值,b 的值变为 0D.

31、若有 int a=4,b=9;执行了 a=b;b=a;之后,a 的值为 9,b 的值为 4解析:解析 A 选项中 a 是实型变量,a=10 在 C 语言中是允许的,但是实型变量中不可以存放整型数。C 选项中执行 a=b 后,a 的值变为 b 的值,为 9,b 的值不变,仍为 9。D 选项中执行 a=b 后,a 的值为9,b 的值为 9,执行 b=a 后,a 的值为 9,b 的值也为 9,所以选择 B。15.以下叙述中正确的是_。(分数:2.00)A.由 printf 输出的数据都隐含左对齐B.scanf 和 printf 是 C 语言提供的输入和输出语句C.赋值语句是一种执行语句,必须放在函数

32、的可执行部分 D.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的解析:解析 scanf 和 printf 是 C 语言提供的输入输出函数,所以 B 错误。由 printf 输出的数据都隐含右对齐,所以 A 错误。printf 输出数据所占的宽度由系统决定,所以 D 错误。16.若有以下程序: #include stdio.h main( ) int b=10, a=-11; a%=b%=4; printf(“%d%d/n“, a, b); 则程序的输出结果是_。(分数:2.00)A.1 2B.-1 2 C.-1 -2D.1 -2解析:解析 先计算 b%=4,

33、即 b=b%4,结果为 2,然后计算 a%=2,结果为-1,最后 a 的值为-1,b 的值为 2,所以选择 B 选项。17.若有以下程序: #include stdio3.h main( ) int a=-11, b=10; a/=b/=-4; printf(“%d%d/n“, a, b); 则程序的输出结果是_。(分数:2.00)A.4 -3B.-1 -2C.5 -2 D.5 -3解析:解析 先执行 b/=-4,即 b=h/-4,结果为-2,然后执行 a/=-2,即 a=a/-2,结果为 5。所以选择C。18.有以下程序: # include stdio.h main( ) unsigned

34、 char a=8, c; c=a3; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:2.00)A.16B.1 C.32D.0解析:解析 无符号整型变量 a 的值为 8,二进制表示为 00001000,右移 3 位后为 00000001,即十进制的 1,所以输出 1。19.有以下程序: # include stdio.h main( ) unsigned char a=2, b=4, c=5, d; d=a | b; d printf(“%d/n“, d); 程序运行后的输出结果是_。(分数:2.00)A.3B.4 C.5D.6解析:解析 c=a(b2); 执行后,c

35、 的值为_。(分数:2.00)A.7B.9 C.8D.6解析:解析 b 为 2,二进制为 00000010,执行左移两位操作后为 00001000,然后与 a 00000001 做异或操作结果为 00001001,即十进制的 9。21.若有以下程序段: int r=8; printf(“%d/n“,r1); 则输出结果是_。 A16 B8 C4 D12 (分数:2.00)A.B.C. D.解析:解析 本题考查位运算,属于基础知识。题目中将整型变量 8 二进制表达为 00001000,右移一位为 00000100,即 4,故选项 C 正确。22.有以下程序: #include stdio.h m

36、ain( ) int a=1, b=2, c=3, x; x=(ab) printf(“%d/n“,x); 程序的运行结果是_。(分数:2.00)A.3 B.1C.2D.0解析:解析 本题考查位运算符以及相关运算。按位异或, b=a2; printf(“%d/n“, b); 程序运行后的输出结果是_。(分数:2.00)A.2B.4C.6D.8 解析:解析 本题考查位运算符。题目中将 a 向左移两位,左移两位表示乘以 4,所以答案为 8,选项 D正确。24.有以下程序: #include stdio.h main( ) char a=4; printf(“%d/n“,a=a1); 程序的运行结果

37、是_。(分数:2.00)A.16B.8 C.40D.4解析:解析 本题考查位运算。题目中将 4 向左移一位然后重新赋值给 a,4 左移一位为 8,程序运行结果为 8,选项 B 正确。25.有以下程序: #include stdio.h main( ) int a=5, b=1, t; t=(a2)|b; printf(“%d/n“,t); 程序运行后的输出结果是_。(分数:2.00)A.1B.11C.6D.21 解析:解析 本题考查位运算以及按位或操作。将 a 左移二位相当于是将 a 乘以了 4,所以 a2 等于20,二进制表示为 00010100,与 b 按位或得到 00010101,即 2

38、1,所以选项 D 正确。26.若变量已正确定义,则以下语句的输出结果是_。 s=32; s=32; printf(“%d“,s);(分数:2.00)A.-1B.0 C.1D.32解析:解析 本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果是 1,否则结果为 0,题目中两个值相同,所以结果为 0。27.若有以下程序: #include stdio.h main( ) int c; c=105; printf(“%d/n“, c); 则程序的输出结果是_。(分数:2.00)A.5B.15 C.10000D.105解析:解析 本题考查位运算中的按位异或运算符。异或运算只有在两个比较的位不

39、同时其结果是 1,否则结果为 0,10 用二进制表示为 00001010,5 用二进制表示为 00000101,异或运算后结果为00001111,即 15,选项 B 正确。28.若有以下程序: #nclude stdio.h main( ) int c; c=13|15; printf(“%d/n“,c); 则程序的输出结果是_。(分数:2.00)A.13 B.15C.18D.5解析:解析 本题考查位运算中的按位或运算符。或运算只要两个比较的位中有一个为 1,其结果是 1,否则结果为 0,13 用二进制表示为 00001101,5 用二进制表示为 00000101,或运算后结果为 000011

40、01,即 13,选项 A 正确。29.有以下程序: #include stdio.h main( ) int i=0; i= i; printf(“%d/n“,i); 程序运行后的输出结果是_。(分数:2.00)A.8B.0C.1D.-1 解析:解析 本题考查按位取反运算。0 按位取反就是-1,所以选项 D 正确。30.有以下程序: #include stdio.h main( ) int i=1; i = ii; printf(“%d/n“,i); 程序运行后的输出结果是_。(分数:2.00)A.1B.-1C.0 D.7解析:解析 本题考查按位异或运算。异或运算只有在两个比较的位不同时其结果

41、是 1,否则结果为0,ii 运算符两边相同,所以结果为 0,选项 C 正确。31.下面选项中关于位运算的叙述正确的是_。(分数:2.00)A.位运算的对象只能是整型或字符型数据 B.位运算符都需要两个操作数C.左移运算的结果总是原操作数的 2 倍D.右移运算时,高位总是补 0解析:解析 本题考查位运算。按位取反只需要一个操作数,所以 B 选项错误,左移一位是原操作数的2 倍,其他情况不是,比如左移两位就是原操作数的 4 倍,所以 C 选项错误,右移运算时,高位在某些情况下不是补 0。32.若变量已正确定义并赋值,以下不能构成 C 语句的选项是_。(分数:2.00)A.B+ +;B.A=a+b;

42、C.a=a+b D.A?a:b;解析:解析 C 语言中规定,C 语句必须以分号“;”结束。C 选项中没有结束符号,所以错误。33.以下叙述中正确的是_。(分数:2.00)A.复合语句在语法上包含多条语句,其中不能定义局部变量B.花括号对只能用来表示函数的开头和结尾,不能用于其他目的C.空语句就是指程序中的空行D.当用 scanf 从键盘输入数据时,每行数据在没按下回车键(Enter 键)前,可以任意修改 解析:解析 复合语句可以包含多条语句,在其中可以定义局部变量,所以 A 错误。花括号对不仅用来表示函数的开头和结尾,也可以用于表示复合语句,所以 B 错误。C 语言只有分号“;”组成的语句称为

43、空语句,空语句是什么也不执行的语句,显然空语句不是空行。所以 C 错误。34.有以下程序: #include stdio.h main( ) char c1, c2, c3, c4, c5, c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123回车 45678回车 则输出结果是_。(分数:2.00)A.1245 B.1256C.1278D.1267解析:解析 scanf 按照格式字符进行输入,所以

44、 123 与回车的值分别送入了 c1、c2、c3、c4 变量的存储空间。getchar()函数的功能是从键盘输入的字符串中读入一个字符,所以 4 送入了变量 c5 的存储空间,5 送人了变量 c6 的存储空间。所以打印时结果为 1245。35.若有以下程序: #include stdio.h char f(char x) return x*x+“a“; main( ) char a, b=0; for(a=0; a4; a+ =1) b=f(a); putchar(b); 则程序的输出结果是_。(分数:2.00)A.abcdB.ABEJC.abcj D.ABCD解析:解析 该题目首先初始化变量

45、 a 和 b,通过 for 循环语句使 a 取值为 0、1、2、3,f 函数的功能是将 a*a+“a“的值返回给 b,即 b 为 a、b、e、j。最后通过字符输出函数 putchar()将 b 输出。因此 C 选项正确。36.若有以下程序: #include stdio.h char f(char x) return x*x%10+ “0“; main( ) char a; int b=0; for(a=0; a5; a+ =1) b=f(a); putchar(b); 则程序的输出结果是_。(分数:2.00)A.014916B.01234C.01496 D.00000解析:解析 该题目中 x

46、*x%10 表示 x 和 x 相乘后,结果再对 10 求余操作。主函数中通过 for 语句使变量 a 从 0 到 4 进行取值;当 a=0 时,调用函数 f 后,返回值为 0 赋给 b,并且进行字符输出;当 a=1 时,返回值为 1 赋给 b,并且进行字符输出;当 a=2 时,返回值为 4 赋给 b,并且进行字符输出;当 a=3 时,返回值为 9 赋给 b,并且进行字符输出;当 a=4 时,返回值为 6 赋给 b,并且进行字符输出。因此 C 选项正确。37.有以下程序: #include stdio.h main( ) char a,b,c,d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%c/n“,a,b,c,d); 当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符) 12CR 34CR 则输出结果是_。(分数:2.00)A.1234B.12C.1234D.123 解析:解析 按照从键盘输入的数据可以判断字符 1 给了变量 a,字符 2 给了变量 b,字符CR即回车给了变量 c,字符 3 给了变量 d。所以打印输出的结果为 D 选项。38.以下叙述中错误的是_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1