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

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

1、国家二级 C语言机试( C语言程序设计)模拟试卷 6及答案与解析 一、选择题 1 有以下程序 main( ) inta=2, c=5; printf(a= d, b= dn, a, c); ) 程序的输出结果是 ( A) a= 2, b= 5 ( B) a= d, b= d ( C) a=2, b=5 ( D) a= d, b= d 2 若变量已正确定义为 int型,要通过语句 scanff d, d, d, a, b,c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (注: 代表一个 空格符 ) ( A) 1, 2, 3 ( B) 1, 2, 3 ( C) 1,

2、2, 3 ( D) 123 3 若有定义: inta, b;通过语句 scanf( d; d, a, b);能把整数 3赋给变量 a, 5赋给变量 b的输入数据是 ( A) 3 5 ( B) 35 ( C) 3; 5 ( D) 35 4 以下叙述中正确的是 ( A)当用 scanf从键盘输入数据时,每行数据在没按下回车键 (Enter键 )前,可以任意修改 ( B)花括号对 只能用来表示函数的开头和结尾,不能用于其他目的 ( C)空语句就是指 程序中的空行 ( D)复合语句在语法上包含多条语句,其中不能定义局部变量 5 有以下程序 #include main( ) inta1, a2; cha

3、rc1, c2; scanf( d c d c, al, c1, a2, c2); printf( d, c, d, c, a1, c1, a2, c2); 若想通过键盘输入,使得 a1的值为 12, a2的值为 34, cl的值为字符 a, c2的值为字符 b,程序输出结果是: 12, a, 34, b则正确的输入格式是 (以下 代表空格,代表回车 ) ( A) 12a34b ( B) 12, a, 34, b ( C) 12a34b ( D) 12a34b 6 以下程序段完全正确的是 ( A) intk, *p= k; scanf( d, p); ( B) int*p; scanf( d,

4、 p); ( C) int*p; scanf( d, p); ( D) intk, *p; *p= k; scanf( d, p); 7 有以下程序段 charname20; intnum; scanf(name= snum= d t, name, num); 当执行 上述程序段,并从键盘输入: name=Lilinum=1001后, name的值为 ( A) name=Lift ( B) Lilihum= ( C) name=Lilinum=1001 ( D) Lili 8 有以下程序 main( ) intx=1, y=0; if(!x)y+; elseif(x=0) if(x)y+=2;

5、 elsey+=3; pfintf( dn, y); ) 程序运行后的输出结果是 ( A) 2 ( B) 0 ( C) 1 ( D) 3 9 设有定义: inta=1, b=2, c=3;以下语句中执行效果与其它三个不同的是 ( A) if(a b)c=a; a=b; b=c; ( B) if(a b)c=a, a=b, b=c; ( C) if(a b)c=a, a=b, b=c; ( D) if(a b)c=a; a=b; b=c; ) 10 有以下计算公式 若程序前面已经在命令行中包含 math h文件,不能够正确计算上述公式的程序段是 ( A) y=sqrt(x); if(x 0)y=

6、sqrt(-x); ( B) if(x =0)y=sqrt(x); elsey=sqrt(-x); ( C) iffx =0)y=sqrt(x); iffx 0)y=sqrt(-x); ( D) y=sqrt(x =07x: -x); 11 下列条件语句中,输出结果与其他语句不同的是 ( A) if(a=0)printf( dn, x); elseprintf( dn, y); ( B) if(a=0)printf( dn, y); elseprintf( dn, x); ( C) if(a!=0)printf( dn, x); elseprintf( dn, y); ( D) if(a)pr

7、intf( dn, x); elseprintf( dn, y); 12 若有以下程序 #include stdio h main( ) inta=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, dn, a, b, c, d); ) 则程序的输出结果是 ( A) 2, 1, 2, -1 ( B) 2, 2, 2, 4 ( C) 1, 2, 3, 4 ( D) 5, 1, 2, -1 13 下列叙述中正确的是 ( A)在 switch语句中必须使用 default ( B) break语句必须与 swi

