[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷2及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷2及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷2及答案与解析.doc(30页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试( C语言程序设计)模拟试卷 2及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)赋值语句是一种执行语句,必须放在函数的可执行部分 ( B) scanf和 printf是 C语言提供的输入和输出语句 ( C)由 printf输出的数据都隐含左对齐 ( D)由 printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的 2 有如下程序段: int x=12; double y=3 141593; printf(“ d 8 6f“, x, y); 其输出结果是 ( A) 12, 3 141593 ( B) 12, 3 141593 ( C) 123 1
2、415930 ( D) 123 141593 3 有以下程序 main() int a=2, c=5: printf(“a= d, b= d n“, a,c); 程序的输出结果是 ( A) a= 2, b= 5 ( B) a= d, b= d ( C) a=2, b=5 ( D) a= d, b= d 4 若变量已正确定义为 int型,要通过语句 scanf(“ d, d, d“, &a, &b,&c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (注: 代表一个空格符 ) ( A) 1, 2, 3 ( B) 1, 2, 3 ( C) 1, 2, 3 ( D) 12
3、3 5 设有定义: int a: float b;执行 scanf(“ 2d f“, &a, &b);语句时,若从键盘输入 876 543 0则 a和 b的值分别是 ( A) 876和 543 0 ( B) 87和 6 0 ( C) 87和 543 0 ( D) 76和 543 0 6 若有定义 int a: float b: double c;程序运行时输入: 3 4 5能把值 3输入给变量a、 4输入给变量 b、 5输入给变量 C的语句是 ( A) scanf(“ d 1f 1f“, a, b, &c); ( B) scanf(“ d f 1f“, &a, &b, &c); ( C) sc
4、anf(“ d f 1=“, &a, &b, &c); ( D) scanf(“ 1f 1f 1f“, &a, &b, &c); 7 以下叙述中正确的是 ( A)当用 scanf从键盘输入数据时,每行数据在没按下同车键 (Enter键 )前,可以任意修改 ( B)花括号对 只能用来表示函 数的开头和结尾,不能用于其他目的 ( C)空语句就是指程序中的空行 ( D)复合语句在语法上包含多条语句,其中不能定义局部变量 8 以下叙述中正确的是 ( A)在 scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符 ( B)只能在 printf函数中指定输入数据的宽度,而不能在 scanf函数中
5、指定输入数据占的宽度 ( C) scanf函数中的字符串,是提示程序员的,输入数据时不必管它 ( D)复合语句也被称为语句块,它至少要包含两条语句 9 有以下程序 #include main() char c1, c2, c3, c4, c5, c6; scanf(“ c c c c“, &c1, &c2, &c3, &c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“ c c n“, c5, c6); ) 程序运行后,若从键盘输入 (从第 1列开始 )123 45678则输出结果是 ( A) 1256 ( B
6、) 1278 ( C) 1245 ( D) 1267 10 以下程序段完全正确的是 ( A) int k, *p=&k; scanf(“ d“, p); ( B) int*p; scanf(“ d“, p); ( C) int*p; scanf(“ d“, &p); ( D) int k, *p; *p=&k; scanf(“ d“, p); 11 有以下程序段 intj; float y; char name50; scanf(“ 2d f s“, &j, &y, name); 当执行上述程序段,从键盘上输入 55566 7777abc后, Y的值为 ( A) 55566 0 ( B) 77
7、77 0 ( C) 566 0 ( D) 566777 0 12 有以下程序 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) 0, 0, 0, 3 ( B) 1, 1, 2, 0 ( C)编译有错 ( D) 0, 1, 2, 0 13 若变量已正确定义,在 if(W)printf(“ d n“, k);中,以下不可替代 W的是 ( A) ch=getchar() ( B) a=b+c ( C) a b+c ( D) a+ 14 设
8、有定义: int a=1, b=2, c=3;以下语句中执行效果与其它三个不同的是 ( A) if(ab)c=a; a=b; b=c; ( B) if(a b)c=a, a=b, b=c; ) ( C) iffab)c=a, a=b, b=c; ( D) if(a b)c=a; a=b; b=c; ) 15 有如下嵌套的 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)?(bc)?b: c); ( B) k=(a c)?b: c; ( C) k=(a c)
9、?a: c; ( D) k=(a b)?(a c)?a: c): (b c)?b: c); 16 有以下程序 #include main()int x; scanf(“ d“, &x); iffx =3); else if(x!=10)printf(“ d n“, x); 程序运行时,输入的值在哪个范围才会有输出结果 ( A)不等于 10的整数 ( B)大于 3或等于 10的整数 ( C)小于 3的整数 ( D)大于 3且不等 10的整数 17 下列条件语句中,输出结果与其他语句不同的是 ( A) if(a=0)printf(“ d n“, x); else printf(“ d n“, y)
10、; ( B) if(a=0)printf(“ dkn“, y); else printf(“ d n“, x); ( C) if(a!=0)printf(“ dha“, x); else printf(“ d n“, y); ( D) if(a)printf(“ dkn“, x); else printf(“ d n“, y); 18 若有以下程序 #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(
11、“ d n“, r); 则程序的输出结果是 ( A) 10 ( B) 6 ( C) 7 ( D) 3 19 若有以下程序 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(“ d n“, r); 则 程序的输出结果是 ( A) 7 ( B) 10 ( C) 6 ( D) 3 20 有以下程序 main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a+: br
12、eak; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a= d, b= d n“, a, b); 程序的运行结果是 ( A) a=2, b=2 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=1 21 下列叙述中正确的是 ( A)在 switch语句中必须使用 default ( B) break语句必须与 switch语句中的 case配对使用 ( C)在 switch语句中,不一定使用 break语句 ( D) break语句只能用于 switch语句 22 以下选项中与
13、 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 0: a+; ) 23 若以下选项中的变量 a, b, y均已正确定义并赋值,则语法正确的 switch语句是 ( A) switch(a*a+b
14、*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*bcase 10: y=a+b; default: y=a-b; ) 24 关于 “while(条件表达式 )循环体 ”,以下叙述正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的
15、执行次数 与循环体的执行次数一样 ( C)条件表达式的执行次数总是比循环体的执行次数多一次 ( D)条件表达式的执行次数与循环体的执行次数无关 25 有以下程序 main() int k=5: while(-k) printf(“ d“, k-=3); printf(“ n“); 执行后的输出结果是 ( A) 2 ( B) 4 ( C) 1 ( D)死循环 26 有以下程序 #include void main() int s; scanf(“ d“, &s); while(s 0) switch(s) case 1: printf(“ d“, s+5); case 2: printf(“ d
16、“, s+4); break; case 3: printf(“ d“, s+3); default: printf(“ d“, s+1); break; scanf(“ d“, &s); 运行时,若输入 1 2 3 4 5 0,则输出结果是 ( A) 66656 ( B) 6566456 ( C) 66666 ( D) 6666656 27 在以下给出的表达式中,与 while(E)中的 (E):不等价的表达式是 ( A) (E 0E 0) ( B) (!E=0) ( C) (E!=0) ( D) (E=0) 28 若有以下程序 main() int a=-2b=0; while(a+) +
17、b: pfintf(“ d, d n“, a, b); 则程序的输出结果是 ( A) 0 2 ( B) 1, 2 ( C) 1, 3 ( D) 2, 3 29 有以下程序 main() int a=-2, b=0; while(a+&+b); printf(“ d, dkn“, a, b); 程序运行后输出结果是 ( A) 0, 3 ( B) 1, 2 ( C) 1, 3 ( D) 0, 2 30 以下不构成无限循环的语句或语句组是 ( A) n=0; do+n; )while(n =0); ( B) n=0; while(1)n+; ) ( C) n=10; while(n); n-; (
18、D) for(n=0, i=1; i+)n+=i; 31 若变量已正确定义,有以下程序段 i=0: do printff“ d, “, i); while(i+); printf(“ d n“, i);其输出结果是 ( A) 0 0 ( B) 1, 1 ( C) 0 1 ( D)程序进入无限循环 32 有以下程序 main() int a=3; do printf(“ d, “, a-=2); )while(!(-a); printf(“ n“); 程序运行后的输出结果是 ( A) 1, ( B) 1, -2, ( C) 3, 0, ( D) 1,0 33 有以下程序 #include mai
19、n() int y=9; for(; y 0; y-) if(y 3=0)printf(“ d“, -y); 程序的运行结果是 ( A) 963 ( B) 852 ( C) 741 ( D) 875421 34 有以下程序 #include void main() int c=0, k; for(k=1; k 3; k+) switch(k) default: c+=k; case 2: c+; break; case 4: c+=2; break; printf(“ d n“, c); ( A) 9 ( B) 7 ( C) 5 ( D) 3 35 有以下程序 main() int i; fo
20、r(i=l; i =40; i+) if(i+ 5=0) if(+i 8=0)printf(“ d“, i); printf(“ n“); 执行后的输出结果是 ( A) 24 ( B) 5 ( C) 32 ( D) 40 36 有以下程序 main() int a=1, b=2; for(; a 8; a+) b+=a: a+=2: printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( A) 8, 11 ( B) 10, 14 ( C) 7, 11 ( D) 9 18 37 若有以下程序 main() int a=6, b=0, c=0; for(; a; ) b+=a
21、: a=+c: printf(“ d, d, d n“, a,b, c); 则程序的输出结果是 ( A) 1, 14, 3 ( B) 0, 18, 3 ( C) 0, 14, 3 ( D) 0, 14, 6 38 以下叙述中正确的是 ( A)对于 “for(表达式 1;表达式 2;表达式 3)循环体 ”首先要计算表达式 2的值,以便决定是否开始循环 ( B)对于 “for(表达式 1;表达式 2;表达式 3)循环体 ”,只在个别情况下才能转换成 while语句 ( C)只要适当地修改代码,就可以将 do-while与 while相互转换 ( D)如果根据算法需要 使用无限循环 (即通常所称的
22、“死循环 ”),则只能使用 while语句 39 以下程序段中的变量已正确定义 for(i=0; i 4; i+, i+) for(k=1; k 3; k+); printf(“*“); 程序段的输出结果是 ( A) * ( B) * ( C) * ( D) * 40 有以下程序 #inc lude main() int i, j, m=55; for(i=1; i =3; i+) for(j=3; j =i, j+)m=m j; printf(“ d n“, m); 程序的运行结果是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 41 有以下程序 main() int ij, x=
23、0; for(i=0; i 2; i+) x+; for(j=0; j =3; j+) if(j 2)continue; x+; x+; printf(“x= d n“x); 程序执行后的输出结果是 ( A) x=4 ( B) x=6 ( C) x=12 ( D) x=8 42 以下叙述中正确的是 ( A) continue语句的作用是:使程序的执行流程跳出包含它的所有循环 ( B) break语句只能用在循环体内和 switch语句体内 ( C)在循环体内使用 break语句和 continue语句的作用相同 ( D) break语句只能用于 switch语句体中 国家二级 C语言机试( C
24、语 言程序设计)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 C语言本身没有提供输入输出语句,但是可以通过调用标准库函数中提供的输入和输出函数来实现输入和输出,选项 B)错误;采用 printf输出数据,输出数据都默认为右对齐,若要左对齐,可以在格式控制中的 “ ”和宽度之间加一个 “-”号来实现,选项 C)错误: printf的输出精度由变量的类型决定,与域宽无关,选项 D)错误。 【知识模块】 C语言程序设计 2 【正确答案】 D 【试题解析】 本题考查 printf语句。 printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 语言程序设计 模拟 答案 解析 DOC
