[计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc

上传人:赵齐羽 文档编号:499056 上传时间:2018-11-30 格式:DOC 页数:22 大小:55KB
下载 相关 举报
[计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc_第1页
第1页 / 共22页
[计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc_第2页
第2页 / 共22页
[计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc_第3页
第3页 / 共22页
[计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc_第4页
第4页 / 共22页
[计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、国家二级 C语言(选择结构、循环结构)机试模拟试卷 2及答案与解析 一、选择题 1 下列选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( )。 ( A) x 2=0 ( B) x 2 ( C) x 21=0 ( D) x 2=1 2 若 a是数值类型,则逻辑表达式 (a=1)|(a!=1)的值是 ( )。 ( A) 1 ( B) 0 ( C) 2 ( D)不知道 a的值,不能确定 3 当变量 13的值不为 2、 4、 6时,值为 “真 ”的表达式是 ( )。 ( A) (c =2&e =6)&(c 2!=1) ( B) (c=2)|(c=4)|(c=6) ( C) (c =2&c =6

2、)&!(c 2) ( D) (c =2&c =6)|(c!=3)|(c!=5) 4 有以下程序: #include stdio h main() int a=1, b=2, c=3, d=0; if(a=1&b+=2) if(b!=2|c-!=3) printf(“ d, d, d n“, a, b, c); else printf(“ d, d, d n“, a, b, c); else printf(“ d, d, d n“, a, b, c); 程序的运行结果是 ( )。 ( A) 1, 3, 2 ( B) 1, 3, 3 ( C) 1, 2, 3 ( D) 3, 2, 1 5 下列关于

3、逻辑运算符两侧运算对象的叙述中正确的是 ( )。 ( A)可以是任意合法的表达式 ( B)只能是整数 0或非 0整数 ( C)可以是结构体类型的数据 ( D)只能是整数 0或 1 6 设有宏定义: #define IsDIV(k, n)(k n=1)?1: 0),且变量 m已确定义并赋值,则宏调用: IsDIV(m, 5)&IsDIV(m, 7)为 真时所要表达的是 ( )。 ( A)判断 m是否能被 5和 7整除 ( B)判断 m被 5和 7整除是否都余 1 ( C)判断 m被 5或者 7整除是否余 1 ( D)判断 m是否能被 5或者 7整除 7 if语句的基本形式是: if(表达式 )语

4、句,以下关于 “表达式 ”值的叙述中正确的是( )。 ( A)必须是逻辑值 ( B)必须是整数值 ( C)必须是正数 ( D)可以是任意合法的数值 8 下列条件语句中,输出结果与其他语句不同的是 ( )。 ( A) if(a!=0)printf(“, d n“, x); else printf(“ d n“, y); ( B) if(a=0)printf(“ d n“, y); else printf(“ d n“, x); ( C) if(a=0)printf(“ d n“, x); else printf(“ d n“, y); ( D) if(a)printf(“ d n“, x); e

5、se printf(“ d n“, y); 9 有以下程序: #include stdio h 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) 1, 1, 2, 0 ( B) 0, 0, 0, 3 ( C)编译有错 ( D) 0, 1, 2, 0 10 设有定义: int a=1, b=2, c=3;以下语句中执行效果与其他 3个不同的是( )。 ( A) if(a b)c=a, a=b, b: c; ( B) if

6、(a b)c=a, a=b, b=c; ( C) if(a b)c=a; a=b; b=c; ( D) if(a b)c=a; a=b; b=c; 11 有嵌套的 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)?(b c)?a: b): (b c)?b: c); ( B) k=(a b)?(a c)?a: c): (b c)?b: c); ( C) k=(a b)?a: b; k=(b c)?b: c; ( D) k=(a b)?a: b;

7、k=(a c)?a: c; 12 有以下程序: #include stdio h main() int x=1, y=2, z=3; if(x y)if(y z) printf(“ d“, +z); else printf(“ d“, +y); printf(“ d n“, x+); 程序的运行结果是 ( )。 ( A) 1 ( B) 41 ( C) 2 ( D) 331 13 以下程序段中,与语句 k=a b?(b c?1: 0): 0;功能相同的是 ( )。 ( A) if(a b)|(b c)k=1; else k=0; ( B) if(a b)&(b c)k=1; else k=0;

8、( C) if(a =b)k=0; else if(b = c)k=1; ( D) if(a b)k=1; else if(b c)k=1; else k=0; 14 有以下程序: #include stdio h main() int x=1, y=0, a=0, b=0; switch(x) case1: switch(y) ease0: a+; break; ease1: b+; break; ease2: a+; b+; break; case3: a+; b+; printf(“a= d, b= d n“, a, b); 程序的运行结果是 ( )。 ( A) a=2, b=2 ( B

9、) a=2, b=1 ( C) a=1, b: 1 ( D) a=1, b=0 15 若有定义: float x=1 5; int a=1, b=3, c=2;,则正确的 switch语句是 ( )。 ( A) switch(a+b) ease1: printf(“* n“); ease2+1: printf(“* n“); ( B) switch(int)x); ease1: printf(“* n“); case2: printf(“* n“); ( C) switch(x) case1 0: printf(“* n“); ease2 0: printf(“* n“); ( D) swit