8、tch语句中的 case配对使用 ( C)在 switch语句中,不一定使用 break语句 ( D) break语句只能用于 switch语句 14 有以下程序 #include main( ) intx=1, y=0, a=0, b: 0; switch(x) case1: switch(Y) case0: a+; break; case1: b+; break; case2: a+; b+; break; ) printf(a= d, b= dn, a, b); 程序运行后的输出结果是 ( A) a=1, b=1 ( B) a=1, b=0 ( C) a=2, b=1 ( D) a=2,

9、 b=2 15 以下程序段中,与语句: k=a b?(b c?1: 0): 0;功能相同的是 ( A) if(a b)Tl(b c)k=1; elsek=0; ( B) if(a =b)k=0; elseif(b =c)k=1; ( C) if(a b) (b c)k=1; elsek=0; ( D) if(a b)k=1; elseif(b c)k=1; elsek=0; 16 有以下程序 #include stdio h main( ) inty=10; while(y-); printf(Y= dn, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=-1 ( C) y=1

10、 ( D) while构成无限循环 17 有以下程序 #include stdio h yoidmain( ) ints; scanf( d, s); while(s 0) switch(s) case1: printf( d, s+5); case2: printf( d, s+4); break; case3: printf( d, s+3); default: printf( d, s+1); break; scanf( d, s); 运行时,若输入 123450,则输出结果是 ( A) 66656 ( B) 6566456 ( C) 66666 ( D) 6.66666e+006 18

11、 要求通过 while循环不断读入字符,当读入字 *N时结束循环。若变量已正确定义,以下正确的程序段是 ( A) while(ch=getchar( )=N)printf( c, ch); ( B) while(ch=getchar( )=N)pfintf( c, ch); ( C) while(ch=getchar( )!=N)printf( c, ch); ( D) while(ch=getchar( )=N)printf( c, ch); 19 有以下程序 main( )inta=-2, b=0; while(a+ +b); printf( d, dn, a, b); ) 程序运行后输出

12、结果是 ( A) 0, 3 ( B) 1, 2 ( C) 1, 3 ( D) 0, 2 20 以下不构成无限循环的语句或语句组是 ( A) n=0; do+n; )while(n =0); ( B) n=0; while(1)n+; ) ( C) n=10; while(n); n-; ( D) for(n=0, i=1; i+)n+=i; 21 若有以下程序 main( ) inta=-2, b=0; do +b; )while(a+); printf( d, dn, a, b); ) 则程序的输出结果是 ( A) 0, 2 ( B) 1, 2 ( C) 1, 3 ( D) 2, 3 22

13、有以下程序段 inti, n; for(i=0; i 8; i+) n=rand( ) 5; switch(n) case1: case3: printf( dn n); break; case2: case4: printf( dn, n); continue; case0: exit(0); printf( dn, n); 以下关于程序段执行情况的叙述, 正确的是 ( A)当产生的随机数 n为 4时结束循环操作 ( B)当产生的随机数 n为 1和 2时不做任何操作 ( C)当产生的随机数 n为 0时结束程序运行 ( D) for循环语句固定执行 8次 23 有以下程序 #include s

14、tdio h yoidmain( ) intc=0, k; for(k=1; k 3; k+) switch(k) default: c+=k; case2: c+; break; case4: c+=2; break; printf( dn, c); ( A) 9 ( B) 7 ( C) 5 ( D) 3 24 有以下程序 #include stdio h yoidmain( ) charb, c; inti; b=a; c=A; for(i=0; i 6; i+) if(i 2)putchar(i+b); elseputchar(i+c); pfintf(n); 程序运行后的输出结果是 (

