[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷1及答案与解析.doc

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

1、国家二级 C语言机试( C语言程序设计)模拟试卷 1及答案与解析 一、选择题 1 若 x为 int变量,则以下语句的输出结果是 ( )。 x=1234; printf(“ -06d n“, x); ( A)输出格式描述符不合法 ( B)输出为 001234 ( C)输出为 1234 ( D)输出为 -01234 2 已知定义 k为 double类型变量, k=260 72631: p血 t“ -6 2e n“, k); 则以上语句的输出结果是 ( )。 ( A)输出格式描述的域宽不够,不能输出 ( B)输出为 26 07e+01 ( C)输出为 2 6e+02 ( D)输出为 -2 64e2

2、3 若 m是 int型变量, n是 noat型变量,所用的 scanf调用语句格式为: scanf(“m= d, n= f, “&m, &n); 则为了将数据 10和 66 6分别赋给 m和 n,正确的输入应当是 ( )。 ( A) m=10,n=66 6回车 ( B) 1 0 66 6回车 ( C) 10回车 66 6回车 ( D) in=10回车 n=66 6回车 4 已知字母 c的 ASCII十进制代码为 99,则执行以下语句后的输出结果为 ( )。 char a=c: a-; printf(“ d, c n“, a+2, a+3-0); ( A) d, e ( B) a-运算不合法,故

3、有语法错 ( C) 100, e ( D)格式描述和输出项不匹配,输出无定值 5 两次执行下面的程序,如果从键盘上分别输入 4和 2,则输出结果是 ( )。 main() int x; scanf(“ d n“, &x); ifi(x+ 3)printf(“ d n“, x); else printf(“ d n“, x-); ( A) 7和 5 ( B) 5和 3 ( C) 7和 4 ( D) 6和 4 6 下面程序的输出结果是 ( )。 main() int m1=a, m2=e, m3=e; printf(“ d c n“, m2-m1, m3-b+A); ( A) 2, M ( B)

4、4, D ( C) 2, E ( D)输出结果不确定 7 设 有定义: long x=745321L,则能正确输出变量 x的语句是 ( )。 ( A) printf(“x= d n“, x); ( B) printf(“x= LD n“, x); ( C) printf(“x= d1 n“,x); ( D) printf(“x= 1d n“,x); 8 以下叙述正确的是 ( )。 ( A)当输入数据时,必须指明变量的地址,例如, scanf(“ f“, &a); ( B)只有格式控制,没有输入项,也能正确输入数据到内存。例如, scanf(“m=d, n= d“); ( C)当 输入一个实型数

5、据时,格式控制部分可以规定小数点后的位数,例如,scanf(“ 5 1f“, &a); ( D)输入项可以是一个实型常量,例如, scanf(“ f“, 7 5); 9 已知字母 A的 ASCII码值为 65,则下面程序的输出是 ( )。 main() char c1, c2; c1=A+5-3; c2=A+6-3; printf(“ d, c n“, c1, c2); ( A) 67, D ( B) B, C ( C) C, D ( D)不确定的值 10 在 C语言中的 if语句中,用作判断的表达式为 ( )。 ( A)逻辑表达式 ( B)关系表达式 ( C)任意表达式 ( D)算术表达式

6、11 为了避免嵌套的条件语句 if-else的二义性, C语言规定:与 else配对的是 ( )。 ( A) if同一行上的 if ( B)缩排位置相同的 if ( C)其之前最近的 if ( D)其之后最近的 if 12 有以下程序,输出结果是 ( )。 main() int i=15j=21, n=0; switch(i 3) case 0: n+; break; case 1: n+: switch(j 2) default: n+; case 0: n+; break; pintf(“ d n“, n); ( A) 1 ( B) 2 ( C) 3 ( D) 4 13 设变量 m和 n均

7、已正确定义并赋值,以下 if语句中,在编译时将产生错误信息的是 ( )。 ( A) if(m 0)m-else n+; ( B) if(m+) ( C) if(m n&n!=0) ( D) if(n 0); else m+; 14 阅读以下程序: #include stdio h main() int i; scanf(“ dt“, &i); if(i- 5)printf(“ d“, i); else printf(“ d“, i+); 程序运行 后,如果从键盘上输入 5,则输出结果是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 15 以下程序运行后的输出结果是 ( )。

