ImageVerifierCode 换一换
格式:DOC , 页数:30 ,大小:71.50KB ,
资源ID:497958      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-497958.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷2及答案与解析.doc)为本站会员(livefirmly316)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷2及答案与解析.doc

1、国家二级 C语言机试( C语言程序设计)模拟试卷 2及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)赋值语句是一种执行语句,必须放在函数的可执行部分 ( B) scanf和 printf是 C语言提供的输入和输出语句 ( C)由 printf输出的数据都隐含左对齐 ( D)由 printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的 2 有如下程序段: int x=12; double y=3 141593; printf(“ d 8 6f“, x, y); 其输出结果是 ( A) 12, 3 141593 ( B) 12, 3 141593 ( C) 123 1

2、415930 ( D) 123 141593 3 有以下程序 main() int a=2, c=5: printf(“a= d, b= d n“, a,c); 程序的输出结果是 ( A) a= 2, b= 5 ( B) a= d, b= d ( C) a=2, b=5 ( D) a= d, b= d 4 若变量已正确定义为 int型,要通过语句 scanf(“ d, d, d“, &a, &b,&c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (注: 代表一个空格符 ) ( A) 1, 2, 3 ( B) 1, 2, 3 ( C) 1, 2, 3 ( D) 12

3、3 5 设有定义: int a: float b;执行 scanf(“ 2d f“, &a, &b);语句时,若从键盘输入 876 543 0则 a和 b的值分别是 ( A) 876和 543 0 ( B) 87和 6 0 ( C) 87和 543 0 ( D) 76和 543 0 6 若有定义 int a: float b: double c;程序运行时输入: 3 4 5能把值 3输入给变量a、 4输入给变量 b、 5输入给变量 C的语句是 ( A) scanf(“ d 1f 1f“, a, b, &c); ( B) scanf(“ d f 1f“, &a, &b, &c); ( C) sc

4、anf(“ d f 1=“, &a, &b, &c); ( D) scanf(“ 1f 1f 1f“, &a, &b, &c); 7 以下叙述中正确的是 ( A)当用 scanf从键盘输入数据时,每行数据在没按下同车键 (Enter键 )前,可以任意修改 ( B)花括号对 只能用来表示函 数的开头和结尾,不能用于其他目的 ( C)空语句就是指程序中的空行 ( D)复合语句在语法上包含多条语句,其中不能定义局部变量 8 以下叙述中正确的是 ( A)在 scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符 ( B)只能在 printf函数中指定输入数据的宽度,而不能在 scanf函数中

5、指定输入数据占的宽度 ( C) scanf函数中的字符串,是提示程序员的,输入数据时不必管它 ( D)复合语句也被称为语句块,它至少要包含两条语句 9 有以下程序 #include main() char c1, c2, c3, c4, c5, c6; scanf(“ c c c c“, &c1, &c2, &c3, &c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“ c c n“, c5, c6); ) 程序运行后,若从键盘输入 (从第 1列开始 )123 45678则输出结果是 ( A) 1256 ( B

6、) 1278 ( C) 1245 ( D) 1267 10 以下程序段完全正确的是 ( A) int k, *p=&k; scanf(“ d“, p); ( B) int*p; scanf(“ d“, p); ( C) int*p; scanf(“ d“, &p); ( D) int k, *p; *p=&k; scanf(“ d“, p); 11 有以下程序段 intj; float y; char name50; scanf(“ 2d f s“, &j, &y, name); 当执行上述程序段,从键盘上输入 55566 7777abc后, Y的值为 ( A) 55566 0 ( B) 77

7、77 0 ( C) 566 0 ( D) 566777 0 12 有以下程序 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); ) 程序输出 ( A) 0, 0, 0, 3 ( B) 1, 1, 2, 0 ( C)编译有错 ( D) 0, 1, 2, 0 13 若变量已正确定义,在 if(W)printf(“ d n“, k);中,以下不可替代 W的是 ( A) ch=getchar() ( B) a=b+c ( C) a b+c ( D) a+ 14 设