15、 A) abcDEF ( B) abcDeF ( C) abcdef ( D) abcdEf 25 若有以下程序 main( ) inta=6, b=0, c=0; for(; a; ) b+=a; a-=+C; printf( d, d, dkn, a, b, c); ) 则程序的输出结果是 ( A) 1, 14, 3 ( B) 0, 18, 3 ( C) 0, 14, 3 ( D) 0, 14, 6 26 若有以下程序 #include char*a=you; charb=WelcomeyoutoChina!; main( ) inti, j: 0; char*p; for(i=0; bi

16、!=0; i+) if(*a=bi) p=a; for(j=i; *p!=0; j+) if(*P!=bj)break; p+; if(*p=0)break; printf( s, bi); 则程序的输出结果是 ( A) youtoChina! ( B) toChina! ( C) meyoutoChina! ( D) China! 27 有以下程序 main( ) inti, j; for(i=1; i 4; i+) for(j=i; j 4; j+) printf( d* d= d, i, j, i*j); printf(n); ( A) 1*1=11*2=21*3=32*1=22*2=4

17、3*1=3 ( B) 1*1=11*2=22*2=41*3=32*3=63*3=9 ( C) 1*1=11*2=21*3=32*2=42*3=63*3=9 ( D) 1*1=12*1=22*2=43*1=33*2=63*3=9 28 以下叙述中正确的是 ( A) continue语句的作用是:使程序的执行流程跳出包含它的所有循环 ( B) break语句只能用在循环体内和 switch语句体内 ( C)在循环体内使用 break语句和 continue语句的作用相同 ( D) break语句只能用于 switch语句体中 国家二级 C语言机试( C语言程序设计)模拟试卷 6答案与解析 一、选择

18、题 1 【正确答案】 B 【试题解析】 输出 ” ”,可以住格式控制中用 ” ”表示,将输出一个 ” ”,而没有表示格式符的开始, d不能表示格式符,因此仅输出: a=e/od,b= d。 【知识模块】 C语言程序设计 2 【正确答案】 D 【试题解析】 本题丰要考查 scanf函数的输入格式问题。 scanf函数的一般形式为: scanf(格式控制字符串,地址 1,地址 2) ;格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成: 格式说明符由 ” ”和格式字符组成,如 c, d, s, f等。其作用是将输入的数据转换为指定的格式,赋给scanf的二个参量 (是地址 1)所指

19、定的内存单元 (可能一次使用多个 )中。格式说明以 ” ”字符为标志。 普通字符,是需要用户在输入时原样输入的字符。在小题中格式摔制字符串为 ” d, d, d”,表示按十进制输入三个数据。要求在输入数据时,两个数据间一定以一个逗号 ”, ”作为间隔符。 【知识模块】 C语言程序设计 3 【正确答案】 C 【试题解析】 在采用 scanf这个函数输入数据时,要严格遵守其输入的规则定义。本题此函数定义的规则是,存两个整数之间加分号输入。 【知识模块】 C语言程序设计 4 【正确答案】 A 【试题解析】 当使用 scanf函数从键盘输入数据时,每行数据在未按下回车键之前,可以任意修改。但按下回车键

20、后, scanf函数即接受了这一行数据,不能冉修改。选项 A正确,对于选项 B, 还可以表明复合语句的开头结尾,或者循环体的开 头结尾等,选项 B错误,而空语句为,不是空行,选项 C错误,在复合语句中可以定义变量为局部变量,选项 D错误。 【知识模块】 C语言程序设计 5 【正确答案】 C 【试题解析】 本题考查 scanf语句。 scanf( )函数是格式化输入函数,它从标准输入设备 (键盘 )读取输入的信息。其调用格式为: scanff”格式化字符串 ”,地址表 )格式化字符串包括以下 3类不同的字符; 格式化说明符:格式化说明符与前而用的 printf( )函数中的格式说明符基本相同。