8、 #include stdio h main() int m=1, n=0, i=0, j=0; switch(m) case 1: switch(n) case 0: i+; break; case 1: j+; break; ) case 2: i+ij+; break; printf(“i= d, j= d n“, i, j); ( A) i=2j=1 ( B) i=1, j=0 ( C) i=1, j=1 ( D) i=2, j=2 16 运行下面的程序,输出结果是 ( )。 main() int a=3, b=0, c=0; if(a=b+c) printf(“*“); else p

9、rintf(“#“); ( A)有语法错误,不能通过编译 ( B)输出 # ( C)可以通过编译,但是不能通过连接,因而不能运行 ( D)输出 * 17 两次执行下面的程序,分别从键盘上输入 6和 4,则输出结果是 ( )。 main() int x; scanf(“ d“, &x); if(x+ 5) printf(“ d“, x); else printf(“ d“, x-); ( A) 7 4 ( B) 6 3 ( C) 7 5 ( D) 6 4 18 以下程序运行后的输出结果是 ( )。 #include stdio h main() int i=0, j=0, k=0, x=35;

10、if(i) x-; else if(j); if(k) x=3; else x=4; prinff(“ d n“, x); ( A) 4 ( B) 34 ( C) 3 ( D) 35 19 执行以下程序时,为了使输出结果为: t=4,则给 i和 j输入的值应该满足的条件是 ( )。 #include stdio h main() int s, t, ij; scanf(“&d, &d“, &i, &j); s=1, t=1; if(i 0) s=s+1; if(i j) t=s+t: else if(i=j) t=-5; eles t=2*s: printf(“t= d n“, t); ( A

11、) i j ( B) 0 i j ( C) i j 0 ( D) 0 i j 20 下列关于 switch语句和 break语句的结论中,正确的是 ( )。 ( A)在 switch语句中可以根据需要使用或不使用 break语句 ( B)在 switch语句中必须使用 break语句 ( C) break语句是 switch语句的一部分 ( D)以上三个结论中有两个是正确的 21 若运行下列程序时,输 入以下指定数据,则正确的运行结果是 ( )。 #include stdio h main() int i; while(i=getchar()!= n) switch(i) case0: cas

12、e1: putchar(i+4); case2: putchar(i+4); break; case3: putchar(i+4); default: putchar(i+2); break; pfintf(“ n“); 输入数据 (第一列 ): 2473回车 ( A) 6688766 ( B) 66975 ( C) 66778777 ( D) 668966 22 在 C语言中 ( )。 ( A)不能使用 do-while语句构成的循环 ( B) do-while语句构成的循环必须用 break语句才能退出 ( C) do-while语句构成的循环,当 while语句中的表达式值 为零时结束循

13、环 ( D) do-while语句构成的循环,当 while语句中的表达式值为非零时结束循环 23 以下程序的输出结果是 ( )。 #include stdio h main() int i; for(i=1; i =5; i+) if(i 2) printf(“*“); else continue; printf(“#“); printf(“ n“); ( A) #*#* ( B) *#*# ( C) *#*#*# ( D) *#*#*# 24 请阅读程序: #include math h #include stdio h main() float a, b, c; scanf(“ f f“

14、, &a, &b); c=a b; while(1) if(fabs(c) 1 6) a=b; b=c; c=a b; else break; printf(“ f n“, b); 若运行时从键盘上输入 3 6 2 4回车,则输出结果是 ( )。 ( A) 1 500000 ( B) 1 600000 ( C) 2 000000 ( D) 2 400000 25 下面程序的输出是 ( )。 main() int i=9; for(; i 0; i-) if(i 3=0) printf(“ d“, -i); continue; ( A) 741 ( B) 852 ( C) 963 ( D) 87

15、5421 26 以下程序中, while循环的循环次数是 ( )。 main() int n=0; while(n 10) if(n 1)continue; if(n=5)break; n+; ( A) 1 ( B) 10 ( C) 6 ( D)死循环,不能确定次数 27 已定义 i和 i为 int类型变量,则以下 for语句的循环次数是 ( )。 for(i=0, j=0; i =9&j!=876; i+) scanf(“ d“, &j); ( A)最多执行 9次循环 ( B)循环最多执行 10次 ( C)是无限循环 ( D)循环体一次也不执行 28 下面程序段的执行结果是 ( )。 i=3

16、; do print“ 2d“, i-); while(!i); ( A) 3 ( B) 321 ( C)不打印任何内容 ( D)陷入死循环 29 执行下列程序的输出结果是 ( )。 #include stdio h main() int i, j, x=0, y=0; for(i=0; i 2, i+) for=j=0 j 3; j+) x+; x-=j; y=i+j; printf(“x= d, y= d n“, x, y); ( A) x=0, y=3 ( B) x=0,y=5 ( C) x=1, y=3 ( D) x=1, y=5 30 在 C语言中 do-while语句中结束该循环的

