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

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

1、二级 C 语言-266 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.有以下程序 #includestdio.h main() int a=3; printf(“%d/n“, (a+=a-=a*a); 程序运行后的输出结果是_。(分数:3.00)A.-12B.9C.0D.32.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是_。(分数:3.00)A.x+1=yB.+x, y=x-C.x=x+10=x+yD.double(x)/103.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是_。(分数:3.00)A.x=

2、y=5;B.x=n%2.5;C.x+n=i;D.x=5=4+1;4.若变量已正确定义为 int 型,要通过语句 scanf(“%d, %d, %d“, 给 a 赋值 1、给 b 赋值 2、给 c 赋值 3,以下输入形式中错误的是(注:代表一个空格符)_。(分数:3.00)A.1, 2, 3回车B.1, 2, 3回车C.1, 2, 3回车D.123回车5.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, 语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是(注:代表空格字符)_。(分数:3.00)A.10X回

3、车20Y回车B.10X20Y回车C.10X回车20Y回车D.10X20Y回车6.有如下程序段: int x=12; double y=3.141593; printf(“%d%8.6f“, x, y); 其输出结果是_。(分数:3.00)A.12,3.141593B.12 3.141593C.123.141593D.123.14159307.若有定义: int a, b; 通过语句 scanf(“%d; %d“, 能把整数 3 赋给变量 a,5 赋给变量 b 的输入数据是_。(分数:3.00)A.3,5B.3;5C.3 5D.358.若有定义 int a; float b; double c;

4、 程序运行时输入: 3 4 5回车 能把值 3 输入给变量 a、4 输入给变量 b、5 输入给变量 c 的语句是_。(分数:3.00)A.scanf(“%lf%lf%lf“, B.scanf(“%d%lf%lf“, C.scanf(“%d%f%f“, D.scanf(“%d%f%lf“, 9.以下叙述中正确的是_。(分数:2.00)A.赋值语句是一种执行语句,必须放在函数的可执行部分B.scanf 和 printf 是 C 语言提供的输入和输出语句C.由 printf 输出的数据都隐含左对齐D.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的10.以下叙述中正

5、确的是_。(分数:2.00)A.在 scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符B.只能在 printf 函数中指定输入数据的宽度,而不能在 scanf 函数中指定输入数据占的宽度C.scanf 函数中的字符串是提示程序员的,输入数据时不必管它D.复合语句也被称为语句块,它至少要包含两条语句11.有以下程序 #includestdio.h main() int a=2, c=5; printf(“a=%d, b=%d/n“, a, c); 程序的输出结果是_。(分数:2.00)A.a=2, b=5B.a=%2, b=%5C.a=%d, b=%dD.a=%d, b=%d12

6、.有以下程序 #includestdio.h main() int a1, a2; char c1, c2; scanf(“%d%c%d%c“, printf(“%d, %c, %d, %c“, a1, c1, a2, c2); 若想通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下代表空格,CR代表回车)_。(分数:2.00)A.12a34bCRB.12a34bCRC.12, a, 34, bCRD.12a34bCR13.有以下程序段 #includestdio.h int a,

7、 b, c; a=10; b=50; c=30; if(ab)a=b, b=c; c=a; printf(“a=%d b=%d c=%d/n“, a, b, c); 程序的输出结果是_。(分数:2.00)A.a=10 b=50 c=30B.a=10 b=50 c=10C.a=10 b=30 c=10D.a=50 b=30 c=5014.有以下程序 #includestdio.h main() char a, b, c, d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%c/n“, a, b, c, d); 当执行程序时,按下列方

8、式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符) 12CR 34CR 则输出结果是_。(分数:2.00)A.123B.12C.1234D.123415.若变量已正确定义,在 if(W)printf(“%d/n“, k);中,以下不可替代 W 的是_。(分数:2.00)A.ch=getchar()B.ab+cC.a=b+cD.a+16.以下叙述中正确的是_。(分数:2.00)A.分支结构是根据算术表达式的结果来判断流程走向的B.在 C 语言中,逻辑真值和假值分别对应 1 和 0C.对于浮点变量 x 和 y,表达式:x=y 是非法的,会出编译错误D.关系运算符两边的运算对象可以

9、是 C 语言中任意合法的表达式17.设有定义: int a=1, b=2, c=3; 以下语句中执行效果与其它三个不同的是_。(分数:2.00)A.if(ab)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;18.if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是_。(分数:2.00)A.必须是正数B.必须是整数值C.可以是任意合法的数值D.必须是逻辑值19.若有以下程序 #includestdio.h main() int a=1, b=2, c=3,

10、 d=4; if(a=2)|(b=1)c=2; if(c=3) printf(“%d, %d, %d, %d/n“, a, b, c, d); 则程序的输出结果是_。(分数:2.00)A.2, 2, 2, 4B.2, 1, 2, -1C.5, 1, 2, -1D.1, 2, 3, 420.若有以下程序 #includestdio.h main() int a=1, b=2, c=3, d=4; if(a=2) if(c=3)|(d=-1)a=5; printf(“%d, %d, %d, %d/n“, a, b, c, d); 则程序的输出结果是_。(分数:2.00)A.5, 1, 2, -1B

11、.2, 1, 2, -1C.2, 2, 2, 4D.1, 2, 3, 421.有以下程序 #includestdio.h main() int a=0, b=0, c=0, d=0; if(a=1)b=1; c=2; else d=3; printf(“%d, %d, %d, %d/n“, a, b, c, d); 程序输出_。(分数:2.00)A.0, 0, 0, 3B.编译有错C.1, 1, 2, 0D.0, 1, 2, 022.有以下计算公式: (分数:2.00)A.y=sqrt(x);if(x0)y=sqrt(-x);B.if(x=0)y=sqrt(x);else y=sqrt(-x)

12、;C.if(x=0) y=sqrt(x);if(x0)y=sqrt(-x);D.y=sqrt(x=0?x:-x);23.下列条件语句中,输出结果与其他语句不同的是_。(分数:2.00)A.if(a)printf(“%d/n“, x); else printf(“%d/n“, y);B.if(a=0)printf(“%d/n“, y); else printf(“%d/n“, x);C.if(a!=0)printf(“%d/n“, x); else printf(“%d/n“, y);D.if(a=0)printf(“%d/n“, x); else printf(“%d/n“, y);24.有以

13、下程序 #ineludestdio.h main() int x=1, y=0; if(!x)y+; else if (x=0) if(x)y+=2; else y+=3; printf(“%d/n“, y); 程序运行后的输出结果是_。(分数:2.00)A.0B.2C.1D.325.有以下程序 #includestdio.h main() int x; scanf(“%d“, if(x=3); else if(x!=10)printf(“%d/n“, x); 程序运行时,输入的值在哪个范围才会有输出结果?_。(分数:2.00)A.大于 3 或等于 10 的整数B.不等于 10 的整数C.大于

14、 3 且不等 10 的整数D.小于 3 的整数26.有如下嵌套的 if 语句 if(ab) if(ac) k=a; else k=c; else if(bc) k=b; else k=c; 以下选项中与上述 if 语句等价的语句是_。(分数:2.00)A.k=(ab)?(ac)?a:c):(bc)?b:c);B.k=(ab)?(bc)?a:b):(bc)?b:c);C.k=(ab)?a:b; k=(bc)?b:c;D.k=(ab)?a:b; k=(ac)?a:c;27.若有定义 int x, y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价

15、的是_。(分数:2.00)A.(x-y=0)B.(x-y0)C.(x-y0)D.(x-y0|x-y0)28.以下程序段中,与语句: k=ab?(bc?1:0):0; 功能相同的是_。(分数:2.00)A.if(ab)else k=0;B.if(ab)|(bc)k=1;else k=0;C.if(a=b) k=0;else if(b=c)k=1;D.if(ab)k=1;else if(bc)k=1;else k=0;29.有以下程序 #includestdio.h main() int x; for(x=3; x6; x+) printf(x%2)?(“*%d“):(“*%d“), x); pr

16、intf(“/n“); 程序的输出结果是_。(分数:2.00)A.*3#4*5B.#3*4#5C.*3*4#5D.*3#4#530.有以下程序 #includestdio.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; case 3:a+; b+; printf(“a=%d, b=%d/n“, a, b); 程序的运行结果是_。(分数:2.00)A.a=2, b=1B.a=2, b=2C.a=1, b=1D

17、.a=1, b=031.若有定义: float x=1.5; int a=1, b=3, c=2; 则正确的 switch 语句是_。(分数:2.00)A.switch(a+b) case 1:printf(“*/n“);case c:printf(“*/n“);B.switch(int)x);case 1:printf(“*/n“);case 2:printf(“*/n“);C.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);D.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/