21、空白字符:空白字符会使 scanff)函数在读操作中略去输入中的一个或多个空白字符。 非空白字符:一个非空白字符会使 scanff( )函数在读入时剔除掉与这个非空白字符相同的字符。由于在 scanf函数中,几个变量之间没有任何间隔,所以输入的时候,也同样不应该有间隔。 【知识模块】 C语言程序设计 6 【正确答案】 A 【试题解析】 选项 B没有对指针进行初始化,无效指针。选项 C错在没有对指针进行初始化,无效指针,并且在 scanf(“ d”, p)中无需再进行取地址操作。选项 D,语句 *p= k;的左端 *p是指针所指内存 空间的值, k是地址,应为 p= k。 【知识模块】 C语言程

22、序设计 7 【正确答案】 D 【试题解析】 在题目中以字符串的形式给字符数组赋值,所以字符数组 name的值为 Lili。 【知识模块】 C语言程序设计 8 【正确答案】 B 【试题解析】 x=1, if和 elseif的条件都不满足,故 y值不改变输出。 【知识模块】 C语言程序设计 9 【正确答案】 A 【试题解析】 在 C语言中,用分号表示一条语句的结束,用 把几条语句放在一块表示一个语句块,其整体表示一 个功能。因而在题目给出的四个选项中,选项B、 C、 D表示的功能相同,而选项 A表示的是一条 if语句,两条赋值语句。 【知识模块】 C语言程序设计 10 【正确答案】 A 【试题解析

23、】 由题意可知计算公式的含义是:当 x大于等于 0时, v值等于 x的算 *平方根;当 x小于 0时, y值等于 x的相反数的算 *平方根。所以选项 B用一个完整的 ifelse语句表达了计算公式的含义;选项 C用两个 if语句表达了计算公式的含义;选项 D在求平方根函数的后面用 x0?x; -x条件表达式来表达了计算公式的含义。选项 A没有用 C语言语 句正确的表达计算公式的含义。 【知识模块】 C语言程序设计 11 【正确答案】 A 【试题解析】 选项 B、 C、 D这三条语句都是在变量不等于 0的情况下,输出x;等于 0的情况下输出 v,而选项 A则正好相反。 【知识模块】 C语言程序设

24、计 12 【正确答案】 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语言程序设计 13 【正确答案】 C 【试题解析】 break为 C语言关键字,又称间断语句。 break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在 switch语句中,也可以出现在循环语句中。 default是关键字,起标号的作用

25、,代表所有 case标号之外的那些标号。 default标号可以出现在语句体中任何标号位置上。在 switch语句体中也可以没有 default标号。 【知识模块】 C语言程序设 计 14 【正确答案】 C 【试题解析】 本题考查的是用 switch语句实现多分支选择结构,首先进入第一个 switch(x)判断,进入 case1中进行嵌套判断,如果 switch(y)也成立, a自加 1,遇到 break,退出嵌套,接着执行 case2, a自加为 2, b自加为 1,遇到 break,结束循环,此时 a=2, b=1。 【知识模块】 C语言程序设计 15 【正确答案】 C 【试题解析】 题干

26、中的表达式的功能是当 a b并且 b c时,变量 k的值等于1,其余情况下,变量 k的值都是等于 0。 【知识模块】 C语言程序设计 16 【正确答案】 B 【试题解析】 在 while循环中每次变量 y的值减 l,直到其值等于 0时退出循环,这时 y的再减 1变为 -1。 【知识模块】 C语言程序设计 17 【正确答案】 B 【试题解析】 这道试题主要考查了 switch和 break语句,当变量 s的值为 1时,执行 casel、 case2两条语句,输出 65;当变量 s的值为 2时,执行 case2语句,输出 6;变量 s的值为 3时,执行 case3、 default两条语句,输出