17、条件为 ( )。 ( A) 0 ( B) 1 ( C)非 0 ( D) true 国家二级 C语言机试( C语言程序设计)模拟试卷 1答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 本题主要考查 C语言 prinltf函数中格式控制字符串的使 用,表示格式说明的起始符号, “-”表示输出是否左对齐, “0”表示输出是空位是否填 0。在本题中格式字符串的 “f”将原样输出。若用格式描述 6d输出 x值,则输出占 6格,右对齐,左边用空格填满。若用格式描述 06d,将输出 x值,输出同上,只是左边用 0填满。若用格式描述 -06d,输出为左对齐即左边没有空位置,右边有空位置。 【知识模

18、块】 C语言程序设计 2 【正确答案】 C 【试题解析】 在 C语言中,使用 e格式描述符输出浮点数时 (浮点数将以指数形式输出 ),用户可指定输出数据的宽度和小数部分的 位数,其一般形式为 m he或 -m ne,其中 m、 n和字符 “-”的含义均与上题所述相同。需要指出的是,在不同的计算机系统中,虽然对指数部分应占宽度的规定不同,但是数值部分均按标准化指数形式输出 (即小数点前必须有而且仅有一位非零数字 )。本题按标准化指数形式输出 k值的整数部分,截去小数点并四舍五入,输出项 k的实际宽度为 9列,而格式说明中所给定的域宽为 6,因此,将自动突破规定宽度,而按实际宽度输出,输出结果为

19、2 6e+02。 【知识模块】 C语言程序设计 3 【正确答案】 A 【试题解析】 在 C语言中, scanf函数的两个格式说明项有一个或多个普通字符,这些字符被称为通配符。在输入数据时,在两个数据之间也必须以相同的字符分隔。 【知识模块】 C语言程序设计 4 【正确答案】 C 【试题解析】 C语言规定,所有字符常量可以作为整型常量来处理,因而字符常量也可参与算术运算。本题中字符变量 a的初值为字符 c,其对应整数值就是 c的ASCII码,其十进制代码为 99,经过自减运算 a-后,变量 a所对应的整数值为98;虽然题中未给出字符 2和 0的 ASCII代码值,但是 2-0是求字符 2和字符0

20、之间的距离为 2。故 a+2-0的值为 100。同理可知,第二个输出项相当于算术表达式 98+3,其值为 101。按照题中所给定的格式描述符,第一个输出项应当以 d格式输出 100,;第二个输出项应当以 c格式输出字符,已知字符 c的ASCII代码值为 99,故不难推算出 101的对应字符应该是字母 e。 【知识模块】 C语言程序设计 5 【正确答案】 B 【试题解析】 本题的考点是增 1减 1运算符作为后缀时的运算程序。如果从键盘上输入 4,执行 if(x+ 3)时条件为真, x的值加 1,输出 结果为 5,当键盘输入 2时,执行 if(x+ 3)时条件为假, x值增 1后执行 printf

21、(“ d n“, x-);,即输出结果为 3。 【知识模块】 C语言程序设计 6 【正确答案】 B 【试题解析】 本题中字符变量 m1的初值为字符 a, m2的初值为字符 e, m3的初值为字符 e;因为英文字母的 ASCII码值是连续的,所以 m2-m1=ea=4, m3-b+A=e-b+A=3+A=D。 【知识模块】 C语言程序设计 7 【正确答案】 D 【试 题解析】 本题考查 C语言中长整型数据的输出。在题中格式控制符只有采用格式字符 1d,且必须是小写字母 d,才能表示输出长整型数据 x。 【知识模块】 C语言程序设计 8 【正确答案】 A 【试题解析】 本题考查对 scanf函数的

22、理解。选项 B)中没有给出输入项;选项 C)中的格式字符指定了小数位数;选项 D)中的输入项为一个常量;以上均是错误的。 【知识模块】 C语言程序设计 9 【正确答案】 A 【试题解析】 程序中 A+5-3相当于 “A+2=67”, “A+6-3”相当于A+3=68。输出函数的格式控制符分别为 d, c,对应输出一个整数和一个字符。 【知识模块】 C语言程序设计 10 【正确答案】 C 【试题解析】 在 C语言中,不论采用任何形式的 if语句,在 if后面都必须有用做判断的表达式,且表达式的类型不限于关系表达式或逻辑表达式,只要表达式的值能判断为 0或非 0即可,所以 if后面的表达式可以是任

