[计算机类试卷]国家二级C语言机试(选择题)模拟试卷16及答案与解析.doc

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

1、国家二级 C语言机试(选择题)模拟试卷 16 及答案与解析 一、选择题 1 以下能正确输出字符 a 的语句是( )。 ( A) printf(“%s“, “a“); ( B) printf(“%s“, a); ( C) printf(“%c“, “a“); ( D) printf(“%d“, a); 2 以下不能输出小写字母 a的选项是( )。 ( A) printf(“%cn“,“a“); ( B) printf(“%cn“,A+32); ( C) putchar(97); ( D) putchar(a); 3 有以下程序段 char c1,c2,c3; scanf(“%c%c%c“, 若要

2、给 c1、 c2、 c3分别输入字母 A、 B、 C,则以下对输入形式的描述正确的是( )。 ( A)字母 A、 B、 C之间不能有分隔符 ( B)字母 A、 B、 C之间可以用空格分隔 ( C)字母 A、 B、 C之间可以用回车符分隔 ( D)字母 A、 B、 C之间可以用 Tab键分隔 4 设有定义: char s81; int i=0; 以下不能将一行(不超过 80个字符)带有空格的字符串正确读入的语句或语句组是( )。 ( A) scanf(“%s“,s); ( B) while(si+=getchar()!=n);si=0; ( C) gets(s); ( D) do scanf(“

3、%c“, while(si+!=n); si=0; 5 有以下程序段 #include int j; float y; char name50; scanf(“%2d%f%s“, 当执行上述程序段,从键盘上输入 55566 7777abc 后, y的值为( )。 ( A) 566.0 ( B) 55566.0 ( C) 7777.0 ( D) 566777.0 6 有以下程序段 char name20; int num; scanf(“name=%s num=%d“,name, 当执行上述程序段,并从键盘输入: name=Lili num=1001后, name的值为( )。 ( A) Lil

4、i ( B) name=Lili ( C) Lili num= ( D) name=Lili num=1001 7 以下正确的字符串常量是( )。 ( B) abc ( C) Olympic Games ( D) 8 以下语句的输出结果是 printf(“%dn“, strlen(“t“065xffn“);( )。 ( A) 5 ( B) 8 ( C) 14 ( D)输出项不合法,无正常输出 9 有如下程序 #include #include main() printf(“%dn“, strlen(“0n0111“); 程序运行后的输出结果 是( )。 ( A) 6 ( B) 8 ( C) 9

5、 ( D) 4 10 有三个关系 R、 S和 R如下:由关系 R和 S通过运算得到关系 T,则所使用的运算为( )。 ( A)并 ( B)自然连接 ( C)笛卡尔积 ( D)交 11 若有定义 int x,y; 并已正确给变量赋值,则以下选项中与表达式 (x-y)?(x+) : (y+)中的条件表达式 (x-y) 等价的是( )。 ( A) (x-y0) ( B) (x-y0) ( D) (x-y=0) 12 有以下程序 #include main() char a=H; a = ( a=A if (!x) y+; else if (x=0) if (x) y+=2; else y+=3; p

6、rintf(“%dn“, y); 程序运行后的输出结果是( )。 ( A) 0 ( B) 2 ( C) 1 ( D) 3 14 若有定义: 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“); ( C) switch(x) case 1.0: printf(“*n“); case 2.0: print

7、f(“*n“); ( D) switch(a+b) case 1: printf(“*n“); case c: printf(“*n“); 15 若变量已正确定义,在 if (W) printf(“%dn“ ,k ); 中,以下不可替代 W的是( )。 ( A) ab) a=b, b=c; c=a; printf(“a=%d b=%d c=%dn“, a, b, c); 程序的输出结果是( )。 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C) a=10 b=30 c=10 ( D) a=50 b=30 c=50 17 设有定义: int a=1,b=2