27、64;变量 s的值为4时,执行 default语句,输入 5;变量 s的值为 5时,执行 default语句,输出6;变量 s的值为 0时,程序运行结束。 【知识模块】 C语言程序设计 18 【正确答案】 C 【试题解析】 while循环的执行过程如下: 计算 while后面圆括号中表达式的值,当值为非 0时,执行步骤 :当值为 0时,执行步骤 ; 执行循环体一次: 转去执行步骤 : 退出循环。在选项 C中,表达式 (ch=getchar( )!=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这 个条件表达式不成立,即输入的字符等于 N,则退出循环。

28、 【知识模块】 C语言程序设计 19 【正确答案】 B 【试题解析】 循环体为空,共执行 2次。第一次变量 a初值为 -2, b初值为 0,表达式 a+ +b值为 l,同时 a的值为 -1, b的值为 1,第二次循环条件判断以后, a的值为 0, b的值 2,执行循环体空,第三次判断条件表达式值为 0,不执行循环体,而 a的值为 1,但是表达式 a+的值为 0,因此不计算表达式 +b的值, b的值仍为 2。 【知识模块】 C语言程序设计 20 【正确答案】 A 【试题解析】 选项 B中 while(1)永远为真所以进入死循环,选项 C中 while(n=10)同理,选项 D中 for循环没有循

29、环限定条件也将进入无限循环,只有选项 A中while(n =01循环判定成立,循环将不进入无限循环。 【知识模块】 C语言程序设计 21 【正确答案】 C 【试题解析】 由于 a的初始值等于 2,所以 while循环语言执行三次结束,第一次 a=-2, b=1,然后判断循环条件 a+非零,执行第二次循环体 a=-1, b=2,判断循环条件非零,执行循环体 a=0, b=3,判断循环条件为 0,此时变量 a的值等于 1。 【知识模块】 C语言程序设计 22 【正确答案】 C 【试题解析】 rand( )函数功能为产生一个随机数, rand( ) 5,则产生 0 4之间的任意随机数,当产生的随机数

30、 n为 0时,执行 ”caseO: exit(0)”这条语句,结束程序的运行。 【知识模块】 C语言程序设计 23 【正确答案】 D 【试题解析】 在这段程序中,整型变量 c的初始值赋为 0,在第一次执行 for循环语句时,因为此时变量 k的值等于 1,所以在 switch语句中首先执行 default语句,给变量 c的值加 l,因为在 default语句后面没有 break语句,所以就会接着执行 case2这条语句,再给变量 c的值加 1,其值变为 2,这时退出 switch语句块,进入第二次 for循环,此时 k的值等于 2,就会执行 switch语句块中的 case2这条语句,再给变量

31、c的值加 1,这时变量 c的值就是 3,此时退出 switch语句块,循环变量 k的值加 1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c的值在屏幕上输出。 【知识模块】 C语言程序设计 24 【正确答案】 D 【试题解析】 循环变量 i从 0依次递增到 5,依次输出字 *A, b, c, d, E, f。 【知识模块】 C语言程序设计 25 【正确答案】 C 【试题解析】 循环体执行三次, a初值 6,第一次执行循环体, b=6,题 a=5。继续执行循环体, b=11, a=3,第三次执行循环体, b=14, a=0,循环退出。 【知识模块】 C语言程序设计 26

32、【正确答案】 A 【试题解析】 程序中循环部分的主要功能是,在字符串 b中寻找是否含有予串a,如果含有则退出,此时 i为子串 a在字符串 b中第一次出现的 位置。因此最后的输出函数则从第 i个字符开始一直输出到字符串的末尾。 【知识模块】 C语言程序设计 27 【正确答案】 C 【试题解析】 外层 for循环的自变量 i从 1开始,每次循环后增 1,直到 i等于 3结束。对于外层循环自变量 i的每一个值,内层循环的自变量 i每次从 i开始,每次循环后增 l,直到 j等于 3结束。所以在每次外循环开始后,内层循环在一行先打印一 =两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。 【知识模块】 C语言程序设计 28 【正确答案】 B 【试题解析】 只能在循环体内和 switch语句体内使用 break语句。 continue语句的作用是结束本次循环,即跳过本次循环体中 continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。而 break语句可以使程序流程跳出 switch语句体,也可用 break语句在循环结构中终止循环体。 【知识模块】 C语言程序设计

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

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

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