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

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

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

2、=1, b=2, c=3, d=0; if(a=1&b+=2) if(b!=2c一 !=3) prinff(“ d, d, d n”, a, b, c); else prinff(“ d, d, d n”, a, b, c); else prinff(“ d, d, d n”, a, b, c); 程序的运行结果是 ( )。 ( A) 1, 3, 2 ( B) 1, 3, 3 ( C) 1, 2, 3 ( D) 3, 2 1 5 下列关于逻辑运算符两侧运算对象的叙述中正确的是 ( )。 ( A)可以是任意合法的表达式 ( B)只能是整数 0或非 0整数 ( C)可以是结构体类型的数据 ( D)

3、只能是整数 0或 1 6 设有宏定义: #define IsDIV(k, n)(k n=1)?1: 0),且变量 m已正确 定义并赋值,则宏调用: Is DIV(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(表达式 )语句,以下关于 “表达式 ”值的叙述中正确的是( )。 ( A)必须是逻辑值 ( B)必须是整数值 ( C)必须是正数 ( D)可以是任意合法的数值 8

4、下列条件语句中,输出结果与其他语句不同的是 ( )。 ( A) if(a!=0)printf(“ d n”, x); else prinff(“ d n”, y); R)if f a=0)prinff(“ d n”, y); else printf(“ d n”, x); ( B) if(a=0)printf(“ d n”, x); else printf(“ d n”, y); ( C) if( ( D) printf(“ d n”, x); else printf(“ d n”, y); 9 有以下程序: #include main() int a=0, b=0, c=0, d=0; if

5、(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(ab)a, a=b, b=e; ( B) if(ab): a, a: b, b=C; ( C) if(ab)a; a=b; b=c; ( D) if(ab)e: a; a: b; b=c; 11 有以下程序: #in

6、clude main() int x=1, y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“ d n”, Y); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 2 ( C) 1 ( D) 0 12 有嵌套的 if语句: if(ac)?b: c); ( B) k=(a main() int x=1, y=2, z=3; if(xy)if(yb?(be?1: 0): 0;功能相同的是 ( )。 ( A) if(ab)(bc)k=1; else k=0: ( B) if(ab)&(bc)k=1; else k=0; (

7、C) if(ab)k=1; else if(bc)k=1; else k=0; 15 有以下程序: main() int x=1, y=0, a=0, b=0; switch(x) ease 1: switch(y) printf(“a= d, b= d n”, a, b); 程序的运行结果是 ( )。 ( A) a=2, b=2 ( B) a=2, b=1 ( C) a=1, b: 1 ( D) a=1, b=0 16 若有定义: float x=1 5; int a=1, b=3, c=2;,则正确的 switch语句是 ( )。 ( A) switch(a+b) case 1: prin

8、ff(“* n”); case 2+1: printf(“* n”); ( B) switch(int)x); case 1: prinff(“* n”); case 2: prinff(“* n”); ( C) switch(x) case 1 0: printf(“* n”); case 2 0: printf(“* n”); ( D) switch(a+b) case 1: prinff(“* n”); case c: prinff(“* n”); 17 下列叙述中正确的是 ( )。 ( A)在 switch语句中不一定使用 break语句 ( B)在 switch语句中必须使用 def

9、ault语句 ( C) break语句必须与 switch语句中的 ease配对使用 ( D) break语句只能用于 switch语句 18 下列选项中与 if(a=1)a=b; else a+;语句功能不同的 switch语句是 ( )。 ( A) switch(a=1) ease 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; bre

10、ak; case 0: a+: 19 有以下程序: #include main() int y=10: while(y一一 ); printf(“y= d n”, Y); 程序执行后的输出结果是 ( )。 ( A) y=0 ( B) y=一 1 ( C) y=1 ( D) while构成无限循环 20 有以下程 序: #include main() int k=5; while(一 k) printf(“ d”, k一 =3); printf(“ n”); 执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 4 ( D)死循环 21 有以下函数: int fun(char*s)

11、 char*t=s: while(*t+); reHm(ts); 该函数的功能足 ( )。 ( A)计算 s所指字符串的长度 ( B)比较两个字符串的大小 ( C)计算 s所指字符串占用内存字节的个数 ( D)将 s所指字符串复制到字符串 t中 22 有以下函数: int aaa(char*s) char*t=s: while(*t+); t一一: return(ts); 以下关于 aalt函数功能叙述正确的是 ( )。 ( A)将串 s复制到串 t ( B)比较两个串的大小 ( C)求字符串 s的长度 ( D)求字符串 s所占字节数 23 在以下给出的表达式中,与 while(E)中的 (E

12、)不等价的表达式是 ( )。 ( A) (E 0F main() int y=9; for(; y0; y一一 ) if(y 3=0) prinff(“ d”,一 y); 程序的运行结果是 ( )。 ( A) 852 ( B) 963 ( C) 741 ( D) 875421 28 有以下程序: #include main() int a=1, b=2; for(; a main() int x=8; for(; x0; x一一 ) if(x 3) printf(“ d, ”, x一一 ); continue; printf(“ d, ”,一 x); 程序的运行结果是 ( )。 ( A) 7,

13、 4, 2, ( B) 8, 7, 5, 2, ( C) 9, 7, 6, 4, ( D) 8, 5, 4, 2, 30 有以下程序: #include main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i main() int i; for(i=1; i main() int i, j, m=55; for(i=1; i=2&cb且bc, k值结果为 1,如果 ab且 bb与 bc中只要有一个条件不成立, k的值就为 0,所以选择 B选项。 【知识模块】 选择结构 15 【正确 答案】 B 【试题解析】 case常量表

14、达式只是起语句标号作用,并不使该处进行条件判断。在执行 switch语句时,根据 switch的表达式,找到与之匹配的 case语句,就从此case子句执行下去,不再进行判断,直到碰到 break或函数结束为止。所以执行内层 switch(y)时只执行了 a+,此时 a的值为 1,然后执行外层 case 2语句的a+; b+;, a为 2, b为 1,所以结果为 B选项。 【知识模块】 选择结构 16 【正确答案】 A 【试题解析】 B选项中 switch(int)x);语句中不应该有最后的分号。switch(expr1)中的 expr1不能用浮点类型或 long类型,也不能为一个字符串,所以

15、 C选项错误。 case后面常量表达式的类型必须与 switch后面表达式的类型一致,所以 D选项错误。 【知识模块】 选择结构 17 【正确答案】 A 【试题解析】 defauh语句在 switch语句中可以省略,所以 B选项错误; switch语句中并非每个 case后都需要使用 break语句,所以 C选项错误; break语句还可以用于 for等循环结构中,所以 D选项错误。 【知识 模块】 选择结构 18 【正确答案】 A 【试题解析】 if语句的含义是:如果 a的值为 1,将 b的值赋给 a,否则将 a的值自增 1。是 switch(a=1)中表达式 a=1的结果如果为真,即为 1

16、,则从 easel开始执行,直到遇到 break语句跳出 switch语句,如果 a=1的结果为假,即 0,则从 case0开始执行,所以与题干含义执行操作相反的是选项 A中的语句。 【知识模块】 选择结构 19 【正确答案】 B 【试题解析】 执行 y一直到值为 0,由于 y一是先用再减,所以退出循环时, y的值 为一 1。 【知识模块】 循环结构 20 【正确答案】 A 【试题解析】 一 k先自减再使用,所以第一次判断条件即为 while(4),条件为真执行打印 k的值 k=43,结果为 1,第二次判断条件即为 while(0),条件为假,结束循环,打印回车换行符,所以选择 A选项。 【知

17、识模块】 循环结构 21 【正确答案】 A 【试题解析】 首先 char*s接受一个字符型数组的首地址,并将这个首地址赋给另一个字符型指针 char*t, while(*t+)不断循环直到 *t为 0,再将 t一 1, 这时字符指针 t指向字符串的最后一个字符,又因为 s指向字符数组的首地址,即字符串的首地址,所以 return(ts)便是返回字符数组中字符串的长度。 【知识模块】 循环结构 22 【正确答案】 C 【试题解析】 本题重点考查的知识点是 while循环语句的应用。 aaa ()函数中,首先定义了一个字符指针 t指向形参 s,然后通过一个 while循环让指针 t不断递增,直到

18、t指向字符串结束标识处。当 t指向结束标识处时,由了后缀 +运算符的原因,它还会被再递增 1,所以接下来的 t一语句让它回到束标识处。最后返 回ts, s还是指向字符串第一个字符处,而 t指向了字符串结尾,故返回值为字符串的长度值,因此 C选项正确。 【知识模块】 循环结构 23 【正确答案】 B 【试题解析】 while语句中条件表达式 E的值不为 0即为真,认为满足条件,所以与 B选项中表达式的含义正好丰舀反,选择 B选项。 【知识模块】 循环结构 24 【正确答案】 A 【试题解析】 A选项中 do后面的语句只执行了一次便结束了循环; B选项中条件 while(1)永远成立,所以是死循环

19、; C选项中 n的值为 10,而循环体为空语句 ,所以 while(n)永远为真,进入死循环; D选项中 for语句第二个表达式为空,所以没有判断条件,进入死循环。 【知识模块】 循环结构 25 【正确答案】 A 【试题解析】 第一次首先执行循环体,打印 i的值 0,然后判断 while的条件i+,先用后自增,所以判断时条件为假,跳出循环,但是仍执行了 i的自增操作, i的值为 l,在接下来的打印语句中进行打印。 【知识模块】 循环结构 26 【正确答案】 C 【试题解析】 由于内层循环 for(k=1; k3; k+)后面直接跟了空语句 “; ”,所以在循环内部什么操作也不做,跳出外层循环后

20、执行打印语句,所以打印了一个“*”,选择 C选项。 【知识模块】 循环结构 27 【正确答案】 A 【试题解析】 第 1次 for循环, y的值为 9, y 3的值为 0,满足条件打印一 y,即先减一后打印,所以打印 8;第 2次 for循环, y的值为 7, y 3的值为 1,不执行打印语句;第 3次 for循环, y的值为 6, y 3的值为 0,满足条件打印一 y,即先减一后打印,所以打印 5;第 4次 for循环, y的值为 4,不满足 if条件,不执行打印语句;第 5次 for循环, y的值为 3,满足 if条件,打印输出 2;第 6次 for循环, y的值为 1,不满足条件,不执行

21、打印语句。 【知识模块】 循环结构 28 【正确答案】 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的值为 14, a的值为 9。执行 a+, a的值变为10,所以选择 D选项。 【知识模块】 循环结构 29 【正确答案】 D 【试题解析】 coutinue语句的作用是跳出循环体中剩余的语句而进行下一次循环。第 1次循环, x的值为 8,循环

22、体中 if条件成立,打印 x的值 8后将 x减 1,再执行 continue语句,跳出本次循环。第 2次判断循环条件时, x的值变为 6,不满足循环体内 if条件,执行打印一 x的操作,即打印 5后跳出循环。第 3次判断循环条件时 x的值为 4,满足循环体内 if条件,执行打印 x一的操作,即打印 4,后将 x值减一,执行 continue语句,跳出本次循环。第 4次判断循环条件时 x的值为 2,满足循环体内 if条件,打印 x一,即打印 2,后将 x减 1,执行 continue语句,跳出本次循环。在进行 for条件表达式中第 3个表达式 x一的操作后, x的值为 0,不满足条件,结束循环。

23、所以打印结果为 8, 5, 4, 2,。 【知识模块】 循环结构 30 【正确答案】 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。 【知识模块】 循环结构 31 【正确答案】 C 【试题解析】 本题的含义是在 1 40的整数范围中,只有当 i的值能被 5整除,且 i+2的值能被 8整除时,打印 i的值,满足这个条件的只有 32,所以选择 C选项。 【知识模块】 循环结构 32 【正确答案】 B 【试题解析】

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

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

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

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