8、有定义: int a=1, b=2, c=3;以下语句中执行效果与其它三个不同的是 ( A) if(ab)c=a; a=b; b=c; ( B) if(a b)c=a, a=b, b=c; ) ( C) iffab)c=a, a=b, b=c; ( D) if(a b)c=a; a=b; b=c; ) 15 有如下嵌套的 if语句 if(a b) if(a c)k=a; else k=c; else if(b c)k=b; else k=c; 以下选项中与上述 if语句等价的语句是 ( A) k=(a b)?(bc)?b: c); ( B) k=(a c)?b: c; ( C) k=(a c)

9、?a: c; ( D) k=(a b)?(a c)?a: c): (b c)?b: c); 16 有以下程序 #include main()int x; scanf(“ d“, &x); iffx =3); else if(x!=10)printf(“ d n“, x); 程序运行时,输入的值在哪个范围才会有输出结果 ( A)不等于 10的整数 ( B)大于 3或等于 10的整数 ( C)小于 3的整数 ( D)大于 3且不等 10的整数 17 下列条件语句中,输出结果与其他语句不同的是 ( A) if(a=0)printf(“ d n“, x); else printf(“ d n“, y)

10、; ( B) if(a=0)printf(“ dkn“, y); else printf(“ d n“, x); ( C) if(a!=0)printf(“ dha“, x); else printf(“ d n“, y); ( D) if(a)printf(“ dkn“, x); else printf(“ d n“, y); 18 若有以下程序 #include main() int a=1, b=2, c=3, d=4, r=0; if(a!=1); else r=1; if(b=2)r+=2; else; if(c!=3)r+=3; else; if(d=4)r+=4; printf(

11、“ d n“, r); 则程序的输出结果是 ( A) 10 ( B) 6 ( C) 7 ( D) 3 19 若有以下程序 main() int a=1, b=2, c=3, d=4, r=0; if(a!=1); else r=1; if(b=2)r+=2; if(c!=3); r+=3; if(d=4)r+=4; printf(“ d n“, r); 则 程序的输出结果是 ( A) 7 ( B) 10 ( C) 6 ( D) 3 20 有以下程序 main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a+: br

12、eak; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a= d, b= d n“, a, b); 程序的运行结果是 ( A) a=2, b=2 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=1 21 下列叙述中正确的是 ( A)在 switch语句中必须使用 default ( B) break语句必须与 switch语句中的 case配对使用 ( C)在 switch语句中,不一定使用 break语句 ( D) break语句只能用于 switch语句 22 以下选项中与

13、 if(a=1)a=b; else a+;语句功能不同的 switch语句是 ( A) switch(a=1)case 0: a: b; break; case 1: a+; ) ( B) switch(a)case 1: a=b; break; default: a+; ) ( C) switch(a)default: a+; break; case 1: a=b; ( D) switch(a=1)case 1: a=b; break; case 0: a+; ) 23 若以下选项中的变量 a, b, y均已正确定义并赋值,则语法正确的 switch语句是 ( A) switch(a*a+b

14、*b)default: break; case 3: y=a+b; break; case 2: y=a b;break; ) ( B) switch(a+b)case1: case3: y=a+b; break; case0: case4: y=a-b; ) ( C) switch(a+9)case a: y=a-b; case b: y=a+b; ( D) switch a*bcase 10: y=a+b; default: y=a-b; ) 24 关于 “while(条件表达式 )循环体 ”,以下叙述正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的

15、执行次数 与循环体的执行次数一样 ( C)条件表达式的执行次数总是比循环体的执行次数多一次 ( D)条件表达式的执行次数与循环体的执行次数无关 25 有以下程序 main() int k=5: while(-k) printf(“ d“, k-=3); printf(“ n“); 执行后的输出结果是 ( A) 2 ( B) 4 ( C) 1 ( D)死循环 26 有以下程序 #include void main() int s; scanf(“ d“, &s); while(s 0) switch(s) case 1: printf(“ d“, s+5); case 2: printf(“ d

16、“, s+4); break; case 3: printf(“ d“, s+3); default: printf(“ d“, s+1); break; scanf(“ d“, &s); 运行时,若输入 1 2 3 4 5 0,则输出结果是 ( A) 66656 ( B) 6566456 ( C) 66666 ( D) 6666656 27 在以下给出的表达式中,与 while(E)中的 (E):不等价的表达式是 ( A) (E 0E 0) ( B) (!E=0) ( C) (E!=0) ( D) (E=0) 28 若有以下程序 main() int a=-2b=0; while(a+) +

