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

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

1、国家二级 C语言( C语言程序设计)机试模拟试卷 5及答案与解析 一、选择题 1 设有定义: int n1=0, n2, *p=n2, *q=n1;,以下赋值语句中与 n2=n1;语句等价的是 ( A) *p; *q; ( B) p=q; ( C) *p=n1; ( D) p=*q; 2 以下叙述中正确的是 ( A)赋值语句是一种执行语句,必须放在函数的可执行部分 ( B) scanf和 printf是 C语言提供的输入和输出语句 ( C)由 printf输出的数据都隐含左对齐 ( D)由 printf输出的数据的实际精度是由格式控 制中的域宽和小数的域宽来完全决定的 3 执行以下程序段后,

2、w的值为 int W=A, x=14, y=15; w=(x|y)&(w a); ( A) -1 ( B) NULL ( C) 1 ( D) 0 4 若有以下程序 #include stdio h main()int b=10, a=-11; a =b =4: printf(“ d d n“, a, b); 则程序的输出结果是 ( A) 1 2 ( B) -1 -2 ( C) -1 2 ( D) 1 -2 5 若变量已正确定义为 int型,要通过 语句 scanf(“ d, d, d“, &a, &b,&c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (注: 代表

3、一个空格符 ) ( A) 1 2, 3 ( B) 1, 2, 3 ( C) 1 2 3 ( D) 123 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) scanf(“ d f f, &a, &b, &c); ( D) scanf(“ f 1f 1f“, &a, &b, &c); 7 以下叙述中正确的是 ( A)在 scanf函数的

4、格式串中,必须有与输入项一一对应的格式转换说明符 ( B)只能在 printf函数中指定输入数据的宽度,而不能在 scanf函数中指定输入数据占的宽度 ( C) scanf函数中的字符串,是提示程序员的,输入数据时不必管它 ( D)复合语句也被称为语句块,它至少要包含两条语句 8 以下程序段完全正确的是 ( 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); 9 s1和 s2已正确定义并分别

5、指向两个字符串。若要求:当 s1所指串大于 s2所指串时,执行语句 S;则以下选项中正确的是 ( A) if(s1 s2)S; ( B) if(strcmp(s1, s2)S; ( C) if(strcmp(s2, s1) 0)S; ( D) if(strcp(s1, s2) 0)S; 10 有以下程序 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) 2 ( B) 0 ( C) 1 ( D) 3 11 if语句的基本形式是: if(表达式 )

6、语句,以下关于 “表达式 ”值的叙述中正确的是 ( A)必须是整数值 ( B)必须是正数 ( C)可以是任意合法的数值 ( D)必须是逻辑值 12 有以下程序 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, 2, 3 ( C) 1, 3, 3 ( D) 3,

7、2, 1 13 若有以下程序 #include stdio h main()int a=1, b=2, c=3, d=4; if(a: 2)&(b=1)c=2; if(c=3)|(d=-1)a=5; printf(“ d, d, d, d n“, a,b, c, d); 则程序的输出结果是 ( A) 2, 1, 2, -1 ( B) 2, 2, 2, 4 ( C) 1, 2, 3, 4 ( D) 5, 1, 2, -1 14 若以下选项中变量全部为整型变量,且已正确是义并赋值,则语法正确的switch语句是 ( A) switch(a+b) case1: case3: y=a+b; break

8、; case0: case4: y=a-b; ( B) switch(a*a+b*b) default: break; case3: y=a+b: break; case2: y=a-b; break; ( C) switch(a+9) case c1: y=a-b; case c2: y=a+b; ( D) switch a*b case10: x=a+b; default: y=a-b: 15 有以下程序 main()int k=5, n=0; doswitch(k) case1: case3: n+=1; k-; break; default: n=0; k-; case2: case4

9、: n+=2; k-; break; printf(“ d“, n); while(k 0&n 5) 运行以后的输出结果是 ( A) 0235 ( B) 235 ( C) 02356 ( D) 2356 16 在嵌套使用 if语句时, C语言规定 else总是 ( A)和之前与其具有相同缩进位置的 if配对 ( B)和之前与其最近的 if配对 ( C)和之前与其最近的且不带 else的 if配对 ( D)和之前的第一个 if配对 17 有以下程序 main()int k=5; while(-k) printf(“ d“, k-=3); printf(“ n“); 执行后的输出结果是 ( A)