8、,c=3; 以下语句中执行效果与其它三个不同的是( )。 ( A) if(ab) c=a;a=b;b=c; ( B) if(ab) c=a,a=b,b=c; ( C) if(ab) c=a,a=b,b=c; ( D) if(ab) c=a;a=b;b=c; 18 if语句的基本形式是: if (表达式 ) 语句,以下关于 “表达式 “值的叙述中正确的是( )。 ( A)可以是任意合法的数值 ( B)必须是整数值 ( C)必须是正数 ( D)必须是逻辑值 19 有如下嵌套的 if语句 if(ac)?b:c); ( C) k=(a main() int x; scanf(“%d“, if(xb?(

9、bc ? 1 : 0) : 0; 功能相同的是( )。 ( A) if(ab) else k=0; ( B) if(ab)|(bc) k=1; else k=0; ( C) if(ab) k=1; else if(bc) k=1; else k=0; 22 以下选项中与 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+;br

10、eak; case 1:a=b; ( D) switch(a=1) case 1:a=b;break; case 0:a+; 23 有以下程序 #include 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,3 ( B) 1,3,2 ( C) 1,2,3 ( D) 3,2,1 24 下列条件语句中,输出结果与其他语句不同的是( )。 ( A) if ( a=0 ) printf(“%dn“,

11、 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); 25 有以下程序 #include main() int x=1,y=2,z=3; if(xy) if(y main() int a=1,b=2,c=3,d=4; if (a=2) | (b=1) c=2

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

13、D) 3 28 若有以下程序 #include 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) 5,1,2,-1 ( B) 2,1,2,-1 ( C) 2,2,2,4 ( D) 1,2,3,4 29 若有以下程序 #include 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)

14、r+=4; printf(“%dn“, r); 则程序的输出结果是( )。 ( A) 10 ( B) 7 ( C) 6 ( D) 3 30 有以下程序 #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=2,b=1 ( B) a=1,b=1 ( C) a=1,b=0 ( D) a=2,b

15、=2 31 有以下程序 #include main() int k, j, s; for( k=2; k main() double x=2.0, y; if( x main() int a,b; for (a=0; a ,则输出结果是( )。 ( A) 2,3,4,3,4,4, ( B) 2,3,4, ( C) 2,2,2,3,3,4, ( D) 2,3,4,3,4,5,4,5,6 38 有以下程序 #include main() int a,b; for (a=0; a,则输出结果是( )。 ( A) 1,2,3,2,3,3, ( B) 1,2,3, ( C) 2,3,4,3,4,4, (

16、 D) 1,1,1,2,2,3 39 有以下程序段,若变量已正确定义并赋值 if(ab)printf(“x=%d,“, x); else printf(“y=%d,“, y); if(ab)printf(“x=%d,“, x);j+; else printf(“y=%d,“, y);i+; ( B) if(ab)printf(“x=%d,“, x);i+; else printf(“y=%d,“, y);j+; ( C) if(a=b)printf(“x=%d,“, x);i+; else printf(“y=%d,“, y);j+; 40 以下程序的功能是判断输入的一个整数是否能被 3或 7

17、整除,若能整除,输出YES,否则输出 NO。在下划线处应填入的选项是 #include main() int k; printf(“Enter a int number : “); scanf(“%d“, if _ printf(“YESn“); else printf(“NOn“); printf(“%dn“,k%3); ( )。 ( A) ( (k%3=0) | (k%7=0) ) ( B) (k/3=0) | (k/7=0) ( C) ( (k%3=0) | (k%7=0) ) ( D) ( (k%3=0)“,答案选 A)。 【知识模块】 顺序结构程序设计 3 【正确答案】 A 【试题解

18、析】 考查 scanf 函数的格式输入,输入的格式要严格遵循 “格式控制串 “中的格式,如果 “格式控制串 “中没有非格式字符,则输入时也不能输入非格式字符,答案选 A。 【知识模块】 顺序结构程序设计 4 【正确答案】 A 【试题解析】 函数 scanf()输入字符串时默认空格为间隔符,所以不能输入空格,答案选 A。 【知识模块】 顺序结构程序设计 5 【正确答案】 A 【试题解析】 函数 scanf()输入字符串时默认空格为间隔符,格式控制符若为“%2d“表示控制输入语句的宽度为 2,程序中输入为 55566 7777abc时,只把 55赋予变量 x,而把 566赋予变量 y, 7777a