17、b: pfintf(“ d, d n“, a, b); 则程序的输出结果是 ( A) 0 2 ( B) 1, 2 ( C) 1, 3 ( D) 2, 3 29 有以下程序 main() int a=-2, b=0; while(a+&+b); printf(“ d, dkn“, a, b); 程序运行后输出结果是 ( A) 0, 3 ( B) 1, 2 ( C) 1, 3 ( D) 0, 2 30 以下不构成无限循环的语句或语句组是 ( A) n=0; do+n; )while(n =0); ( B) n=0; while(1)n+; ) ( C) n=10; while(n); n-; (

18、D) for(n=0, i=1; i+)n+=i; 31 若变量已正确定义,有以下程序段 i=0: do printff“ d, “, i); while(i+); printf(“ d n“, i);其输出结果是 ( A) 0 0 ( B) 1, 1 ( C) 0 1 ( D)程序进入无限循环 32 有以下程序 main() int a=3; do printf(“ d, “, a-=2); )while(!(-a); printf(“ n“); 程序运行后的输出结果是 ( A) 1, ( B) 1, -2, ( C) 3, 0, ( D) 1,0 33 有以下程序 #include mai

19、n() int y=9; for(; y 0; y-) if(y 3=0)printf(“ d“, -y); 程序的运行结果是 ( A) 963 ( B) 852 ( C) 741 ( D) 875421 34 有以下程序 #include void main() int c=0, k; for(k=1; k 3; k+) switch(k) default: c+=k; case 2: c+; break; case 4: c+=2; break; printf(“ d n“, c); ( A) 9 ( B) 7 ( C) 5 ( D) 3 35 有以下程序 main() int i; fo

20、r(i=l; i =40; i+) if(i+ 5=0) if(+i 8=0)printf(“ d“, i); printf(“ n“); 执行后的输出结果是 ( A) 24 ( B) 5 ( C) 32 ( D) 40 36 有以下程序 main() int a=1, b=2; for(; a 8; a+) b+=a: a+=2: printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( A) 8, 11 ( B) 10, 14 ( C) 7, 11 ( D) 9 18 37 若有以下程序 main() int a=6, b=0, c=0; for(; a; ) b+=a

21、: a=+c: printf(“ d, d, d n“, a,b, c); 则程序的输出结果是 ( A) 1, 14, 3 ( B) 0, 18, 3 ( C) 0, 14, 3 ( D) 0, 14, 6 38 以下叙述中正确的是 ( A)对于 “for(表达式 1;表达式 2;表达式 3)循环体 ”首先要计算表达式 2的值,以便决定是否开始循环 ( B)对于 “for(表达式 1;表达式 2;表达式 3)循环体 ”,只在个别情况下才能转换成 while语句 ( C)只要适当地修改代码,就可以将 do-while与 while相互转换 ( D)如果根据算法需要 使用无限循环 (即通常所称的

22、“死循环 ”),则只能使用 while语句 39 以下程序段中的变量已正确定义 for(i=0; i 4; i+, i+) for(k=1; k 3; k+); printf(“*“); 程序段的输出结果是 ( A) * ( B) * ( C) * ( D) * 40 有以下程序 #inc lude main() int i, j, m=55; for(i=1; i =3; i+) for(j=3; j =i, j+)m=m j; printf(“ d n“, m); 程序的运行结果是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 41 有以下程序 main() int ij, x=

23、0; for(i=0; i 2; i+) x+; for(j=0; j =3; j+) if(j 2)continue; x+; x+; printf(“x= d n“x); 程序执行后的输出结果是 ( A) x=4 ( B) x=6 ( C) x=12 ( D) x=8 42 以下叙述中正确的是 ( A) continue语句的作用是:使程序的执行流程跳出包含它的所有循环 ( B) break语句只能用在循环体内和 switch语句体内 ( C)在循环体内使用 break语句和 continue语句的作用相同 ( D) break语句只能用于 switch语句体中 国家二级 C语言机试( C

24、语 言程序设计)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 C语言本身没有提供输入输出语句,但是可以通过调用标准库函数中提供的输入和输出函数来实现输入和输出,选项 B)错误;采用 printf输出数据,输出数据都默认为右对齐,若要左对齐,可以在格式控制中的 “ ”和宽度之间加一个 “-”号来实现,选项 C)错误: printf的输出精度由变量的类型决定,与域宽无关,选项 D)错误。 【知识模块】 C语言程序设计 2 【正确答案】 D 【试题解析】 本题考查 printf语句。 printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序

