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

上传人:brainfellow396 文档编号:498952 上传时间:2018-11-30 格式:DOC 页数:19 大小:57.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言(C语言程序设计)机试模拟试卷12及答案与解析.doc_第1页
第1页 / 共19页
[计算机类试卷]国家二级C语言(C语言程序设计)机试模拟试卷12及答案与解析.doc_第2页
第2页 / 共19页
[计算机类试卷]国家二级C语言(C语言程序设计)机试模拟试卷12及答案与解析.doc_第3页
第3页 / 共19页
[计算机类试卷]国家二级C语言(C语言程序设计)机试模拟试卷12及答案与解析.doc_第4页
第4页 / 共19页
[计算机类试卷]国家二级C语言(C语言程序设计)机试模拟试卷12及答案与解析.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、国家二级 C语言( C语言程序设计)机试模拟试卷 12及答案与解析 一、选择题 1 有以下计算公式 若程序前面已经在命令行中包含 math.h文件,不能够正确计算上述公式的程序段是 ( A) y=sqrt(x) ; if(x 0) y=sqrt(-x); ( B) if(x =0) y=sqrt(x); else y=sqrt(-x); ( C) if(x =0) y=sqrt(x); if(x 0) y=sqrt(-x); ( D) y=sqrt(x =0?x :-x); 2 有以下程序 #include main() int x; scanf(“%d“, if(x =3) ; else i

2、f(x!=10) printf(“%dn“, x); 程序运行时,输入的值在哪个范围才会有输出结果 ( A)不等于 10的整数 ( B)大于 3或等于 10的整数 ( C)小于 3的整数 ( D)大于 3且不等 10的整数 3 有以下程序 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,2 ( B) 1,2,3 ( C) 1,3,3 ( D) 3,2,1 4 下列条件语句中,输出结果与其他语句不同的是

3、( A) if ( a=0 ) printf(“%dn“, x); else printf(“%dn“, y); ( B) if ( a=0 ) printf(“%dn“, 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); 5 若有以下程序 #include stdio.h main() int a=1,b=2,c=3,d=4; if (a=2) | (b=1) c=

4、2; if (c=3) printf(“%d,%d,%d,%dn“, a,b,c,d); 则程序的输出结果是 ( A) 2,1,2,-1 ( B) 2,2,2,4 ( C) 5,1,2,-1 ( D) 1,2,3,4 6 若有以下程序 #include stdio.h 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) 10 ( B) 6 ( C) 7 (

5、 D) 3 7 若有以下程序 #include stdio.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,%dn“, a,b,c,d); 则程序的输出结果是 ( A) 2,1,2,-1 ( B) 2,2,2,4 ( C) 1,2,3,4 ( D) 5,1,2,-1 8 若有以下程序 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;

6、printf(“%dn“, r); 则程序的输出结果是 ( A) 7 ( B) 10 ( C) 6 ( D) 3 9 以下叙述中正确的是 ( A) if语句只能嵌套一层 ( B)不能在 else子句中再嵌套 if语句 ( C) if子句和 else子句中可以是任意的合法的 C语句 ( D)改变 if-else语句的缩 进格式,会改变程序的执行流程 10 有以下程序 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+;

7、break; case 3: a+; b+; printf(“a=%d, b=%dn“, a, b); 程序的运行结果是 ( A) a=2, b=2 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=1 11 若有定义: 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“); (

8、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“); 12 下列叙述中正确的是 ( A)在 switch语句中必须使用 default ( B) break语句必须与 switch语句中的 case配对使用 ( C)在 switch语句中,不一定使用 break语句 ( D) break语句只能用于 switch语句 13 有以下程序 main() int k=5,n=0; do switch(k) cas