18、n“);32.有以下程序 #includestdio.h main() int s; scanf(“%d“, while(s0) switch(s) case 1:printf(“%d“, s+5); case 2:printf(“%d“, s+4); break; case 3:printf(“%d“, s+3); default:printf(“%d“, s+1); break; scanf(“%d“, 运行时,若输入 1 2 3 4 5 0回车,则输出结果是_。(分数:2.00)A.6566456B.66656C.66666D.666665633.有以下程序段 int i, n; for

19、(i=0; i8; i+) n=rand()%5; switch(n) case 1: case 3:printf(“%d/n“, n); break; case 2: case 4:printf(“%d/n“, n); continue; case 0:exit(0); printf(“%d/n“, n); 以下关于程序段执行情况的叙述,正确的是_。(分数:2.00)A.当产生的随机数 n 为 4 时结束循环操作B.当产生的随机数 n 为 0 时结束程序运行C.当产生的随机数 n 为 1 和 2 时不做任何操作D.for 循环语句固定执行 8 次34.若有以下程序 #includestdio

20、.h main() int s=0, n; for(n=0; n4; n+) switch(n) default:s+=4; case 1:s+=1; break; case 2:s+=2; break; case 3:s+=3; printf(“%d/n“, s); 则程序的输出结果是_。(分数:2.00)A.13B.10C.11D.1535.有以下程序 #includestdio.h main() int a=2, 3, 5, 4, i; for(i=0; i4; i+) switch(i%2) case 0:switch(ai%2) case 0:ai+; break; case 1:a