25、时经常会用到此函数。 printf()函数的调用格式为: printf(“格式化字符串 “,参量表 )。 其中, “格式化字符串 ”包括两部分内容:一部分是正常字符,这些字符将按原样输出: 另一部分是格式化规定字符,以 “ ”开始,后跟一个或几个规定字符,用来确定输出内容格式。 格式化字符串的格式是: 标志 输出最小宽度 精度 长度 格式字符 标志:标志字符为 -、 +、空格等,其意义如下所示: -:结果左对齐,右边填空格; +:输出符号 (正号或负号 ); 空格:输出值为正时冠以空格,为负时冠以负号。 输出最小宽度:用十进制整数来表示输出的最少位数 (包括小数点在内至少要输出这么多位 )。

26、若实际位数多于定义的宽度,则按实际位数输出: 若实际位数少于定义的宽度,则右对齐,左边留空; 有负号,左对齐,右边留空: 表示宽度的数字以 0开始,则右对齐,左边留空。 精度:精度格式符 以 “ ”开头,后跟十进制整数。它的意义是:如果输出数字,则表示小数的位数,若实际位数大于所定义的精度数,则四舍五入,若不足则补 0;如果输出的是字符,则表示输出字符的个数,若实际位数大于所定义的精度数,则截去超过的部分: 长度:长度格式符为 h和 l两种, h表示按短整型量输出, 1表示按长整型量输出。 【知识模块】 C语言程序设计 3 【正确答案】 B 【试题解析】 输出 “ ”,可以在格式控制中用 “

27、”表示,将输出一个 “ ”,而没有表示格式符的开始, d不能表示格式符,因此仅输出: a= d, b=d。 【知识模块】 C语言程序设计 4 【正确答案】 D 【试题解析】 本题主要考查 scanf函数的输入格式问题。 scanf函数的一般形式为: scanfi(格式控制字符串,地址 1,地址 2, ); 格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成: 格式说明符由 “ ”和格式字符组成,如 c, d, s, f等。其作用是将输入的 数据转换为指定的格式,赋给 scanf的二个参量 (是地址 1)所指定的内存单元 (可能一次使用多个 )中。格式说 明以 “ ”字符为标志。

28、 普通字符,是需要用户在输入时原样输入的字符。 在本题中格式控制字符串为 “ d, d, d”,表示按十进制输入三个数据。要求在输入数据时,两个数据间一定以一个逗号 “, ”作为间隔符。 【知识模块】 C语言程序设计 5 【正确答案】 B 【试题解析】 在输入函数 scanf的输入格式符 2d f中, 2d表示输入的数据的宽度为 2,所以当从键盘输入 876543 0 CR时,这时把输入数字串的前两位87赋给变量 a,然后将紧接着将 6按照格式控制符 f的形式赋给变量 b,所以 b的值为 6 000000。 【知识模块】 C语言程序设计 6 【正确答案】 B 【试题解析】 scanf函数进行输

29、入的时候,默认的输入间隔为空格、跳格和回车,变量 a、 b和 c均为数值型数据,输入时间隔为空格,因此 scanf函数的第一个表示格式的参数之间不用加入分隔符,而要输入 double型数据,格式控制必须用 1f(或 1e)。否则,数据不能正确输入。 【知识模块】 C语言程序设计 7 【正确答案】 A 【试题解析】 当使用 scanf函数从键盘输入数据时,每行数据在未按 下回车键之前,可以任意修改。但按下回车键后, scanf函数即接受了这一行数据,不能再修改。选项 A)正确,对于选项 B), 还可以表明复合语句的开头结尾,或者循环体的开头结尾等,选项 B)错误,而空语句为;,不是空行,选项 C