23、意类型的表达式。 【知识模块】 C语言程序设计 11 【正确答案】 C 【试题解析】 C语言中在 if语句中又包含一个或多个 if语 句称为 if语句的嵌套。使用嵌套的 if语句时应注意 if-else的配对关系, else总是与它上面的最近 if配对。 【知识模块】 C语言程序设计 12 【正确答案】 A 【试题解析】 本题考查 switch-case语句的嵌套形式。程序的主体部分是 switch-case语句的嵌套,变量 i的值是 15,表达式 i 3之后是 0,对应的分支是 “case 0: n+; break”,变量 n自加变为 1,遇到 break语句,跳出外层的 switch-ca

24、se语句。内层 switch-case语句未执行, n为 1。 【知识模块】 C语言程序设计 13 【正确答案】 A 【试题解析】 选项 B)和 C)在条件判断语句的后面是空语句,什么都不做;在选项 D)中,在 if语句后面是一个复合空语句;在选项 A)中,在 m-后面少了一个分号,所以程序段在编译时,会出现语法错误。 【知识模块】 C语言程序设计 14 【正确答案】 C 【试题解析】 本题考查 if-else语句的一般形式。 i-是自减运算的后置形式,即先计算 i是否小于 5,再对 i减 1,所以条件 (i- 5)的结果为 0, i的值变为 4,执行else子句,输出 i+,这是自加运算的后

25、置形式,即先输出 i的值,再对 i加 1, i的值变为 5。 【知识模块】 C语言程序设计 15 【正确答案】 A 【试题解析】 本题考查 switch语句的嵌套应用。 m=1,执行外层 switch语句的case 1,此时进入内层 switch语句,因为 n=0,执行 i+,遇到 break退出内层switch语句,回到外层。由于外层没有 break语句,继续执行 case 2后面的语句i+; j+。所以程序最后输出的结果是 i=2, j=1。 【知识模块】 C语言程序设计 16 【 正确答案】 B 【试题解析】 本题考查 if语句的一般形式。当 int a=3,b=0,c=0时, a=b+

26、c=0表示逻辑假,故 if(a=b+c)条件为假,输出 #。 【知识模块】 C语言程序设计 17 【正确答案】 C 【试题解析】 当从键盘上输入 6时, x=6, x+表达式的值为 6,接着 x自加 1,即: x=7,故 x+=6 5成立,输出 x的值 7;当从键盘上输入 4时, x=4, x+表达式的值为 4,接着 x自加 1,即 x=5,故 x+=4 5不成立,输出 x-(后置运算 ),所以先输出 x的值 5, 之后再进行自减 1操作。 【知识模块】 C语言程序设计 18 【正确答案】 A 【试题解析】 本题是两个并列的 if语句。当 int i=0; j=0,k=0,x=35时, i的逻

27、辑值为 0,故第一个 if语句的条件为假,执行 else操作。又因 j=0,故第二条 if语句if(j)的条件仍为假,不执行任何操作。接着顺序执行至 if(k)语句,由于 k=0,此 if语句的条件仍为假,执行其后的 else语句, x=4,故最后 x的值为 4。 【知识模块】 C语言程序设计 19 【正确答案】 B 【试题解析】 本题考查 if-else的嵌套应用。求解本题可以将上述 4个条件逐个代入到程序中,最后看哪个满足题目要求。只有当 j i 0,程序顺序执行时,才能输出结果 t=4。具体分析如下:当 i i 0, s=1, t=1时, i 0逻辑值为真,故执行 if(i 0)s=s+

28、1;语句后, s=s+1=1+1=2。由于 if(i j)条件为假, else if(i=j)的条件仍为假,故程序将执行语句 else t=2*s;,此时 t=2*s=2*2=4。故选项 B)正确。同理可求得, A)、 C)和 D)都不满足条件。故本题的答案为 B)。 【知识 模块】 C语言程序设计 20 【正确答案】 A 【试题解析】 在 C语言程序中,从语法上说 bteak语句并不是 switch语句中的一部分,在实际使用过程中也不是必须使用的。 break语句是限定转向语句,可以中止执行 switch语句,但是执行 switch语句时可以不使用 break语句。 【知识模块】 C语言程序

29、设计 21 【正确答案】 B 【试题解析】 在执行 switch语句的 case时,遇到 break语句时,结束当前switch语句,若 case语句中无 break语句,将接着执行下一个 case语句。本题中,输入数据 2473后, i的初值为 2。执行 switch语句时,首先执行 “case 2:putcllar(i+4); break; ”语句,输出字符 “2+4”即 “6”。当程序第二次进入 while循环, i的值被赋为 4。执行 switch语句时,将执行 “default: putcIlar(i+2);break; ”语句,输出字符 “4+2”即 “6”。当程序第三次进入 wh