10、2 ( B) 4 ( C) 1 ( D)死循环 18 在以下给出的表达式中,与 while(E)中的 (E)不等价的表达式是 ( A) (E 0|E 0) ( B) (!E=0) ( C) (E!=0) ( D) (E=0) 19 有以下程序 main()int a=-2, b=0; while(a+&+b); printf(“ d, d n“, a, b); 程序运行后输出结果是 ( A) 0, 3 ( B) 1, 2 ( C) 1, 3 ( D) 0, 2 20 若变量己正确定义,有以下程序段 i=0; do printf(“ d, “, i); while(i+); printf(“ d

11、 n“, i);其输出结果是 ( A) 0, 0 ( B) 1 1 ( C) 0, 1 ( D)程序进入无限循环 21 若 k是 int类型变量,且有以下 for语句 1 for(k=-1; k 0; k+)printf(“* n“); 下面关于语句执行情况的叙述中正确的是 ( A)循环体执行两次 ( B)循环体执行一次 ( C)循环体一次也不执行 ( D)构成无限循环 22 有以下程序 #include stdio h void main() int c=0, k; for(k=1; k 3; k+) switch(k) default: c+=k; case2: c+; break; ca

12、se4: c+=2; break; printf(“ d n“, c); ( A) 9 ( B) 7 ( C) 5 ( D) 3 23 有以下程序 #include stdio h void main() char b, c; int i; b=a; c=A; for(i=0: i 6; i+) if(i 2)putchar(i+b); else putchar(i+c); printf(“ n“); 程序运行后的输出结果是 ( A) ABCDEF ( B) aBcDeF ( C) abcdef ( D) AbCdEf 24 若有以下程序 main()int a=6, b=0, c=0; fo

13、r(; a&(b=0); ) b+=a; a-=c+: printf(“ d, d, d n“, a, b, c); 则程序的输出结果是 ( A) 6, 0, 0 ( B) 5, 6, 0 ( C) 6, 6, 1 ( D) 5, 6, 1 25 有以下程序 main() int i, j; for(i=1; i 4; i+) for(=i; j 4 j+) printf(“ d* d= d“, i, j, i*j); printf(“ n“); ( A) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3 ( B) 1*1=1 1*2=2 2*2=4 1*3=3 2*3=

14、6 3*3=9 ( C) 1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 ( D) 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 26 有以下程序 #include stdio h main()int x=8; for(; x 0; x-) if(x 3)printf(“ d, “, x-); continue; printf(“ d, “, -x); 程序的运行结果是 ( A) 8, 7, 5, 2, ( B) 9, 7, 6, 4, ( C) 7, 4, 2, ( D) 8, 5, 4 2, 国家二级 C语言( C语言程序设计)机试模拟试卷

15、 5答案与解析 一、选择题 1 【正确答案】 A 【试 题解析】 本题考查指针的使甩。指针 p和 q分别指向变量 n2和 n1, n2=n1可以用指针来代替,即 *p代替 n2, *q代替 n1。 【知识模块】 C语言程序设计 2 【正确答案】 A 【试题解析】 C语言本身没有提供输入输出语句,但是可以通过调用标准库函数中提供的输入和输出函数来实现输入和输出,选项 B)错误:采用 printf输出数据,输出数据都默认为右对齐,若要左对齐,可以在格式控制中的 “ ”和宽度之间加一个 “-”号来实现,选项 C)错误; printf的输出精度由变量的类型决定,与域宽无关,选项 D)错 误。 【知识模

16、块】 C语言程序设计 3 【正确答案】 C 【试题解析】 本题考查表达式和逻辑运算。 x和 y分别为 14和 15因此 (x|y)的值是真。 w的值为 A,其 ASCII值为 65, a的 ASCII值为 97,因此 (w a)的值为真。表达式 w=(x|y)&(w a)的前后两个值均为真,整个表达式的值为真 (1)。 【知识模块】 C语言程序设计 4 【正确答案】 C 【试题解析】 对于表达式 a =b =4为复合的 赋值运算,结合性自右至左,相当于先计算 b=b 4, a=a b;结果的符号和第一个操作数的符号相同,因此 b为2, a的结果为 -1。 【知识模块】 C语言程序设计 5 【正

17、确答案】 D 【试题解析】 本题主要考查 scanf函数的输入格式问题。 scanf函数的一般形式为: scanf(格式控制字符串,地址 1,地址 2, ) ;格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成: 格式说明符由 “ ”和格式字符组成,如 c , d, s, f等。其作用是将输入的数据转换为指定的格式,赋给 scanf的二个参量 (是地址 1)所指定的内存单元(可能一次使用多个 )中。格式说明以 “ ”字符为标志; 普通字符,是需要用户在输入时原样输入的字符。 在本题中格式控制字符串为 “ d, d, d”,表示按十进制输入三个数据。要求在输入数据时,两个数据间一