30、)错误,在复合语句中可以定义变量为局部变量,选项 D)错误。 【知识模块】 C语言程序设计 8 【正确答案】 A 【试题解析】 输入函数的调用格式: Scanf(格式控制,输入项 1,输入项 2, ) 格式控制的主要作用是指定输 入时的数据转换格式,格式串中,必须含有与输入项一一对应的格式转换说明符选项 A)正确,在 scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度,选项 B)错误, scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出,选项

31、C)错误,复合语句还可以是空语句昵,并没有规定语句条数,选项 D)错误。 【知识模块】 C语言程序设计 9 【正确答案】 C 【试题解析】 当用 scanf函数从键盘输入数据时,每行数据的未尾按下回车键(Enter键 )之前,可以任意修改。但按下回车键 putchar(c1)(Enter键 )之后, scanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入 123 CR时,变量 c1、 c2、 c3的值分别为 1、 2、 3,当输入 45678 CR时,变量 c5、 c6的值 4和 5。所以用输出函数 putchar(c1)输出 1, putchar(c2)输出 2, printf

32、(“c c n“, c5, c6)输出 45。 【知识模块】 C语言程序设计 10 【正确答案】 A 【试题解析】 选项 B)没有对指针进行初始化,无效指针。选项 C)错在没有对指针进行初始化,无效指针,并且在 scanf(“ d“, &p)中无需再进行取地址操作。选项 D),语句 *p=&k;的左端 *p是指针所指内存空间的值, &k是地址,应为p=&k。 【知识模块】 C语言程序设计 11 【正确答案】 C 【试题解析】 因为在输入格式控制符中指定变量 j的输入格式控制符为 “ 2d”,即变量 j所占的宽度为 2,所以变量 j只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被

33、 保存到变量 y中,因为 y为浮点型数据,所以输出结果为选项 C)。 【知识模块】 C语言程序设计 12 【正确答案】 C 【试题解析】 if语句的格式为: if(表达式 ) 语句 1 else 语句 2 if和 else是 C语言的关键字。 “语句 1”称为 if子句, “语句 2”称为 else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目if(a=1)b=1; c=2; else d=3; if分支有两条语句,没构成复合语句。 【知识模块】 C语言程序设计 13 【正确答案】 C 【试题解析】 在 if()语句的括号是一个合法的 C语言表达式即可,如果表达

34、式的值为 0,则不执行 if语句,否则执行 if语句,而在选项 C)中,符号不是 C语言的合法运算符,如果要表达 a大于或小于 b+c可用 a!_b+c或 (a b+c)(a b+c)来表达,而不能使用 a b+c。所以它不是一个合法的 C语言表达式。 【知识模块】 C语言程序设计 14 【正确答案】 A 【试题解析】 在 C语言中,用分号表示一条语句的结束,用 把几条语句放在一块表示 一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B)、 C)、 D)表示的功能相同,而选项 A)表示的是一条 if语句,两条赋值语句。 【知识模块】 C语言程序设计 15 【正确答案】 D 【试

35、题解析】 嵌套的 if else语句的含义是,在变量 a的值小于变量 b的值,同时,变量 a的值小于变量 c的值时,把变量 a的值赋给变量 k。在变量 a的值小于变量 b的值,同时,变量 a的值大于等于变量 c的值时,把变量 c的值赋给变量k。在变量 a的值大于等于变量 b的值,同时,变量 b的值小于变量 c的值时,把变量 b的值赋给变量 k。在变量 a的值大于等于变量 b的值,同时,变量 b的值大于等于变量 c的值时,把变量 c的值赋给变量 k。 【知识模块】 C语言程序设计 16 【正确答案】 D 【试题解析】 题目中,虽然 else和第二个 if不在同一行上,但等价于在同一行上,因此,程

36、序的意思是当 x大于 3且不等于 10时打印出来。 【知识模块】 C语言程序设计 17 【正确答案】 A 【试题解析】 选项 B)、 C)、 D)这三条语句都是在变量不等于 0的情况下,输出x:等于 0的情况下输出 y,而选项 A)则正好相反。 【知识模块】 C语言程序设计 18 【正确答案】 C 【试题解析】 程序代码中有四条并列的 if语句,第一条 if表达式 a!_l不成立,执行 else分支, r=l;第二条 if表达式 b=2成立,执行 r+=2, r=3;第三条 if语句 c!=3不成立,执行 else分支,分支为空语句;第四条 if分支 d=4成立,执行该 if分支语句, r+=