10、ch(a+b) case1: printf(“* n“); case c: printf(“* n“); 16 下列叙述中正确的是 ( )。 ( A)在 switch语句中不一定使用 break语句 ( B)在 switch语句中必须使用 default语句 ( C) break语句必须与 switch语句中的 ease配对使用 ( D) break语 句只能用于 switch语句 17 下列选项中与 if(a=1)a=b; elsea+;语句功能不同的 switch语句是 ( )。 ( A) switch(a=1) ease0: a=b; break; case1: a+; ( B) swi

11、tch(a) ease1: a=b; break; default: a+; ( C) switch(a) default: a+; break; ease1: a=b; ( D) switch(a=1) case1: a=b; break; ease0: a+; 18 有以下程序: #include stdio h main() int y=10: while(y-); printf(“y= d n“, y); 程序执行后的输出结果是 ( )。 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 19 有以下程序: #include stdio h ma

12、in() int k=5: while(-k) printf(“ d“, k-=3); printf(“ n“); 执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 4 ( D)死循环 20 有以下函数: int fun(char*s) char*t=s; while(*t+); return(t-s); 该函数的功能是 ( )。 ( A)计算 s所指字符串的长度 ( B)比较两个字符串的大小 ( C)计算 S所指字符串占用内存字节的个数 ( D)将 s所指字符串复制到字符串 t中 21 有以下函数: int aaa(char, *s) char, *t=s:; while(

13、*t+); t-; return(t-s); 以下关于 aaa函数功能叙述正确的是 ( )。 ( A)将串 s复制到串 t ( B)比较两个串的大小 ( C)求字符串 s的长度 ( D)求字符串 s所占字节数 22 在以下给出的表达式中,与 while(E)中的 (E)不等价的表达式是 ( )。 ( A) (E 0|E 0) ( B) (E=0) ( C) (!E=0) ( D) (E!=0) 23 以下不构成无限循环的语句或语句组是 ( )。 ( A) n=0; do+n; while(n =0); ( B) n=0; while(1)n+; ( C) n=10; while(n); n-;

14、 ( D) for(n=0, i=1; i+)n+=i; 24 若变量已正确定义,有以下程序段: i=0; do printf(“ d, “, i); while(i+);printf(“ d n“, i);程序的运行结果是 ( )。 ( A) 0, 1 ( B) 0, 0 ( C) 1, 1 ( D)程序进入无限循环 25 以下程序段中的变量已正确定义: for(i=0; i 4; i+, i+) for(k=1; k 3; k+); printf(“*“); 程序 的运行结果是 ( )。 ( A) * ( B) * ( C) * ( D) * 26 有以下程序: #i13clude std

15、io h main() int y=9; for(; y 0; y-) if(y 3=0) printf(“ d“, -y); 程序的运行结果是 ( )。 ( A) 852 ( B) 963 ( C) 741 ( D) 875421 27 有以下程序: #include stdio h main() int a=1, b=2; for(; a 8; a+) b+=a; a+=2; printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( )。 ( A) 9, 18 ( B) 8, 11 ( C) 7, 11 ( D) 10, 14 28 有以下程序: #include st