21、i-; break; case 1:ai=0; for(i=0; i4; i+)printf(“%d“, ai); printf(“/n“); 程序运行后的输出结果是_。(分数:2.00)A.3 0 4 0B.2 0 5 0C.3 3 4 4D.0 3 0 436.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是_。(分数:2.00)A.(!E=0)B.(E0|E0)C.(E=0)D.(E!=0)37.要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,以下正确的程序段是_。(分数:2.00)A.while(ch=getchar()!=“N

22、“)printf(“%c“, ch);B.while(ch=getchar()=“N“)printf(“%c“, ch);C.while(ch=getchar()=“N“)printf(“%c“, ch);D.while(ch=getchar()=“N“)printf(“%c“, ch);38.对于 while(!E)s;,若要执行循环体 s,则 E 的取值应为_。(分数:2.00)A.E 等于 1B.E 不等于 0C.E 不等于 1D.E 等于 039.关于“while(条件表达式)循环体”,以下叙述正确的是_。(分数:2.00)A.循环体的执行次数总是比条件表达式的执行次数多一次B.条件表

23、达式的执行次数总是比循环体的执行次数多一次C.条件表达式的执行次数与循环体的执行次数一样D.条件表达式的执行次数与循环体的执行次数无关40.以下不构成无限循环的语句或语句组是_。(分数:2.00)A.n=0;do+n;)while(n=0);B.n=0;while(1)n+;C.n=10;while(n); n-;D.for(n=0, i=1;i+)n+=i;41.有以下程序 #includestdio.h main() int k=5; while(-k)printf(“%d“, k-=3); printf(“/n“); 执行后的输出结果是_。(分数:2.00)A.1B.2C.4D.死循环4

24、2.若有以下程序 #includestdio.h main() int a=-2, b=0; while(a+)+b; printf“%d, %d/n“, a, b); 则程序的输出结果是_。(分数:2.00)A.1, 2B.0, 2C.1, 3D.2, 343.有以下程序 #includestdio.h main() int a=-2, b=0; while(a+ printf(“%d, %d/n“, a, b); 程序运行后输出结果是_。(分数:2.00)A.0, 2B.0, 3C.1, 3D.1, 244.有以下程序 #includestdio.h main() int y=9; for

25、(;y0; y-) if(y%3=0)printf(“%d“, -y); 程序的运行结果是_。(分数:2.00)A.852B.963C.741D.87542145.有以下程序 #includestdio.h main() int i, j, m=1; for(i=1; i3; i+) for(j=3; j0; j-) if(i*j3)break; m*=i*j; printf(“m=%d/n“, m); 程序运行后的输出结果是_。(分数:2.00)A.m=6B.m=2C.m=4D.m=546.有以下程序 #includestdio.h main() int i; for(i=1; i=40;