19、bc赋予变量 name,所以答案选 A。 【知识模块】 顺序结构程序设计 6 【正确答案】 A 【试题解析】 考查 scanf 的格式输入。如果 scanf 的 “内有普通字符,则程序调试的时候必须原样输入,所以字符数组 name 接受到的字符为 Lili,答案选 A。 【知识模块】 顺序结构程序设计 7 【正确答案】 A 【试题解析】 字符串常量是由两个双引号引起来的若干 字符所构成的字符序列,而且 ? ?不是 C语言合法字符,所以 “ “也不是合法的字符串常量,答案选 A。 【知识模块】 顺序结构程序设计 8 【正确答案】 A 【试题解析】 字符串 “t“065xffn“中共有五个转义字符

20、,分别是 ?t?、 ? “ ?、 ?065?、 ?xff?、 ?n?,各代表一个字符, strlen()计算的是字符串的实际长度(不包含结束标识符),所以输出结果为 5,答案选 A。 【知识模块】 顺序结构程序设计 9 【正确答案】 A 【试题解析】 字符串 “0n0111“中共有两个转义字符,分别是 ?n?、 ?1?,各代表一个字符, strlen()计算的是字符串的实际长度(不包含结束标识符),所以输出结果为 6,答案选 A。 【知识模块】 顺序结构程序设计 10 【正确答案】 D 【试题解析】 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把

21、重复的属性列去掉,所以 B)错误。笛卡尔积是用 R集合中元素为第一元素, S集合中元素为第二元素构成的有序对,所以 C)错误。根据关系 T 可以很明显的看出是从关系 R与关系 S中取得相同的关系组所以取得是交运算,选择 D)。 11 【正确答案】 A 【试题解析】 考查条件表达式。条件表达式的形式为: 表达式 1 ? 表达式 2 : 表达式 3 ,计算 “表达式 1“的值,若为 “真 “,取 “表达式 2“的值作为整个条件表达式的值;若为 “假 “,取 “表达式 3“的值作为整个条件表达式的值。本程序中要选能判定 (x-y)为 “真 “的语句,即 x! =y,或者 (x-y 0),选 A。 【

22、知识模块】 选择结构程序设计 12 【正确答案】 A 【试题解析】 考查条件运 算符。条件表达式的形式为: 表达式 1 ? 表达式 2 : 表达式 3 ,计算 “表达式 1“的值,若为 “真 “,取 “表达式 2“的值作为整个条件表达式的值;若为 “假 “,取 “表达式 3“的值作为整个条件表达式的值。字符参与运算时一般计算其 ASCII 码,并且一个字母的小写 -大写 =32( ASCII 码),该程序将大写字母转成对应的小写字母,答案选 A。 【知识模块】 选择结构程序设计 13 【正确答案】 A 【试题解析】 在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行, y值没有发生

23、改变,答案选 A。 【知识模块】 选择结构程序设计 14 【正确答案】 A 【试题解析】 switch(表达式 )后不能有分号,选项 B)错误; switch 语句的圆括号中表达式的值必须为整型或者字符型,不能为实型,选项 C)错误; case后面的表达式可以是求得整型量和字符型量的常量表达式,但是常量表达式中不能含有变量,选项 D)错误;答案选 A)。 【知识模块】 选择结构程序设计 15 【正确答案】 A 【试题解析】 C语言中没有符号 “b) if(bc) k=1; else k=0; else k=0;“。即是当 ab并且 bc时, k=1,其余情况 k=0,所以答案选 A)。 【知识

