1、国家二级 C语言机试( C语言程序设计)模拟试卷 29及答案与解析 一、选择题 1 若以下选项中变量全部为整型变量,且已正确定义并赋值,则语法正确的 switch语句是 ( A) switch(a+b) case 1: case 3: y=a+b; break; case 0: case 4: y=a-b: ( B) switch(a*a+b*b) default: break; case 3: y=a+b; break; case 2: y=a-b; break; ) ( C) switch(a+9) case c1: y=a-b; case c2: y=a+b; ( D) switch a
2、*b case 10: x=a+b; default: y=a-b; 2 有以下程序 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); 程序的运行结果是 ( A) a=2, b=2 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=1 3 若有定义: float x=1 5; int
3、a=1, b=3, c=2;则正确的 switch语句是 ( A) switch(a+b)case 1: printf(“* n“); case 2+1: 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 c: printf(“* n“); ) 4 下列叙述中
4、正确的是 ( A)在 switch语句中必须使用 default ( B) break语句必须与 switch语句中的 case配对使用 ( C)在 switch语句中,不一定使 用 break语句 ( D) break语句只能用于 switch语句 5 有以下程序 main()int k=5, n=0; doswitch(k) case 1: case 3: n+=1; k-; break; default: n=0; k-; case 2: case 4: n+=2; k-; break; printf(“ d“, n); ) while(k0&nb?(bc?1: 0): 0;功能相同的是
5、 ( A) if(ab)(bc)k=1; else k=0: ( B) if(ab)& (bc)k=1; else k=0: ( D) if(ab)k=1; else if(bc)k=1: else k=0: 11 关于 “while(条件表达式 )循环体 ”,以下叙述正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的执行次数与循环体的执行次数一样 ( C)条件表达式的执行次数总是比循环体的执行次数多一次 ( D)条件表达式的执行次数与循环体的执行次数无关 12 有以下程序 #include main()int y=10; while(y=); print
6、f(“y= d n“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 13 有以下程序 main()int k=5; while(-k) printf(“ d“, k-=3); printf(“ n“); 执行后的输出结果是 ( A) 2 ( B) 4 ( C) 1 ( D)死循环 14 有以下程序 main()int y=10; while(y-); printf(“y= d n“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=1 ( C) y=-1 ( D) while构成无限循环 15 有以下
7、程序 #include void main() int s; scanf(“ d“, &s); 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”, &s); 运行时,若输入 1 2 3 4 5 0,则输出结果是 ( A) 66656 ( B) 6566456 ( C) 66666 ( D) 6666656 16 有以下程序 #include
8、 main()int a=7; while(a-); printf(“ d n”, a); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) -1 ( D) 7 17 在以下给出的表达式中,与 while(E)中的 (E)不等价的表达式是 ( A) (E0Eb并且 bc时,变量 k的值等于 1,其余情况下,变量 k的值都是等于 0。 【知识模块】 C语言程序设计 11 【正确答案】 C 【试题解析】 while语句中表达式是循环条件,语句为循环体。 while语句中当表达式计算的值为真 (非 0)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。 【知识模块】 C语言
9、程序设计 12 【正确答案】 B 【试题解析】 在 while循环中每次变量 y的值减 1,直到其值等于 0时退出循环,这时 y的再减 1变为一 1。 【知识模块】 C语言程序设计 13 【正确答案】 C 【试题解析】 在程序语句中, k的初始值为 5,进行第 1次 while循环后, k自减1为 4,非 0,执行循环体里的 printf语句,输出 1,此时 k的值变为 1。程序执行第 2次循环时, k自减 l变为 0,为假,退出 while循环语句。所以程序的最后结果为 1。 【知识模块】 C语言程序设计 14 【正确答案】 C 【试题解析】 while循环语句的循环体为空 语句,所以每一次
10、循环程序什么都不做。当循环自变量 y=0时,退出循环结束,变量 y执行自减运算,得 -1,所以打印输出变量 y的值为 -1。 【知识模块】 C语言程序设计 15 【正确答案】 B 【试题解析】 这道试题主要考查了 switch和 break语句,当变量 s的值为 1时,执行 case1、 case 2两条语句,输出 65;当变量 s的值为 2时,执行 case 2语句,输出 6;变量 s的值为 3时,执行 case3、 default两条语句,输出 64;变量 s的值为 4时,执行 default语句,输入 5;变量 s的值为 5时,执行 default语句,输出6:变量 s的值为 0时,程序
11、运行结束。 【知识模块】 C语言程序设计 16 【正确答案】 C 【试题解析】 在 while语句中,先判断 while后面的表达式是否为 0,如果为 0,则退出循环,否则执行循环体。在本题中,当变量 a的值经过几次循环后,其值等于 0时,退出 while循环语句,变量 a再执行自减运算,所以其值等于 -1。 【知识模块】 C语言程序设计 17 【正确答案】 A 【试题解析】 在 while(E)中,表达式 E可以是 C语言中任意合法的条件 表达式,但不能为空,由它来控制循环体是否执行。在选项 A中表达式 E0IlE0是一个逻辑表达式。 【知识模块】 C语言程序设计 18 【正确答案】 C 【
12、试题解析】 while循环的执行过程如下: 计算 while后面圆括号中表达式的值,当值为非 0时,执行步骤 ;当值为 0时,执行步骤 : 执行循环体一次; 转去执行步骤 ; 退出循环。 在选项 C中,表达式 (ch=getchar()!=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行循 环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。 【知识模块】 C语言程序设计 19 【正确答案】 B 【试题解析】 循环体执行两次,第一次表达式 a+值为 -2, a的值为 -1,执行循环体 +b, b值为 1,第二次表达式 a+值为 -1, a的值等于 0
13、,执行 +b, b值为2,第三次判断条件 a+,表达式值为 0,不执行循环体,但是条件判断以后, a的值为 1。 【知识模块】 C语言程序设计 20 【正确答案】 C 【试题解析】 循环条件表达式为赋值表达式 k=1,因此循环执行无限次。 【知识模块】 C语言程序设计 21 【正确答案】 B 【试题解析】 循环体为空,共执行 2次。第一次变量 a初值为 -2, b初值为 0,表达式 a+&+b值为 1,同时 a的值为 -1, b的值为 1,第二次循环条件判断以后, a的值为 0, b的值 2,执行循环体空,第三次判断条件表达式值为 0,不执行循环体,而 a的值为 1,但是表达式卅的值为 0,因
14、此不计算表达式 +b的值, b的值仍为 2。 【知识模块】 C语言程序设计 22 【正确答案】 D 【试题解析】 dowhi le语句先执行语句,后判断表达式的值。故 doVwhile 语句又称 “直到型 ”循环结构。由于是先执行后判断,因此 dowhile 语句的循环语句至少被执行一次,循环条件至少判断一次。 【知识模块】 C语言程序设计 23 【正确答案】 A 【试题解析】 选项 B中 while(1)永远为真所以进入死循环,选项 C中 while(n=10)同理,选项 D中 for循环没有循环限定条件也将进入无限循环,只有选项 A中while(n=0)循环判定成立,循环将不进入无限循环。
15、 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 由于循环变量 i的初值等于 5,所以第一、二次进入 dowhile 循环语句时,条件语句 if(i 3=1), if(i 5=2)printf(“* d”, i); break; 不执行,只执行 i+语句。当 i=7时,满足条件语句 if(i 3=1), if(i5=2)printf(“* d“, i); break; ,所以输出 *7,结束循环。 【知识模块】 C语言程序设计 25 【正确答案】 C 【试题解析】 dowhile 循环的执行过程如下: 执行 do后面的循环体中的语句。 计算 while后一对圆括号中表达式的
16、值。当值为非 0时,转去执行步骤 ;当值为 0时,执行步骤 。 退出 dowhile 循环。对于本题变量 i的初始值等于“0”,接着执行 do后面的循环体中的语句,输出变量 i的值 0。再判断 while后面括号中表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,所以再次输出 i的值 “1”。 【知识模块】 C语言程序设计 26 【正确答案】 C 【试题解析】 由于 a的初始值等于 -2,所以 while循环语言执行三次结束,第一次 a=-2, b=1,然后判断循环条件 a+非零,执行第二次循环体 a=-1, b=2,判断循环条件非零,执行循环体 a=0, b=3,判断循环条件为 0,此时变量 a的值等于1。 【知识模块】 C语言程序设计
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1