9、e 1: case 3: n+=1; k-; break; default: n=0; k-; case 2: case 4: n+=2; k-; break; printf(“%d“,n); while(k 0 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;

10、break; case 0:a+; 15 有以下程序 #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=1,b=1 ( B) a=1,b=0 ( C) a=2,b=1 ( D) a=2,b=2 16 若以下选项中的变量 a, b, y均已正确定义并赋值,则语法正确的 switch语句是 ( A

11、) switch( a*a+b*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*b case 10 : y=a+b; default : y=a-b; 17 以下程序段中,与语句: k=a b?(b c ? 1 : 0) : 0; 功能相同的

12、是 ( A) if(a b)|(b c) k=1; else k=0; ( B) if(a =b) k=0; else if(b =c) k=1; ( C) if(a b) else k=0; ( D) if(a b) k=1; else if(b c) k=1; else k=0; 18 关于 “while(条件表达式 )循环体 ”,以下叙述正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的执 行次数与循环体的执行次数一样 ( C)条件表达式的执行次数总是比循环体的执行次数多一次 ( D)条件表达式的执行次数与循环体的执行次数无关 19 有以下程序 ma

13、in() int k=5; while(-k) printf(“%d“,k -= 3); printf(“n“); 执行后的输出结果是 ( A) 2 ( B) 4 ( C) 1 ( D)死循环 20 有以下程序 main() int y=10; while(y-); printf(“y=%dn“,y); 程序执行后的输出 结果是 ( A) y=0 ( B) y=1 ( C) y=-1 ( D) while构成无限循环 21 有以下程序 #include stdio.h void main() int s; scanf(“%d“, while(s 0) switch(s) case 1:prin

14、tf(“%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,则输出结果是 ( A) 66656 ( B) 6566456 ( C) 66666 ( D) 6666656 22 有以下程序 #include main() int a = 7; while ( a- ) ; printf (“%dn“, a); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) -1 ( D) 7

15、23 在以下给出的表达式中, 与 while(E)中的 (E)不等价的表达式是 ( A) (E 0|E 0) ( B) (! E=0) ( C) (E!=0) ( D) (E=0) 24 要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是 ( A) while(ch=getchar() =N) printf(“%c “,ch); ( B) while(ch=getchar()=”N”) printf(“%c “,ch); ( C) while(ch=getchar()!=N) printf(“%c “,ch); ( D) while(ch=ge

16、tchar()=N) printf(“%c “,ch); 25 若有以下程序 main() int a=-2, b=0; while(a+) +b ; printf(“%d,%dn“, a, b); 则程序的输出结果是 ( A) 0,2 ( B) 1,2 ( C) 1,3 ( D) 2,3 26 由以下 while构成的循环,循环体执行的次数是 int k=0; while ( k=1 ) k+; ( A)一次也不执行 ( B)执行一次 ( C)无限次 ( D)有语法错,不能执行 27 有以下程序 main() int a = -2, b = 0; while (a+ printf(“%d,%

17、dn“, a, b ); 程序运行后输出结果是 ( A) 0,3 ( B) 1,2 ( C) 1,3 ( D) 0,2 28 有以下程序 #include stdio.h main() int y=10; while(y-); printf(“y=%dn“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 国家二级 C语言( C语言程序设计)机试模拟试卷 12答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 由题意可知计算公式的含义是:当 x大于等于 0时, y值等于 x的算术平方根;当 x小于 0时, y值等

18、于 x的相反数的算术平方根。所以选项 B用一个完整的 if else语句表达了计算公式的含义;选项 C用两个 if 语句表达了计算公式的含义;选项 D在求平方根函数的后面用 x0?x:-x条件表达式来表达了计算公式的含义。选项 A没 有用 C语言语句正确的表达计算公式的含义。 【知识模块】 C语言程序设计 2 【正确答案】 D 【试题解析】 题目中,虽然 else和第二个 if 不在同一行上,但等价于在同一行上,因此,程序的意思是当 x大于 3且不等于 10时打印出来。 【知识模块】 C语言程序设计 3 【正确答案】 C 【试题解析】 a,b,c,d初始值分别为 1,2,3,0。嵌套的 if语

19、句中,第一个 if中,表达式 a=1 break; case 常量表达式 2: 语句 2; break; case 常量表达式 n: 语句 n; break; default: 语句 n+1; break; switch 语句的执行流程是 :首先计算 switch 后面圆括号中表达式的值,然后用此值依次与各个 case的常量表达式比较,若圆括号中表达式的值与某个 case后面的常量表达式的值相等,就执行此 case后面的语句,执行后遇 break 语句就退出switch 语句;若圆括号中表达式的值与所有 case后面的常量表达式都不等,则执行 default后面的语句 n+1,然后退出 swi

20、tch语句。 对于选项 B, case语句和常量之间没有空格,而选项 C中的 case 后面为变量,选项 D中 switch 后面没给出圆括号。 【知识模块】 C语言程序设计 17 【正确答案】 A 【试题解析】 题干中的表达式的功能是当 a b 并且 b c时,变量 k 的值等于1,其余情况下,变量 k 的值都是等于 0。 【知识模块】 C语言程序设计 18 【正确答案】 A 【试题解析】 while语句中表达式是循环条件,语句为循环体。 while语句中当表达式计算的值为真(非 0)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。 【知识模块】 C语言程序设计 19 【正确

21、答案】 C 【试题解析】 在程序语句中, k的初始值为 5,进行第 1次 while循环后, k 自减1为 4,非 0,执行循环体里的 printf语句,输出 1,此时 k 的值变为 1。程序执行第 2次循环时, k自减 1变为 0,为假,退出 while循环语句。所以程序的最后结果为 1。 【知识模块】 C语言程序设计 20 【正确答案】 C 【试题解析】 while 循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量 y=0时,退出循环结束,变量 y执行自减运算,得 -1,所以打印输出变量 y的值为 -1。 【知识模块】 C语言程序设计 21 【正确答案】 B 【试题解析

22、】 这道试题主要考查了 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时,程序运行结束。 【知识模块】 C语言程序设计 22 【正确答案】 C 【试题解析】 在 while语句中,先判断 while后面的表达式是否为 0,如果为 0,则退出循环,否则执行循环体

23、。在本题中,当变量 a的值经过几次 循环后,其值等于 0时,退出 while循环语句,变量 a再执行自减运算,所以其值等于 -1。 【知识模块】 C语言程序设计 23 【正确答案】 A 【试题解析】 在 while(E)中,表达式 E可以是 C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项 A)中表达式 E 0|E 0 是一个逻辑表达式。 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 while循环的执行过程如下: 计算 while后面圆括号中表达式的值,当值为非 0时,执行步骤 ;当值为 0时,执行步骤 ; 执行循环体一次; 转去执行步骤 ;

24、退出循环。 在选项 C中,表达式( ch=getchar()) !=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。 【知识模块】 C语言程序设计 25 【正确答案】 B 【试题解析】 循环体执行两次,第一次表达式 a+值为 -2, a的值为 -1,执行循环体 +b, b值为 1,第二次表达式 a+值为 -1, a的值等于 0,执行 +b, b 值为2,第三次判断条件 a+,表达式值为 0,不执行循环体,但是条件判断以后, a的值为 1。 【知识模块】 C语言程序设计 26 【正确答案】 C 【试

25、题解析】 循环条件表达式为赋值表达式 k=1,因此循环执行无限次。 【知识模块】 C语言程序设计 27 【正确答案】 B 【试题解析】 循环体为空,共执行 2次。第一次变量 a初值为 -2, b 初值为 0,表达式 a+ & +b 值为 1,同时 a的值为 -1, b 的值为 1,第二次循环条件判断以后, a的值为 0, b的值 2,执行循环体空,第三次判断条件表达式 值为 0,不执行循环体,而 a的值为 1,但是表达式 a+的值为 0,因此不计算表达式 +b 的值, b的值仍为 2。 【知识模块】 C语言程序设计 28 【正确答案】 B 【试题解析】 在 while循环中每次变量 y的值减 1,直到其值等于 0时退出循环,这时 y的再减 1变为 -1。 【知识模块】 C语言程序设计

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

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

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