1、国家二级 C语言( C语言程序设计)机试模拟试卷 2及答案与解析 一、选择题 1 有如下嵌套的 if语句 if(a=0)y=sqrt(x); else y=sqrt(-x); ( C) if(x=0)y=sqrt(x); if(x=07x: -x); 3 有以下程序 #include main()int x; scanf(“ d“, &x); if(x main() int a=l, b=2, c=3, d=4; if(a=2)(b=1)c=2; if(c=3)&(d=-1)a=5; printf(“ d, d, d, d n“, a,b, C, d); 则程序的输出结果是 ( A) 2, 1
2、, 2, 1 ( B) 2, 2, 2, 4 ( C) 5, 1, 2, -1 ( D) 1, 2, 3, 4 7 若有以下程序 #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(“ dkn“, r); 则程序的输出结果是 ( A) 10 ( B) 6 ( C) 7 ( D) 3 8 若有以下程序 #include main() int a=l, b=2, c=3, (1=二 4; if(a=2)&
3、(b=1)c=2; if(c=3)(d-1)a=5; printf(“ d, d, d, d 11“, a,b, C, d); 则程序的输出结果是 ( A) 2, 1, 2,一 1 ( B) 2,2, 2, 4 ( C) 1, 2, 3, 4 ( D) 5, 1, 2,一 1 9 若有以下 程序 main() int a=1, b=2, c=3, d=4, r=O; 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 (
4、D) 3 10 以下叙述中正确的是 ( A) if语句只能嵌套一层 ( B)不能在 else子句中再嵌套 if语句 ( C) if子句和 else子 句中可以是任意的合法的 C语句 ( D)改变 if-else语句的缩进格式,会改变程序的执行流程 11 有以下程序 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); 程序
5、的运行结果是 ( A) a=2, b=2 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=1 12 若有定义: float x=1 5; int a=1, b=3, c=2;则正确的 switch语句是 ( A) switch(a+b)case 1: printf(“* n“); case 2+1: printf(“*kn“); ( B) switch(int)x); case l: printf(“* n“); case 2: printf(“* n“); ( C) switch(x)case 1 O: printf(“* n“); case 2 O: pri
6、ntf(“* n“); ( D) switch(a+b)case 1: printf(“*kn“); case c: printf(“* n“); 13 下列叙述中正确的是 ( A)在 switch语句中必须使用 default ( B) break语句必须与 switch语句中的 case配对使用 ( C)在 switch语句中,不一定使用 break语句 ( D) break语句只能用于 switch语句 14 有以下程序 main() int k=5, n=0; do switch(k) case 1: case 3: n+=1; k-; break; default: n=0; k-;
7、 case 2: case 4: n+=2; k-; break; printf(“ d“, n); while(k0&nb?(bc?1: 0): O;功能相同的是 ( A) if(ab)(bc)k=1; else k=0; ( B) iffab)&(bc)k=1; else k=0; ( D) if(ab)k=1; else if(bc)k=1; else k=0; 19 关于 “while(条件表达式 )循环体 ”,以下叙述正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的执行次数与循环体的执行次数一样 ( C) 条件表达式的执行次数总是比循环体的执行
8、次数多一次 ( D)条件表达式的执行次数与循环体的执行次数无关 20 有以下程序 #include main() int y=10; while(y-); printf(“y= dha“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=-1 ( C) )y=1 ( D) while构成无限循环 21 有以下程序 main() int k=5; while(-k) printf(“ d“, k-=3); printf(“ n“); 执行后的输出结果是 ( A) 2 ( B) 4 ( C) 1 ( D)死循环 22 有以下程序 main() int y=10; while(y-)
9、; printf(“y= d n“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=1 ( C) y=-1 ( D) while构成无限循环 23 有以下程序 #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: pfintf(“ d“, s+3); default: printf(“ d“, s+1); break; scanf(“ d“, &s); 运行时,若输
10、入 1 2 3 4 5 0,则输出结果是 ( A) 66656 ( B) 6566456 ( C) 66666 ( D) 6666656 24 有以下程序 #include main() int a=7; while(a-); printf(“ dkn“, a); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) 1 ( D) 7 25 在以下给出的表达式中,与 while(E)中的 (E)不等价的表达式是 ( A) (E0Eb并且 bc时,变量 k的值等于 1,其余情况下,变量 k的值都是等于 0。 【知识模块】 C语言程序设计 19 【正确答案】 C 【试题解析】 while语
11、句中表达式是循环条件,语句为循环体。 while语句中当表达式计算的值为真 (非 O)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。 【知识模块】 C语言程序设计 20 【正确答案】 B 【试题解析】 在 while循环中每次变量 y的值减 1,直到其值等于 0时退出循环,这时 y的再减 1变为 -1。 【知识模块】 C语言程序设计 21 【正确答案】 C 【试题解析】 在程序语句中, k的初始值为 5,进行第 1次 while循环后, k自减1为 4非 0,执行循环体里的 printf语句,输出 1。此时 k的值变为 1。程序执行第 2次循环时, k自减 1变为 0。为假,
12、退出 while循环语句。所以程序的最后结果为 1。 【知识模块】 C语言程序设计 22 【正确答案】 C 【试题解析】 while循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量 y=0时,退出循环结束,变量 y执行自减运算,得 -1,所以打印输出变量 y的值为 -1。 【知识模块】 C语言程序设计 23 【正确答案】 B 【试题解析】 这道试题主要考查了 switch和 break语句,当变量 s的值为 l时,执行 easel、 case 2两条语句,输出 65;当变量 s的值为 2时,执行 case 2语句,输出 6;变量 s的值为 3时,执行 case3、 defa
13、ult两条语句,输出 6_4;变量 s的值为 4时,执行 default语句。输入 5;变量 s的值为 5时,执行 default语句,输出 6:变量 s的值为 0时,程序运行结束。 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 在 while语句中,先判断 while后面的表达式是否为 0如果为 0,则退出循环,否则 执行循环体。在本题中,当变量 a的值经过几次循环后,其值等于 0时退出 while循环语句,变量 a再执行自减运算,所以其值等于 1。 【知识模块】 C语言程序设计 25 【正确答案】 A 【试题解析】 在 while(E)中,表达式 E可以是 C语言中任
14、意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项 A中表达式 E0E0是一个逻辑表达式。 【知识模块】 C语言程序设计 26 【正确答案】 C 【试题解析】 while循环的执行过程如下: 计算 while后面圆括 号中表达式的值,当值为非 0时,执行步骤 ;当值为 0时,执行步骤 ; 执行循环体一次; 转去执行步骤 : 退出循环。 在选项 C)中,表达式 (ch=getchar()!=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。 【知识模块】 C语言程序设计 27 【正确答案】 B 【试题解析】 循环体执行两次,第一次表达式 a+值为 -2 a的值为 -1,执行循环体 +b, b值为 1,第二 次表达式 a+值为 -1 a的值等于 0,执行 +b, b值为2,第三次判断条件 a+,表达式值为 0,不执行循环体,但是条件判断以后, a的值为 1。 【知识模块】 C语言程序设计 28 【正确答案】 C 【试题解析】 循环条件表达式为赋值表达式 k=1,因此循环执行无限次。 【知识模块】 C语言程序设计