16、dio h main() int x=8; for(; x 0; x-) if(x 3) printf(“ d, “, x-); continue; printf(“ d, “, -x); 程序的运行结果是 ( )。 ( A) 7, 4, 2, ( B) 8, 7, 5, 2, ( C) 9, 7, 6, 4, ( D) 8, 5, 4, 2, 29 有以下程序: #include stdio h main() int b33=0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i 3; i+) for(j=i; j =i; j+)t+=bibji; printf(“

17、d n“, t); 程序的运行结果是 ( )。 ( A) 3 ( B) 4 ( C) 1 ( D) 9 30 有以下程序: #include stdio h main() int i; for(i=1; i =40; i+) if(i+ 5=0) if(+i 8=0) printf(“ d“, i); printf(“ n“); 程序的运行结果是 ( )。 ( A) 5 ( B) 24 ( C) 32 ( D) 40 31 有以下程序: #include stdio h main() int i, j, m=55; for(i=1; i =3; i+) for(j=3; j =i; j+) m

18、=m j; printf(“ d n“, m); 程序的运行结果是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 32 下列叙述中正确的是 ( )。 ( A) continue语句的作用是使程序的执行流程跳出包含它的所有循环 ( B) break语句只能用在循环体内和 switch语句体内 ( C)在循环体内使用 break语句和 continue语句的作用相同 ( D) break语句只能用于 switch语句体中 国家二级 C语言(选择结构、循环结构)机试模拟试卷 2答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 算术运 算符的优先级高于关系运算符的优先级,

19、所以当 x为大于 1的奇数时, A选项的值为假,即 0。 B选项的值为不定值,但绝对不是 0。 C选项的值为真,即 1。 D选项的值为真,即 1。 【知识模块】 选择结构 2 【正确答案】 A 【试题解析】 逻辑或 “|”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道 a的值,但是若 a为 1,则左边运算对象为 1;若 a的值不是 1,则右边运算对象的值为 1,所以总能保证一边非零。 【知识模块】 选择结构 3 【正确答案】 D 【试题解析】 逻辑或运算符中只要有 一个运算量为真,结果就是真,当 c=2&c =6条件不成立时, c的值肯定不是 2、 3、 4、 5、 6,所以 c!=

20、3与 c!=5均成立,所以 D选项的结果一定为真。 【知识模块】 选择结构 4 【正确答案】 B 【试题解析】 else总是和最近的 if配对,所以进入第一个 if语句中进行条件判断时,因为是逻辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断的结果为 1。进入第二个 if语句条件判断,因为 b!=2条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第二个运算对象 (c-!=3)c的值不变,也不再执行第一个 else语句。打印 a的值 1, b的值 3, c的值 3。 【知识模块】 选择结构 5 【正确答案】 A 【试题解析】 C语言的逻辑运算符比较特别,它的垛作数没有明

21、确的数据类型,可以是任意合法的表达式,所以选择 A。 【知识模块】 选择结构 6 【正确答案】 B 【试题解析】 本题考查逻辑运算符的相关概念。逻辑与若要为真,那么两边都要为真,所以需要 m能被 5和 7整除都余 1,所以选项 B正确。 【知识模块】 选择结构 7 【正确答案】 D 【试题解 析】 if语句中的表达式可以是任意合法的数值,如常量、变量表达式,所以 D选项正确。 【知识模块】 选择结构 8 【正确答案】 C 【试题解析】 A、 B、 D选项的含义均为: a的值如果为 0,打印 y的值,否则打印 x的值。而 C选项的含义是: a的值为 0时打印 x的值,不为 0时打印 y的值,与其

22、他选项正好相反。 【知识模块】 选择结构 9 【正确答案】 C 【试题解析】 本题中 if(a=1)b=1;与 else d=3;之间多了语句 c=2;,所以会出现 else语句的位置错误的编译失败提示。 【知识模块】 选择结构 10 【正确答案】 C 【试题解析】 因为变量 a=1, b=2所以条件 a b不成立,选项 A、 B和 D相当于一条语句,选项 A是逗号表达式,选项 B和选项 D是复合语句,所以都没有执行。选项 C中,语句 “c=a”不执行,语句 “a=b; b=c; ”执行。故选项 C符合题意。 【知识模块】 选择结构 11 【正确答案】 B 【试题解析】 题目中嵌套语句的含义是