30、ile循环, i的值被赋为 7,执行 switch语句时,将执行 default: putchar(i+2); break;语句,输出字符 “7+2”即 “9”。当程序第四次进入 while循环, i的值被赋为 3。执行 switch语句时,将执行 “case3: putchar(i+4); default: putcllar(i+2); break; “语句,先后输出字符 “3+4”即 “7”和 “3+2”即 “5”。由上分析可知运行结果为 66975。 【知识模块】 C语言程序设计 22 【正确答案】 C 【试题解析】 本题考查对 do-while循环语句的理解。 Do-while语句是先

31、执行循环体,再判断条件,当条件为真时,就再次执行循环体,当条件为假时就结束循环 。 【知识模块】 C语言程序设计 23 【正确答案】 D 【试题解析】 本题考查对 continue语句功能的了解,由于循环体中有 if语句存在,所以在循环过程中将会有选择地执行 continue语句,遇到 continue语句时,将会跳过循环体后半部分,提前结束本次循环,进入下一循环的条件判断。本题中,当 i值为奇数时,表达式 i 2值为 1,输出 *#,否则无输出。 【知识模块】 C语言程序设计 24 【正确答案】 D 【试题解析】 本题考查甩 break语句终止循环。程序中定义了两个实型 变量 a、b,并给

32、scanf()函数赋值,键盘输入 3 6 2 4回车后, a=3 6, b=2 4, c=a b=3 6 2 4=1 5,因为 c=1 5 1 6,退出循环,输出 b的原值。表面上看, while(1)条件恒为真,将会产生死循环,但利用 break语句可以终止循环。 【知识模块】 C语言程序设计 25 【正确答案】 B 【试题解析】 本题考查 continue的应用。程序中 for循环体内有一个 continue语句,它的功能是提前结束本次循环体 (即循环体的后半部分不执行了 ),直接来到下一次循 环的条件判断。本题中,当 i值为 3的倍数 (9, 6, 3)时,表达式 i 3值为0,输出 -

33、i(8, 5, 2),否则无输出。第 6次循环结束后, i-使 i得 0,此时 i 0为假,循环结束。 【知识模块】 C语言程序设计 26 【正确答案】 D 【试题解析】 本题考查 break语句和 continue语句。循环控制变量 n的初始值为0,满足 n 10,进入循环体,此时, n的值也满足第一个 if语句的条件 (n 1),执行 continue语句,开始第二次循环,可见,循环控制变量 n的值用于保持不变 (恒为 0),语句 “n+; ”执行不到,即无法使 n的值等于 5或大于等于 10,因此,是一个死循环。 【知识模块】 C语言程序设计 27 【正确答案】 B 【试题解析】 本题中

34、 for循环的执行次数取决于关系表达式 (i =9&j!=876)的结果。只要 i =9且 j!=876,循环就将继续执行。结束循环取决于两个条件: i 9或者 j=876,只要在执行 scanf语句时,从终端输入 876,循环就将结束。如果输入一直不等于 876,则将由 i值的增加使 i 9,从而结束循环。按照题目中所给定的 for语句,每次执行一次循环, i自增 1,因 此执行 10次循环后, i值为 10,循环最终也将结束。 【知识模块】 C语言程序设计 28 【正确答案】 A 【试题解析】 do-while语句不管循环条件是什么都至少执行一次,在执行了一次打印语句后, i值变为 2,

35、!i为假 (0),程序退出循环。 【知识模块】 C语言程序设计 29 【正确答案】 B 【试题解析】 本题考查 C语言中 for循环结束后循环变量的取值。第一次执行外循环时 i=0,退出内层循环时 j=3, x=3,再执行 x-=j时得 x=0;第二次执行外循环时 i=1,退出内层循环时 i=3, x=3,执行 x-=j时得 x=0,退出外层循环时 i=2,j=3,执行 y=i+j得 y=5。 【知识模块】 C语言程序设计 30 【正确答案】 A 【试题解析】 在 C语言中,使 while或 do-while循环结束的条件都是 while后面的表达式的值为 0,只是无论表达式的值为 0还是非 0, do-while语句的循环体至少要执行一次。 C语言中的 do-while循环仍是 “当型 ”循环而不是 “直到型 ”循环。 【知识模块】 C语言程序设计

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

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

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