37、4, r=7。 【知识模块】 C语言程序设计 19 【正确答案】 B 【试题解析】 程序代码中有四条并列的 if语句,第一条 if表达式 a!=l不成立,执行 else分支, r=1;第二条 if表达式 b=2成立,执行 r+=2, r=3;第三条 if语句 c!=3不成立,执行语句 r+=3,r=6:第四条 if分支 d=4成立,执行该 if分支语句, r+=4, r=10。 【知识模块】 C语言程序设计 20 【正确答案】 D 【试题解析】 本题考查的是用 switch语句实现多分支选择结构,首先进入第一个 switch(x)判断,进入 case 1中进行嵌套判断,如果 switch(y)

38、也成立, a自加 1,遇到 break,退出嵌套,接着执行 case 2, a自加为 2, b自加为 1, 遇到 break,结束循环,此时 a=2, b=1。 【知识模块】 C语言程序设计 21 【正确答案】 C 【试题解析】 break为 C语言关键字,又称间断语句。 break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在 switch语句中,也可以出现在循环语句中。 default是关键字,起标号的作用,代表所有 case标号之外的那些标号。 default标号可以出现在语句体中任何标号位置上。在 switch语句体中也可以没有 default标号。 【知识模块】 C语言程

39、序设计 22 【 正确答案】 A 【试题解析】 ifelse语句的含义是,如果变量 a的值等于 1,则把变量 b的值赋给变量 a,否则,变量 a的值加 1。在本题的 4个选项中,与其含义不同的是选项A),表示如果变量 a的值等于 1,则把变量 a的值加 1,否则,把变量 b的值赋给变量 a。 【知识模块】 C语言程序设计 23 【正确答案】 A 【试题解析】 使用 switch语句直接处理多个分支,其一般形式为: switch(表达式 ) case常量表达式 1: 语句 1; break; case常量表达式 2: 语句 2; break; case常量表达式 n: 语句 n; break;

40、default: 语句 n+1: break; switch语句的执行流程是:首先计算 switch后面圆括号中表达式的值,然后用此值依次与各个 case的常量表达式比较,若圆括号中表达式的值与某个 case后面的常量表达式的值相等,就执行此 case后面的语句,执行后遇 break语句就退出switch语句;若圆括号中表达式的值与所有 case后面的常量表达式都不等,则执行 default后面的语句 n+1,然后退出 switch语句。对于选项 B), case语句和常量之间没有空格,而选项 C)中的 case后面为变量,选项 D)中 switch后面没给出圆括号。 【知识模块】 C语言程序

41、设计 24 【正确答案】 C 【试题解析】 while语句中表达式是循环条件,语句为循环体。 while语句中当表达式计算的值为真 (非 0)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多 一次。 【知识模块】 C语言程序设计 25 【正确答案】 C 【试题解析】 在程序语句中, k的初始值为 5,进行第 1次 while循环后, k自减1为 4,非 0,执行循环体里的 prinff语句,输出 1,此时 k的值变为 1。程序执行第 2次循环时, k自减 1变为 0,为假,退出 while循环语句。所以程序的最后结果为 l。 【知识模块】 C语言程序设计 26 【正确答案】 B 【试

42、题解析】 这道试题主要考查了 switch和 break语句,当变量 s的值为 1时,执行 Case0、 case 2两条语句, 输出 65;当变量 s的值为 2时,执行 case 2语句,输出 6;变量 s的值为 3时,执行 case3、 default两条语句,输出 64;变量 s的值为 4时,执行 default语句,输入 5;变量 s的值为 5时,执行 default语句,输出6;变量 s的值为 0时,程序运行结束。 【知识模块】 C语言程序设计 27 【正确答案】 A 【试题解析】 在 while(E)中,表达式 E可以是 C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是