23、当 a b且 a c成立时,将 a的值赋给k,如果 a b成立而 a c不成立,则将 c的值赋给 k。如果 a b不成立而 b c成立, 则将 b的值赋给 k,如果 a b不成立且 b c也不成立,则将 c的值赋给k。判断条件表达式,只有 B选项可以表示这个含义。 【知识模块】 选择结构 12 【正确答案】 A 【试题解析】 else总是与离它最近的 if配对,所以第一个 if语句的判断条件不成立,不再执行第二个 if语句和与第二个 if语句配对的 else语句,而是直接执行打印 x+的操作,打印 x的值 1以后再加 1。 【知识模块】 选择结构 13 【正确答案】 B 【试题解析】 条件表达

24、式的含义是,如果表达式 1成立,结果为表达式 2的 值,如果不成立,则为表达式 3的值。所以题干中 k的值这样取值:如果 a b且 bc, k值结果为 1,如果 a b且 b c,则值为 0。如果 a b, k值为 0,也就是只要 a b与 b c中只要有一个条件不成立, k的值就为 0,所以选择 B选项。 【知识模块】 选择结构 14 【正确答案】 B 【试题解析】 case常量表达式只是起语句标号作用,并不使该处进行条件判断。在执行 switch语句时,根据 switch的表达式,找到与之匹配的 case语句,就从此case子句执行下去,不再进行判断,直到碰到 break或函数 结束为止。

25、所以执行内层 switch(y)时只执行了 a+,此时 a的值为 1,然后执行外层 case2语句的a+b+;, a为 2, b为 1,所以结果为 B选项。 【知识模块】 选择结构 15 【正确答案】 A 【试题解析】 B选项中 switch(int)x);语句中不应该有最后的分号。switch(expr1)中的 expr1不能用浮点类型或 long类型,也不能为一个字符串,所以 C选项错误。 case后面必须为常量表达式,所以 D选项错误。 【知识模块】 选择结构 16 【正确答案】 A 【试题解析】 default语句在 switch语句中可以省略,所以 B选项错误; switch语句中并

26、非每个 case后都需要使用 break语句,所以 C选项错误; break语句还可以用于 for等循环结构中,所以 D选项错误。 【知识模块】 选择结构 17 【正确答案】 A 【试题解析】 if语句的含义是:如果 a的值为 1,将 b的值赋给 a,否则将 a的值自增 1。选项 A中, switch(a=1)中表达式 a=1的结果如果为真,即为 1,则从case1开始执行 a+;如果 a=1的结果为假,即 0,则从 case0开始执行 a=b,所以与题干含义执行操作相反的是选项 A中的语句。 【知识模块】 选择结构 18 【正确答案】 B 【试题解析】 执行 y-直到值为 0,由于 y-是先

27、用再减,所以退出循环时, y的值为 -1。 【知识模块】 循环结构 19 【正确答案】 A 【试题解析】 k先自减再使用,所以第一次判断条件即为 while(4),条件为真执行打印 k的值 k=4-3,结果为 1,第二次判断条件即为 while(0),条件为假,结束循环,打印回车换行符,所以选择 A选项。 【知识模块】 循环结构 20 【正确答案】 C 【试题解析】 首先 char*s接受一个字符型数组的首地址,并将这个首地址赋给另一个字符型指针 char*t, while(*t+)不断循环直到 *t为 0,循环结束,此时指针 t指向结束标记 0后,所以 return(ts)返回的是字符串 s

28、所占的字节数。 【知识模块】 循环结构 21 【正确答案】 C 【试题解析】 本题重点考查的知识点是 while循环语句的应用。 aaa()函数中,首先定义了一个字符指针 t指向形参 s,然后通过一个 while循环让指针 t不断递增,直到 t指向字符串结束标识处。当 t指向结束标识处时,由于后缀 +运算符的原因,它还会被再递增 1,所以接下来的 t-语句让它回到结束标识处。最后返回t-s, s还是指向字符串第一个字符处,而 t指向了字符串结尾,故返回值为字符串的长度值,因此 C选项正确。 【知识模块】 循环结构 22 【正确答案】 B 【试题解析】 while语句中条件表达式 E的值不为 0

