ImageVerifierCode 换一换
格式:DOC , 页数:22 ,大小:55KB ,
资源ID:499056      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-499056.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案与解析.doc)为本站会员(赵齐羽)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

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