43、否执行。在选项 A)中表达式 E 0E 0是一个逻辑表达式。 【知 识模块】 C语言程序设计 28 【正确答案】 B 【试题解析】 循环体执行两次,第一次表达式 a+值为 -2, a的值为 -1,执行循环体 +b, b值为 1,第二次表达式 a+值为 -1, a的值等于 0,执行 +b, b值为2,第三次判断条件 a+,表达式值为 0,不执行循环体,但是条件判断以后, a的值为 1。 【知识模块】 C语言程序设计 29 【正确答案】 B 【试题解析】 循环体为空,共执行 2次。第一次变量 a初值为 -2, b初值为 0,表达式 a+&+b值为 1,同时 a的值为 -1, b的值为 1,第 二次

44、循环条件判断以后, a的值为 0, b的值 2,执行循环体空,第三次判断条件表达式值为 0,不执行循环体,而 a的值为 1,但是表达式 a+的值为 0,因此不计算表达式 +b的值, b的值仍为 2。 【知识模块】 C语言程序设计 30 【正确答案】 A 【试题解析】 选项 B)中 whilet(1)永远为真所以进入死循环,选项 C)中while(n=10)同理,选项 D)中 for循环没有循环限定条件也将进入无限循环,只有选项 A)中 while(n =0)循环判定成立,循环将不进入无限循环。 【知识模块】 C语言 程序设计 31 【正确答案】 C 【试题解析】 dowhile 循环的执行过程

45、如下: 执行 do后面的循环体中的语句。 计算 while后一对圆括号中表达式的值。当值为非 0时,转去执行步骤 ;当值为 0时,执行步骤 。 退出 dowhile 循环。对于本题变量 i的初始值等于“0”,接着执行 do后面的循环体中的语句,输出变量 i的值 0。再判断 while后面括号中表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,所以再次输出 i的值 “1”。 【知识模块】 C语言程序设计 32 【正确答案】 B 【试题解析】 循环体执行两次。首先输出 a=l,然后判断表达式 !(-a), a为 0,循环条件表达式值为 1,执行第二次循环体,输出 a

46、=-2。判断循环条件表达式值为 0,循环退出。 【知识模块】 C语言程序设计 33 【正确答案】 B 【试题解析】 y的值的初值为 9,所以在 for-循环中,当 y的值为 9、 6或 3时,if语句的条件成立,执行输出语句,输出表达式 -y的值。因为自减符号在 y的前面,所以首先 y的自减 1,然后再输出 y的值,故输出结果为 8 5 2。 【知识模块】 C语言程序设计 34 【正确答案】 D 【试题解析】 在这段程序中,整型变量 c的初始值赋为 0,在第一次执行 for循环语句时,因为此时变量 k的值等于 1,所以在 switch语句中首先执行 default语句,给变量 c的值加 1,因

47、为在 default语句后面没有 break语句,所以就会接着执行 case2这条语句,再给变量 c的值加 1,其值变为 2,这时退出 switch语句块,进入第二次 for循环,此时 k的值等于 2,就会执行 switch语句块中的 case2这条语句,再给变量 c的值加 1,这时变量 c的值就是 3,此时退出 switch语句块,循环变量 k的值加 1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c的值在屏幕上输出。 【知识模块】 C语言程序设计 35 【正确答案】 C 【试题解析】 在 for循环体中,首先判断自变量 i能否被 5整除,然后再自加两次,最后判断 i

48、能否被 8整除。当 for循环执行到第 30次时, i的值为 30能被 5整除,然后 i经过两次自加 1运算,值变为 32,能被 8整除,故执行 “printf(“d“, i); ”语句,即输出 32。 【知识模块】 C语言程序设计 36 【正 确答案】 B 【试题解析】 在这段程序中变量 a的初值等于 1,变量 b的初值等于 2。第 1次执行 for循环语句后,变量 a的值等于 3,变量 b的值等于 3。第 2次执行 for循环后,变量 a等于 6,变量 b的值等于 7。第 3次执行 for循环后,变量 a等于9,变量 b的值等于 14。第 4次执行 for循环后,变量 a等于 10,这时退出 for循环,此时变量 b的值等于 14。因而程序输出变量 a, b的值分别为 10, 14。 【知识模块】 C语言程序设计 37 【正确答案】 C 【试题解析】 循环体执行三次, a初值 6,第一次执

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