29、即为真,认为满足条件,所以与 B选项中表达式的含义正好相反,选择 B选项。 【知识模块】 循环结构 23 【正确答案】 A 【试题解析】 A选项中 do后面的语句只执行了一次便结束了循环; B选项中条件 while(1)永远成立,所以是死循环; C选项中 n的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死循环; D选项中 for语句第二个表达式为空,所以没有判断条件,进入死循环。 【知识模块】 循环结构 24 【正确答案】 A 【试题解析】 第一次首先执行循环体,打印 i的值 0,然后判断 while的条件i+,先用后自增,所以判断时条件为假,跳出循环,但是仍执行了 i的

30、自增操作, i的值为 1,在接下来的打印语句中进 行打印。 【知识模块】 循环结构 25 【正确答案】 C 【试题解析】 由于内层循环 for(k=1; k 3; k+)后面直接跟了空语句 “; ”,所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*”,选择 C选项。 【知识模块】 循环结构 26 【正确答案】 A 【试题解析】 第 1次 for循环, y的值为 9, y 3的值为 0,满足条件打印 -y,即先减一后打印,所以打印 8;第 2次 for循环, y的值为 7, y 3的值为 l,不执行打印语句;第 3次 for循环, y的值为 6, y 3的值为 0,满

31、足条件打印 -y,即先减一后打印,所以打印 5;第 4次 for循环, y的值为 4,不满足 if条件,不执行打印语句;第 5次 for循环, y的值为 3,满足 if条件,打印输出 2;第 6次 for循环, y的值为 1,不满足条件,不执行打印语句。 【知识模块】 循环结构 27 【正确答案】 D 【试题解析】 第 1次循环, a的值为 1,满足条件,执行 b+=a,与 a+=2,则 b的值变为 3, a的值变为 3。执行 a+, a的值为 4,满足条件进入第 2次循环,执行完循环体后, b的值为 7, a的值为 6。执行 a+, a的值为 7,满足条件进入第3次循环,执行完循环体后, b

32、的值为 14, a的值为 9。执行 a+, a的值变为10,所以选择 D选项。 【知识模块】 循环结构 28 【正确答案】 D 【试题解析】 eoutihue语句的作用是跳出循环体中剩余的语句而进行下一次循环。第 1次循环, x的值为 8,循环体中 if条件成立,打印 x的值 8后将 x减 1,再执行 continue语句,跳出本次循环。第 2次判断循环条件时, x的值变为 6,不满足循环体内 if条件,执行打印 -x的操作,即打印 5后跳出循环。第 3次判断循环条件时 x的值 为 4,满足循环体内 if条件,执行打印 x-的操作,即打印 4,后将 x值减一,执行 continue语句,跳出本

33、次循环。第 4次判断循环条件时 x的值为 2,满足循环体内 if条件,打印 x-,即打印 2,后将 x减 1, 【知识模块】 循环结构 29 【正确答案】 B 【试题解析】 每次内循环只循环一次就结束,第 1次外循环时,t=t+b0b00=1+b00=1+0=1;第 2次外循环时,t=t+b1b11=1+b11=1+1=2;第 3次外循环时,t=t+b2b22=2+b22=2+2=4。 【知识模块】 循环结构 30 【正确答案】 C 【试题解析】 本题的含义是在 1 40的整数范围中,只有当 i的值能被 5整除,且 i+2的值能被 8整除时,打印 i的值,满足这个条件的只有 32,所以选择 C

34、选项。 【知识模块】 循环结构 31 【正确答案】 B 【试题解析】 第 1次执行外循环 i的值为 1,满足条件,判断第 1次内循环, j的值为 3,不满足条件,跳出内循环。第 2次执行外循环 i的值为 2,同理也不满足内循环条件,跳出内循环。第 3次执 行外循环 i的值为 3,此时进入内循环判断条件时,条件成立,执行 m=m j, m的值为 l,跳出内循环,跳出外循环,打印 m的值。 【知识模块】 循环结构 32 【正确答案】 B 【试题解析】 continue语句的作用是跳过循环体中剩余的语句而进行下一次循环,所以 A选项错误。 break语句的作用是终止正在执行的 switch流程,跳出switch结构或者强制终止当前循环,从当前执行的循环中跳出,所以 C、 D选项错误。 【知识模块】 循环结构

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

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

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