24、模块】 选择结构程序设计 22 【正确答案】 A 【试题解析】 题目程序的意思是当 a值为 1的时候,将 b值赋给 a,若 a值不为1则 a自加 1。选项 A)中,若 a的值为 1,则表达式 a=1的值为 1,进入 case 1分支, a自加 1,而 a值不为 0时,执行 “a=b; break;“,和题目程序执行的语句不一致,所以答案选 A)。 【知识模块】 选择结构程序设计 23 【正确答案】 A 【试题解析】 else总是与前面距离它最近的且未曾配对的 if语句配对。“a=1,b=2,c=3,d=0“,所以语句 “if(a=1 “,输出 x的值为 1,答案选 A。 【知识模块】 选择结构

25、程序设计 26 【正确答案】 A 【试题解析】 根据逻辑表达式的 “短路求值 “原理,逻辑或的第一个表达式 “a=2“的值为真,则表达式 “b=1“不再计算,整个逻辑表达式值为真,执行语句 “c=2;“,第二个 if语句条件不成立,所以第二个表达式 “d=-1“也不计算,所以变化的值有a和 c,变化后 a=2, c=2,所以答案选 A。 【知识模块】 选择结构程序设计 27 【正确答案】 A 【试题解析】 else总是与前面距离它最近的且未曾配对的 if语句配对。 “if (a!=1); else r=1;“执行的是空语句 “;“。 “if (b=2) r+=2; else;“执行的是语句 “

26、r+=2“, r值为 2。 “if (c!=3) r+=3;else;“执行的是空语句 “;“。 “if (d=4) r+=4;“执行语句“r+=4“,计算后 r的值为 7,输出结果为选项 A)。 【知识模块】 选择结构程序设计 28 【正确答案】 A 【试题解析】 该程序中所有的逻辑表达式均不满足 “短路求值 “原理,所以所有的表达式都需要计算,第一个 if 语句执行完毕之后, a=2, b=1, c=2,第二个 if语句执行完毕之后, d=-1, a=5,所以最终的 a=5, b=1, c=2, d=-1,答案选 A。 【知识模块】 选择结构程序设计 29 【正确答案】 A 【试题解析】

27、if语句的形式为 “if(表达式 ) 语句体 “,若语句体为复合语句,则必须用 “括起来,否则只会执行 if(表达式 )下的第一条语句。所以整个程序执行的语句为 “r=1; r+=2; r+=3; r+=4;“,输出的 r值为 10。答案选 A。 【知识模块】 选择结构程序设计 30 【正确答案】 A 【试题解析】 break 语句用于循环嵌套或者 switch 选择嵌套时,只能跳出当前层的 switch 选择层或循环层。本程序中,先执行 switch(x),而 x=1,执行 case 1对应的语句块,进入嵌套的选择语句 switch(y), y=0,执行 case 0: a+; break;

28、此时a=1,遇到 break 语句后跳出 switch(y),没有遇到 break,继续执行 case 2: a+; b+; break;此时 a=2, b=1。遇到 break 跳出 switch(x)。最终 a=2, b=1,输出结果为 【 知识模块】 选择结构程序设计 31 【正确答案】 A 【试题解析】 嵌套循环,外层循环 k 从 2循环到 5,每次自增 2,。内层循环 j从k 到 5,每次自增 1, s为在 s的基础上累加当前内层循环所有的 j值。程序输出的是最后一次外层循环时 s的统计值,即 k=4时, j的取值为 4、 5,所以 s=10,答案选 A。 【知识模块】 选择结构程序

29、设计 32 【正确答案】 A 【试题解析】 循环条件是 “k=1“,该表达式恒为真,所以程序构成死循环,答案选 A。 【知识模块】 选择结构程序设计 33 【正确答 案】 A 【试题解析】 if多分支选择结构中,从上到下依次判定 if(或 else if)后的圆括号内的表达式的值,只有之前的 if(或 else if)条件都为假时,才会判定下一条else if 语句的条件是否成立,该程序中,执行的是语句 “else if( xb时,执行语句 “printf(“x=%d, “, x);“和语句 “ j+;“,否则执行语句 “printf(“y=%d, “,y);“和语句 “i+;“,由此答案选 A。 【知识模块】 选择结构程序设计 40 【正确答案】 A 【试题解析】 根据程序的逻辑设计, if 的判定条件应该是 k 对 3或者 7取余的值等于 0,使用逻辑或 “|“、求余运算符 “%“以及等于关系运算符 “=“,答案选 A。 【知识模块】 选择结构程序设计

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

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

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