18、定以一个逗号 “, ”作为问隔符。 【知识模块】 C语言程序设计 6 【正确答案】 B 【试题解析】 scanf函数进行输入的时候,默认的输入间隔为空格、跳格和回车,变量 a、 b和 c均为数值型数据,输入时问隔为空格,因此 scanf。函数的第一个表示格式的参 数之间不用加入分隔符,而要输入 double型数据,格式控制必须用 1f(或 1e)。否则,数据不能正确输入。 【知识模块】 C语言程序设计 7 【正确答案】 A 【试题解析】 输入函数的调用格式: scanf(格式控制,输入项 1,输入项 2, ) 格式控制的主要作用是指定输入时的数据转换格式,格式串中,必须含有与输入项一一对应的格

19、式转换说明符选项 A)正确,在 scanf。函数的格式字符前可以加入一个正整数指定输入数据所占的宽度但不可以用实数指定小数位的宽度,选项B)错误, scanf函数中的格式 控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用 printf函数输出,选项 C)错误,复合语句还可以是空语句昵,并没有规定语句条数,选项 D)错误。 【知识模块】 C语言程序设计 8 【正确答案】 A 【试题解析】 选项 B)没有对指针进行初始化,无效指针。选项 C)错在没有对指针进行初始化,无效指针。并且在 scanf(“ d“, &p)中无需再进行取地址操

20、作。选项 D),语句 “*p=&k”的左端 *p是指针所指内存空间的值, &k是地址,应为 “p=&k”。 【知识模块】 C语言程序设计 9 【正确答案】 D 【试题解析】 字符串标记使用 strcmp函数,该函数有两个参数分别是需要比较大小的两个字符串 s1和 s2,如果 s1大于 s2则返回值大于 0,如果 s1小于 s2则返回值小于 0,否则 s1和 s2相同返回 0。题目要求 s1大于 s2时执行语句 s,因此strcmp(s1, s2)的返回值大于 0时执行 s。 【知识模块】 C语言程序设计 10 【正确答案】 B 【试题解析】 x=1, if和 elseif的条件都不满足,故 y

21、值不改变输出。 【知识模块】 C语言程序设计 11 【正确答案】 C 【试题解析】 在 if语句中,表达式可以是在意合法的数值。当其值为非零时,执行 jf语句,为 0时执行 else语句。 【知识模块】 C语言程序设计 12 【正确答案】 C 【试题解析】 a, b, c, d初始值分别为 1, 2, 3, 0。嵌套的 if语句中,第一个if中,表达式 a=1&b+=2值为 1,执行嵌套的 if分支 ,此时 “b=3, b!=2”成立,由于运算符是 |,不管后面一个表达式的值是不是 1,其整个表达式的值总是l, “c-!=3”表达式不执行,最后打印出 a, b, c的值是 1, 3, 3。 【

22、知识模块】 C语言程序设计 13 【正确答案】 D 【试题解析】 代码中有两条并列的 if语句,第一条 if语句,逻辑与表达式(a=2)&(b=1)中, a=2,则执行 b=1,得到该逻辑与表达式值为 1,执行分支语句c=2:第二条 if语句 (c=3)|(d=-1), c=3不成立,执行 d=-1,而后得出整个逻辑与表达式值为 1,执行分支语句 a=5。 【知识模块】 C语言程序设计 14 【正确答案】 B 【试题解析】 本 题考查 switch的使用。选项 A)中的 case0和 case4没有 break语句;选项 B)正确;选项 C)中的 case后面不是常量,错误;选项 D)中 sw

23、itch后面没有括号。 【知识模块】 C语言程序设计 15 【正确答案】 B 【试题解析】 因为变量的初始值分别为 k=5, n=0,所以程序第 1次进入循环时,执行 default语句, “n=0, k=4”,没有 break语句,因此执行 case2分支语句, n为 2, k为 3,程序进行第 2次循环,执行 “case3: n=3, k=2”,输出 n值为3,程序进行第 3次 循环,执行 case3这个分支,结果是 “n=5, k=1”,打印出 5;这时因为 n=5不满足 n 5的循环条件,因此退出循环,程序运行结束。 【知识模块】 C语言程序设计 16 【正确答案】 C 【试题解析】