26、i+) if(i+%5=0) if(+i%8=0)printf(“%d“, i); printf(“/n“); 执行后的输出结果是_。(分数:2.00)A.32B.24C.5D.40二级 C 语言-266 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.有以下程序 #includestdio.h main() int a=3; printf(“%d/n“, (a+=a-=a*a); 程序运行后的输出结果是_。(分数:3.00)A.-12 B.9C.0D.3解析:解析 先执行 a-=a*a 后 a 为-6,再执行 a+=a,a 为-12。所以

27、选择 A。2.若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是_。(分数:3.00)A.x+1=yB.+x, y=x- C.x=x+10=x+yD.double(x)/10解析:解析 x+1 和 x+10 不能做左值,A 和 C 错误;类型转换需要用括号括起类型名,所以 D 错误。3.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是_。(分数:3.00)A.x=y=5; B.x=n%2.5;C.x+n=i;D.x=5=4+1;解析:解析 %取余操作数只能是整数,x+n 和数值 5 不能作为赋值的左值,所以 B、C、D 错误。4.若变量已正确定义为 int 型,要通过语

28、句 scanf(“%d, %d, %d“, 给 a 赋值 1、给 b 赋值 2、给 c 赋值 3,以下输入形式中错误的是(注:代表一个空格符)_。(分数:3.00)A.1, 2, 3回车B.1, 2, 3回车C.1, 2, 3回车D.123回车 解析:解析 本题考查的是格式化输入函数 scanf()基本用法。使用该语句时,要求除格式控制符以外的字符都要原样输入,“,”为非格式符,要原样输入。选项 D 中没有输入非格式符“,”,所以是不正确的。5.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, 语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符

29、X 和 Y。以下所示的输入形式中正确的是(注:代表空格字符)_。(分数:3.00)A.10X回车20Y回车 B.10X20Y回车C.10X回车20Y回车D.10X20Y回车解析:解析 考查的知识点是:数据输入。scanf 函数是 C 语言提供的标准输入函数,作用是在终端设备(或系统隐含指定的输入设备)上输入数据。scanf()函数的一般形式为:scanf(格式控制,输入项表);本题中的格式控制字符串是“%d%c%d%c”,其中%d 表示要输入的是整数;%c 则表示输入的是字符,且各控制符之间无任何分隔字符,故要求输入的数据之间也不能分开(若要求连续输入的都是数据类型,则必须以空格等空白字符分隔

30、每个数据,因为系统不知道应该如何去分隔这一系列数据)。而选项 B、C、D 在10 和 X 之间均插入空格,所以不正确。6.有如下程序段: int x=12; double y=3.141593; printf(“%d%8.6f“, x, y); 其输出结果是_。(分数:3.00)A.12,3.141593B.12 3.141593C.123.141593 D.123.1415930解析:解析 x 和 y 之间没有间隔符,%8.6f 表示占据 8 个字符,小数点后有 6 位,所以答案为 C。7.若有定义: int a, b; 通过语句 scanf(“%d; %d“, 能把整数 3 赋给变量 a,

31、5 赋给变量 b 的输入数据是_。(分数:3.00)A.3,5B.3;5 C.3 5D.35解析:解析 scanf 中格式控制符里必须原样输入,所以分号也必须输入,B 正确。8.若有定义 int a; float b; double c; 程序运行时输入: 3 4 5回车 能把值 3 输入给变量 a、4 输入给变量 b、5 输入给变量 c 的语句是_。(分数:3.00)A.scanf(“%lf%lf%lf“, B.scanf(“%d%lf%lf“, C.scanf(“%d%f%f“, D.scanf(“%d%f%lf“, 解析:解析 int,float,double 对应的格式控制符分别为%d

32、,%f,%lf,所以答案选择 D。9.以下叙述中正确的是_。(分数:2.00)A.赋值语句是一种执行语句,必须放在函数的可执行部分 B.scanf 和 printf 是 C 语言提供的输入和输出语句C.由 printf 输出的数据都隐含左对齐D.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的解析:解析 scanf 和 printf 是输入输出函数,不是语句,B 错误。printf 输出如果有宽度控制,默认是右对齐,C 错误。数据的实际精度是由数据存储类型决定的,double 精度高于 float,D 错误。赋值语句需要放在可执行语句,所以 A 正确。10.以

33、下叙述中正确的是_。(分数:2.00)A.在 scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符 B.只能在 printf 函数中指定输入数据的宽度,而不能在 scanf 函数中指定输入数据占的宽度C.scanf 函数中的字符串是提示程序员的,输入数据时不必管它D.复合语句也被称为语句块,它至少要包含两条语句解析:解析 scanf 函数中可以用%3d 等形式指定输入数据占的宽度,scanf 函数中的字符串必须原样输入才可以正确赋值,复合语句是用大括号包含在一起的语句,可以只有一条语句,综合以上,答案选择A。11.有以下程序 #includestdio.h main() int

34、a=2, c=5; printf(“a=%d, b=%d/n“, a, c); 程序的输出结果是_。(分数:2.00)A.a=2, b=5B.a=%2, b=%5C.a=%d, b=%d D.a=%d, b=%d解析:解析 格式化输出函数两个%会输出一个%,同时即失去了占位符的作用,d 也会原样输出,所以答案选择 C。12.有以下程序 #includestdio.h main() int a1, a2; char c1, c2; scanf(“%d%c%d%c“, printf(“%d, %c, %d, %c“, a1, c1, a2, c2); 若想通过键盘输入,使得 a1 的值为 12,a

35、2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下代表空格,CR代表回车)_。(分数:2.00)A.12a34bCR B.12a34bCRC.12, a, 34, bCRD.12a34bCR解析:解析 在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。因此应按选项 A 的顺序输入数据。13.有以下程序段 #includestdio.h int a, b, c; a=10; b=50; c=30; if(ab)a=b, b=c; c=a; printf(“a=%d b=%d c=%d/n“,

36、 a, b, c); 程序的输出结果是_。(分数:2.00)A.a=10 b=50 c=30B.a=10 b=50 c=10 C.a=10 b=30 c=10D.a=50 b=30 c=50解析:解析 本题中 ab 的条件不满足,因此不执行逗号表达式“a=b, b=c;”的操作,而是执行“c=a”的操作,即 c 的值为 10。故本题答案为 B。14.有以下程序 #includestdio.h main() char a, b, c, d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%c/n“, a, b, c, d); 当执行程

37、序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符) 12CR 34CR 则输出结果是_。(分数:2.00)A.123 B.12C.1234D.1234解析:解析 本题的考查点是 C 语言字符数据的输入和输出。程序定义了四个字符型变量 a、b、c、d,字符型变量只能存放一个字符。getchar()函数的值就是从输入设备得到的字符,在输入时,空格、回车符将作为字符读入,请注意,getchar()只能接收一个字符。所以变量 a 被赋予 1,变量 b 被赋予 2,变量c 被赋予回车符,变量 d 被赋予 3,所以选项 A 正确。15.若变量已正确定义,在 if(W)pri

38、ntf(“%d/n“, k);中,以下不可替代 W 的是_。(分数:2.00)A.ch=getchar()B.ab+c C.a=b+cD.a+解析:解析 选项 B 是非法的表达式,C 语言中没有“”运算符。16.以下叙述中正确的是_。(分数:2.00)A.分支结构是根据算术表达式的结果来判断流程走向的B.在 C 语言中,逻辑真值和假值分别对应 1 和 0C.对于浮点变量 x 和 y,表达式:x=y 是非法的,会出编译错误D.关系运算符两边的运算对象可以是 C 语言中任意合法的表达式 解析:解析 逻辑真值和假值分别对应非零和零;对于浮点变量 x 和 y,表达式“x=y”是合法的;分支结构是根据表

39、达式的真假来判断流程走向的。所以选择 D。17.设有定义: int a=1, b=2, c=3; 以下语句中执行效果与其它三个不同的是_。(分数:2.00)A.if(ab)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;解析:解析 选项 B、Dif 语句后都是一条复合语句;选项 Cif 语句后是一条语句,选项 A 之后有 3 条语句,所以答案选择 A。18.if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是_。(分数:2.00)A.必须是正数B.必须是

40、整数值C.可以是任意合法的数值 D.必须是逻辑值解析:解析 “表达式”的值类型可以是合法的数值,但是都分为两类,0 是假,非 0 是真。19.若有以下程序 #includestdio.h main() int a=1, b=2, c=3, d=4; if(a=2)|(b=1)c=2; if(c=3) printf(“%d, %d, %d, %d/n“, a, b, c, d); 则程序的输出结果是_。(分数:2.00)A.2, 2, 2, 4B.2, 1, 2, -1C.5, 1, 2, -1D.1, 2, 3, 4 解析:解析 执行第一个 if 语句,a=2,b=1,两个条件都不成立,所以

41、if 表达式为假,故不执行任何操作,执行第二个 if 语句,判定 c=3 为真,d=-1 为假,所以 if 表达式为假,故不执行任何操作,所以最后输出 a,b,c,d 的值为:a=1,b=2,c=3,d=4,故选 D。20.若有以下程序 #includestdio.h main() int a=1, b=2, c=3, d=4; if(a=2) if(c=3)|(d=-1)a=5; printf(“%d, %d, %d, %d/n“, a, b, c, d); 则程序的输出结果是_。(分数:2.00)A.5, 1, 2, -1 B.2, 1, 2, -1C.2, 2, 2, 4D.1, 2,

42、3, 4解析:解析 执行第一个 if 语句,a 赋值为 2,b 赋值为 1,if 表达式的值为真,故而 c 为 2;执行第 2个 if 语句,c 值不变,d 赋值为 2,再看 if 表达式的条件,“c=3”的值为假(0),“d=-1”的值为真(1),两个结果再进行“|”运算后,结果为真,所以 a 又被赋值为95。最后 a=5,b=1,c=2,d=-1,故选A。21.有以下程序 #includestdio.h main() int a=0, b=0, c=0, d=0; if(a=1)b=1; c=2; else d=3; printf(“%d, %d, %d, %d/n“, a, b, c,

43、d); 程序输出_。(分数:2.00)A.0, 0, 0, 3B.编译有错 C.1, 1, 2, 0D.0, 1, 2, 0解析:解析 本题中 if(a=1)b=1;与 else d=3;之间多了语句 c=2;因此会出现 else 语句的位置错误的编译失败提示。22.有以下计算公式: (分数:2.00)A.y=sqrt(x);if(x0)y=sqrt(-x); B.if(x=0)y=sqrt(x);else y=sqrt(-x);C.if(x=0) y=sqrt(x);if(x0)y=sqrt(-x);D.y=sqrt(x=0?x:-x);解析:解析 应该先判断 x 是正数还是负数,然后再调用

44、 sqrt 函数,A 选项开始没有判断,所以 A 错误。23.下列条件语句中,输出结果与其他语句不同的是_。(分数:2.00)A.if(a)printf(“%d/n“, x); else printf(“%d/n“, y);B.if(a=0)printf(“%d/n“, y); else printf(“%d/n“, x);C.if(a!=0)printf(“%d/n“, x); else printf(“%d/n“, y);D.if(a=0)printf(“%d/n“, x); else printf(“%d/n“, y); 解析:解析 若 a 为 0,D 选项输出 x,其他输出 y,所以选

45、择 D。24.有以下程序 #ineludestdio.h main() int x=1, y=0; if(!x)y+; else if (x=0) if(x)y+=2; else y+=3; printf(“%d/n“, y); 程序运行后的输出结果是_。(分数:2.00)A.0 B.2C.1D.3解析:解析 (!x)为假,然后判断(x=0),为假,最后就执行输出语句,y 的值仍为初始值,答案选择A。25.有以下程序 #includestdio.h main() int x; scanf(“%d“, if(x=3); else if(x!=10)printf(“%d/n“, x); 程序运行时

46、,输入的值在哪个范围才会有输出结果?_。(分数:2.00)A.大于 3 或等于 10 的整数B.不等于 10 的整数C.大于 3 且不等 10 的整数 D.小于 3 的整数解析:解析 大于 3 执行 else 语句,不等于 10,就会输出 x 的值,所以选择 C。26.有如下嵌套的 if 语句 if(ab) if(ac) k=a; else k=c; else if(bc) k=b; else k=c; 以下选项中与上述 if 语句等价的语句是_。(分数:2.00)A.k=(ab)?(ac)?a:c):(bc)?b:c); B.k=(ab)?(bc)?a:b):(bc)?b:c);C.k=(ab)?a:b; k=(bc)?b:c;D.k=(ab)?a:b; k=(ac)?a:c;解析:解析 if else 语句和?:可以互换,?前语句相当于 if 后括号内容,?号后语句相当于 if 后的执行语句,冒号后语句相当于 else 后语句,综合以上可以看出 A 符合题意。27.若有定义 int x, y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+

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

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

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