1、国家二级 C语言机试(选择结构程序设计)模拟试卷 1及答案与解析 一、选择题 1 若有定义 int x,y; 并已正确给变量赋值,则以下选项中与表达式 (x-y)?(x+) : (y+)中的条件表达式 (x-y) 等价的是( )。 ( A) (x-y0) ( B) (x-y0) ( D) (x-y=0) 2 有以下程序 #include main() char a=H; a = ( a=A if (!x) y+; else if (x=0) if (x) y+=2; else y+=3; printf(“%dn“, y); 程序运行后的输出结果是( )。 ( A) 0 ( B) 2 ( C)
2、1 ( D) 3 4 若有定义: float x=1.5; int 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
3、c: printf(“*n“); 5 若变量已正确定义,在 if (W) printf(“%dn“ ,k ); 中,以下不可替代 W的是( )。 ( A) ab) a=b, b=c; c=a; printf(“a=%d b=%d c=%dn“, a, b, c); 程序的输出结果是( )。 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 7 设有定义: int a=1,b=2,c=3; 以下语句中执行效果与其它三个不同的是( )。 ( A) if(ab) c=a;a=b;b=c; (
4、 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; 8 if语句的基本形式是: if (表达式 ) 语句,以下关于 “表达式 “值的叙述中正确的是( )。 ( A)可以是任意合法的数值 ( B)必须是整数值 ( C)必须是正数 ( D)必须是逻辑值 9 有如下嵌套的 if语句 if(ac)?b:c); ( C) k=(a main() int x; scanf(“%d“, if(xb?(bc ? 1 : 0) : 0; 功能相同的是( )。 ( A) if(ab) else k=0; ( B) if
5、(ab)|(bc) k=1; else k=0; ( C) if(ab) k=1; else if(bc) k=1; else k=0; 12 以下选项中与 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
6、0:a+; 13 有以下程序 #include main() int a=1,b=2,c=3,d=0; if (a=1 else printf(“%d,%d,%dn“,a,b,c); else printf(“%d,%d,%dn“,a,b,c); 程序运行后的输出结果是( )。 ( A) 1,3,3 ( B) 1,3,2 ( C) 1,2,3 ( D) 3,2,1 14 下列条件语句中,输出结果与其他语句不同的是( )。 ( A) if ( a=0 ) printf(“%dn“, x); else printf(“%dn“, y); ( B) if ( a=0 ) printf(“%dn“,
7、y); else printf(“%dn“, x); ( C) if ( a!=0 ) printf(“%dn“, x); else printf(“%dn“, y); ( D) if ( a ) printf(“%dn“, x); else printf(“%dn“, y); 15 有以下程序 #include main() int x=1,y=2,z=3; if(xy) if(y main() int a=1,b=2,c=3,d=4; if (a=2) | (b=1) c=2; if (c=3) printf(“%d,%d,%d,%dn“, a,b,c,d); 则程序的输出结果是( )。
8、( A) 2,2,2,4 ( B) 2,1,2,-1 ( C) 5,1,2,-1 ( D) 1,2,3,4 17 若有以下程序 #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(“%dn“, r); 则程序的输出结果是( )。 ( A) 7 ( B) 10 ( C) 6 ( D) 3 18 若有以下程序 #include main() int a=1,b=2,c=3,d=4; if (a=
9、2) if (c=3) | (d=-1) a=5; printf(“%d,%d,%d,%dn“, a,b,c,d); 则程序的输出结果是( )。 ( A) 5,1,2,-1 ( B) 2,1,2,-1 ( C) 2,2,2,4 ( D) 1,2,3,4 19 若有以下程序 #include 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(“%dn“, r); 则程序的输出结果是( )。 ( A) 10 ( B) 7 ( C)
10、6 ( D) 3 20 有以下程序 #include 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=%dn“,a,b ); 程序运行后的输出结果是( )。 ( A) a=2,b=1 ( B) a=1,b=1 ( C) a=1,b=0 ( D) a=2,b=2 21 有以下程序 #include main() int k, j, s; for( k=2; k main(
11、) double x=2.0, y; if( x main() int a,b; for (a=0; a ,则输出结果是( )。 ( A) 2,3,4,3,4,4, ( B) 2,3,4, ( C) 2,2,2,3,3,4, ( D) 2,3,4,3,4,5,4,5,6 28 有以下程序 #include main() int a,b; for (a=0; a,则输出结果是( )。 ( A) 1,2,3,2,3,3, ( B) 1,2,3, ( C) 2,3,4,3,4,4, ( D) 1,1,1,2,2,3 29 有以下程序段,若变量已正确定义并赋值 if(ab)printf(“x=%d,“
12、, x); else printf(“y=%d,“, y); if(ab)printf(“x=%d,“, x);j+; else printf(“y=%d,“, y);i+; ( B) if(ab)printf(“x=%d,“, x);i+; else printf(“y=%d,“, y);j+; ( C) if(a=b)printf(“x=%d,“, x);i+; else printf(“y=%d,“, y);j+; 30 以下程序的功能是判断输入的一个整数是否能被 3或 7整除,若能整除,输出YES,否则输出 NO。在下划线处应填入的选项是 #include main() int k;
13、printf(“Enter a int number : “); scanf(“%d“, if _ printf(“YESn“); else printf(“NOn“); printf(“%dn“,k%3); ( )。 ( A) ( (k%3=0) | (k%7=0) ) ( B) (k/3=0) | (k/7=0) ( C) ( (k%3=0) | (k%7=0) ) ( D) ( (k%3=0) if (a+ else printf(“F“); printf(“a=%d,b=%dn“, a, b); 程序运行后的输出结果是( )。 ( A) Fa=1,b=1 ( B) Fa=0,b=2 (
14、 C) Ta=1,b=2 ( D) Ta=0,b=1 33 有如下程序 #include main() int x = 0x13; if (x = 0x18) printf(“T“); printf(“F“); printf(“n“); 程序运行后的输出结果是( )。 ( A) TF ( B) T ( C) F ( D) TFT 34 有如下程序 #include main() int a = 0, b = 1; if (+a = b+) printf(“T“); else printf(“F“); printf(“a=%d,b=%dn“, a, b); printf(“n“); 程序运行后的
15、输出结果是( )。 ( A) Ta=1,b=2 ( B) Fa=1,b=2 ( C) Ta=0,b=1 ( D) Fa=0,b=2 35 有以下程序段 scanf(“%d%d%d“, if(ab) a=b; if(ac) a=c; printf(“%dn“,a); 该程序段的功能是( )。 ( A)输出 a、 b、 c中的最小值 ( B)输出 a、 b、 c中的最大值 ( C)输出 a的原始值 ( D)输出 a、 b、 c中值相等的数值 36 有以下程序 #include main() int x; scanf(“%d“, if(x10) printf(“1“); else if(x20) p
16、rintf(“2“); else if(x30) printf(“3“); 若运行时输入: 35,则输出结果是( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 123 37 有以下程序段 scanf(“%d%d%d“, if(a=b)? -10:10; 国家二级 C语言机试(选择结构程序设计)模拟试卷 1答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 考 查条件表达式。条件表达式的形式为: 表达式 1 ? 表达式 2 : 表达式 3 ,计算 “表达式 1“的值,若为 “真 “,取 “表达式 2“的值作为整个条件表达式的值;若为 “假 “,取 “表达式 3“的值作为整个条
17、件表达式的值。本程序中要选能判定 (x-y)为 “真 “的语句,即 x! =y,或者 (x-y 0),选 A。 【知识模块】 选择结构程序设计 2 【正确答案】 A 【试题解析】 考查条件运算符。条件表达式的形式为: 表达式 1 ? 表达式 2 : 表达式 3 ,计算 “表达式 1“的值,若为 “真 “,取 “表达 式 2“的值作为整个条件表达式的值;若为 “假 “,取 “表达式 3“的值作为整个条件表达式的值。字符参与运算时一般计算其 ASCII 码,并且一个字母的小写 -大写 =32( ASCII 码),该程序将大写字母转成对应的小写字母,答案选 A。 【知识模块】 选择结构程序设计 3
18、【正确答案】 A 【试题解析】 在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行, y值没有发生改变,答案选 A。 【知识模块】 选择结构程序设计 4 【正确答案】 A 【试题解析】 switch(表达式 )后不能 有分号,选项 B)错误; switch 语句的圆括号中表达式的值必须为整型或者字符型,不能为实型,选项 C)错误; case后面的表达式可以是求得整型量和字符型量的常量表达式,但是常量表达式中不能含有变量,选项 D)错误;答案选 A)。 【知识模块】 选择结构程序设计 5 【正确答案】 A 【试题解析】 C语言中没有符号 “b) if(bc) k=1; else k=
19、0; else k=0;“。即是当 ab并且 bc时, k=1,其余情况 k=0,所以答案选 A)。 【知识模块】 选择结构程序设计 12 【正确答案】 A 【试题解析】 题目程序的意思是当 a值为 1的时候,将 b值赋给 a,若 a值不为1则 a自加 1。选项 A)中,若 a的值为 1,则表达式 a=1的值为 1,进入 case 1分支, a自加 1,而 a值不为 0时,执行 “a=b; break;“,和题目程序执行的 语句不一致,所以答案选 A)。 【知识模块】 选择结构程序设计 13 【正确答案】 A 【试题解析】 else总是与前面距离它最近的且未曾配对的 if语句配对。“a=1,b
20、=2,c=3,d=0“,所以语句 “if(a=1 “,输出 x的值为 1,答案选 A。 【知识模块】 选择结构程序设计 16 【正确答案】 A 【试题解析】 根据逻辑表达式 的 “短路求值 “原理,逻辑或的第一个表达式 “a=2“的值为真,则表达式 “b=1“不再计算,整个逻辑表达式值为真,执行语句 “c=2;“,第二个 if语句条件不成立,所以第二个表达式 “d=-1“也不计算,所以变化的值有a和 c,变化后 a=2, c=2,所以答案选 A。 【知识模块】 选择结构程序设计 17 【正确答案】 A 【试题解析】 else总是与前面距离它最近的且未曾配对的 if语句配对。 “if (a!=1
21、); else r=1;“执行的是空语句 “;“。 “if (b=2) r+=2; else;“执 行的是语句 “r+=2“, r值为 2。 “if (c!=3) r+=3;else;“执行的是空语句 “;“。 “if (d=4) r+=4;“执行语句“r+=4“,计算后 r的值为 7,输出结果为选项 A)。 【知识模块】 选择结构程序设计 18 【正确答案】 A 【试题解析】 该程序中所有的逻辑表达式均不满足 “短路求值 “原理,所以所有的表达式都需要计算,第一个 if 语句执行完毕之后, a=2, b=1, c=2,第二个 if语句执行完毕之后, d=-1, a=5,所以最终的 a=5,
22、b=1, c=2, d=-1,答案选 A。 【知识模块】 选择结构程序设计 19 【正确答案】 A 【试题解析】 if语句的形式为 “if(表达式 ) 语句体 “,若语句体为复合语句,则必须用 “括起来,否则只会执行 if(表达式 )下的第一条语句。所以整个程序执行的语句为 “r=1; r+=2; r+=3; r+=4;“,输出的 r值为 10。答案选 A。 【知识模块】 选择结构程序设计 20 【正确答案】 A 【试题解析】 break 语句用于循环嵌套或者 switch 选择嵌套时,只能跳出当前层的 switch 选择层或循环层。本程序 中,先执行 switch(x),而 x=1,执行 c
23、ase 1对应的语句块,进入嵌套的选择语句 switch(y), y=0,执行 case 0: a+; break;此时a=1,遇到 break 语句后跳出 switch(y),没有遇到 break,继续执行 case 2: a+; b+; break;此时 a=2, b=1。遇到 break 跳出 switch(x)。最终 a=2, b=1,输出结果为 【知识模块】 选择结构程序设计 21 【正确答案】 A 【试题解析】 嵌套循环,外层循环 k 从 2循环到 5,每次自增 2,。内层循环 j从k 到 5,每次自增 1, s为在 s的基础上累加当前内层循环所有的 j值。程序输出的是最后一次外层
24、循环时 s的统计值,即 k=4时, j的取值为 4、 5,所以 s=10,答案选 A。 【知识模块】 选择结构程序设计 22 【正确答案】 A 【试题解析】 循环条件是 “k=1“,该表达式恒为真,所以程序构成死循环,答案选 A。 【知识模块】 选择结构程序设计 23 【正确答案】 A 【试题解析】 if多分支选择结构中,从上到下依次判定 if(或 else if)后的圆括号内的表达式的值,只有之 前的 if(或 else if)条件都为假时,才会判定下一条else if 语句的条件是否成立,该程序中,执行的是语句 “else if( xb时,执行语句 “printf(“x=%d, “, x)
25、;“和语句 “ j+;“,否则执行语句 “printf(“y=%d, “,y);“和语句 “i+;“,由此答案选 A。 【知识模块】 选择结构程序设计 30 【正确答案】 A 【试题解析】 根据程序的逻辑设计, if 的判定条件应该是 k 对 3或者 7取余的值等于 0,使用逻辑或 “|“、求余运算符 “%“以及等于关系运算符 “=“,答案选 A。 【知识模块】 选择结构程序设计 31 【正确答案】 A 【试题解析】 if语句的一般形式为 “if(表达式 ) 语句体 “,其中, “表达式 “可以是任意合法的 C语言表达式,所以计算出的结果可以是任意合法的数值,所以答案选 A。 【知识模块】 选
26、择结构程序设计 32 【正确答案】 A 【试题解析】 自加运算符后置的时候,该变量是先使 用后自加 1。并且根据逻辑表达式的 “短路求值 “原理,判定表达式 “a+“的值为 0,整个逻辑表达式的值为0,而且 “b+“不再计算。 a=1, b=1,所以输出结果为选项 A)。 【知识模块】 选择结构程序设计 33 【正确答案】 A 【试题解析】 C语言中用非 0值表示真,用 0值表示假, 0x18 为用十六进制表示的数值,为非 0,赋值给 x后 x也为非 0,所以 if条件语句 “ printf(“T“);“能够执行,输出 T。之后执行语句 “printf(“F“);“,所以输出的结果为选项 A)
27、。 【知识模块】 选 择结构程序设计 34 【正确答案】 A 【试题解析】 自增运算符前置时,该变量是先自增 1后再参与其他运算;自增运算符后置时,该变量是先参与运算后再自增 1。由此, if判定条件判定的是自加后的 a值和自加前的 b 值是否相等,判定条件为真,输出 T,此时 a=1, b=2,所以答案选 A。 【知识模块】 选择结构程序设计 35 【正确答案】 A 【试题解析】 if语句的形式为 “if(表达式 ) 语句体 “,如果表达式的值为真,则执行语句体。该程序段的逻辑是如果 ab,则把 b 值赋值给 a;如果 ac,则把 c值赋值给 a,也就是 a中记录但是 a、 b、 c中的最小
28、值,答案选 A。 【知识模块】 选择结构程序设计 36 【正确答案】 A 【试题解析】 if多分支选择结构中,只有之前的 if(或 else if)的判定条件不满足时才进行下一个 if(或 else if)的条件判定,所以当输入 35时,执行的是第一条 if语句的语句体,输出结果为选项 A)。 【知识模块】 选择结构程序设计 37 【正确答案】 A 【试题解析】 该程序中没有赋值运算符 “=“,也就是说没有变量会被改变,所以a值也不变,答案选 A。 【知识模块】 选择结构程序设计 38 【正确答案】 A 【试题解析】 题目的意思若 a=b, x=-10,选项 A)少考虑了a=b 的情况。答案选 A)。 【知识模块】 选择结构程序设计
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1