24、本题考查 if语句,在 C语言中, else总是和之前与其最近的且不带else的 if配对。 【知识模块】 C语言程序设计 17 【正确答案】 C 【试题解析】 在程序语句中, k的初始值为 5,进行第 1次 while循环后 -k自减 l为 4,菲 0,执行循环体里的 printf语句,输出 1,此时 k的值变为 1。程序执行第 2次循环时, k自减 1变为 0,为假,退出 while循环语句。所以程序的最后结果为 1。 【知识模块】 C语言程序设计 18 【正确答案】 A 【试题解析】 在 while(E)中,表达式 E可以是 C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否

25、执行。在选项 A)中表达式 E 0|E 0是一个逻辑表达式。 【知识模块】 C语言程序设计 19 【正确答案】 B 【试题解析】 循环体为空,共执行 2次。第一次变量 a初值为 -2, b初值为 o,表达式 a+&+b值为 1,同时 a的值为 -1, b的值为 1。第二次循环条件判断以后, a的值为 0, b的值 2,执行循环体空,第三次判断条件表达式值为 0,不执行循环体,而 a的值为 1,但是表达式 a+的值为 0,因此不计算表达式 +b的值, b的值仍为 2。 【知识模块】 C语言程序设计 20 【正确答案】 C 【试题解析】 dowhile 循环的执行过程如下: 执行 do后面的循环体

26、中的语句。 计算 while后一对圆括号中表达式的值。当值为非 0时,转去执行步骤 :当值为 0时,执行步骤 。 退出 dowhile 循环。对于 本题变量 i的初始值等于 “0”,接着执行 do后面的循环体中的语句,输出变量 i的值 0。再判断 while后面括号中表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 l,所以再次输出 i的值“1”。 【知识模块】 C语言程序设计 21 【正确答案】 B 【试题解析】 本题考查 for循环的使用。在程序中, for循环的初始值 k=-1,循环结束条件是 k 0,每次循环 k增加 1,第一次进入循环的时候 k为 -1,

27、k小于0,执行打印,然后 k的值变成 0,下次进入循环 k不小于 0,循环结束,因此循环只 能执行一次。 【知识模块】 C语言程序设计 22 【正确答案】 D 【试题解析】 在这段程序中,整型变量 c的初始值赋为 0,在第一次执行 for循环语句时,因为此时变量 k的值等于 1,所以在 switch语句中首先执行 default语句,给变量 c的值加 1,因为在 default语句后面没有 break语句,所以就会接着执行 case2这条语句,再给变量 c的值加 1,其值变为 2,这时退出 switch语句块,进入第二次 for循环,此对 k的值等于 2,就会执行 switch语句块中的 ca

28、se2这条语句,再给变量 c的值 加 l,这时变量 c的值就是 3,此时退出 switch语句块,循环变量 k的值加 1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c的值在屏幕上输出。 【知识模块】 C语言程序设计 23 【正确答案】 D 【试题解析】 循环变量 i从 0依次递增到 5,依次输出字母 A, b, c, d, E, f。 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 循环条件 a&( b=0), a非零同时 b=0则执行循环体,否则退出。循环体执行一次,此时 b=6, a=6, c=1。 【知识模块】 C语言程序设计 25 【正确答

29、案】 C 【试题解析】 外层 for循环的自变量 i从 1开始,每次循环后增 1,直到 i等于 3结束。对于外层循环自变量 i的每一个值,内层循环的自变量 j每次从 i开始,每次循环后增 1,直到 j等于 3结束。所以在每次外循环开始后,内层循环在一行先打印 i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。 【知识模块】 C语言程序设计 26 【正确答案】 D 【试题解析】 “x-”表示先执行程序,再令 x的值减 1:而 “-x”表示令 x的值减1,再执行程序。 x=8时, x 3为非 0值,执行语句 “print(“ d, “, x-):contlnue; ”,输出 “8, ”,此时经过 x-, x的值变为 7,跳出此次循环:执行 “x-, x=6, x 3=0”,后面语句不执行,执行语句 “printf(“ d, “, -x); ”,输出“5, ”;执行 for语句中的 x-,得到 x=4,判断 x 3,输出 “4, ”,执行两次 x-后, x=2,执行 “printf(“ d, “, x-); continue; ”后,输出 “2, ”;然后执行两次 x-后, x=0,不符合 “x 0”,循环全部结束。 【知识模块】 C语言程序设计

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

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

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