1、国家二级 C语言机试(语言程序设计)模拟试卷 31及答案与解析 一、选择题 1 设 int n1=0, n2, *p=&n2, *q=&n1;,以下赋值语句中与 n2=n1;语句等价的是 ( )。 ( A) *p=*q; ( B) p=*q; ( C) *p=n1; ( D) p=q; 2 通过键盘输入数据,为数组中的所有元素赋值,在程序中下划线处应填入的是( )。 #nclude #define N 10 void fun(int xN) int i=0; while(i N)scanf( d, _); ( A) xi+1 ( B) x+i ( C) x+(i+) ( D) X+i 3 设
2、int x6=2, 4, 6, 8, 5, 7, *p=x, i;要求依次输出 x数组中 6个元素的值,不能完成此操作的语句是 ( )。 ( A) for(i=0; i 6; i+)printf( 2d, *(p+); ( B) for(i=0; i 6; i+)printf( 2d, *(p+i); ( C) for(i=0; i 6; i+)printf( 2d, *p+); ( D) for(i=0; i 6; i+)prinff( 2d, (*p)+); 4 执行以下程序段后, w的值为 ( )。 int w=A, x=14, y=15; w=(xy)&(w a); ( A)一 1 (
3、 B) 2 ( C) 1 ( D) 0 5 若 int x=12; double y=3 141593;则 printf( d 8 6f, x, y);的输出结果是( )。 ( A) 123 141593 ( B) 12 3 1415930 ( C) 12, 3 141593 ( D) 123 1415930 6 要通过语句 scaRf( 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) 1口 2口 3 7 设 in
4、t a;: float b;执行 scanf( 2d f, &a, &b);语句时,若从键盘输入 876 543 0,则 a和 b的值分别是 ( )。 ( A) 543和 876 0 ( B) 87和 6 0 ( C) 876和 543 0 ( D) 765和 543 0 8 若有定义 int a; float b; double c;程序运行时输入: 3 4 5能把值 3输入给变量a、 4输入给变量 b、 5输入给变量 c的语句是 ( )。 ( A) scanf( d 1f lf, &a, &b, &c); ( B) scanf( d f 1f, &a, &b, &c); ( C) scan
5、f( d f f, &a, &b, &c); ( D) scanf( 1f lf 1f, &a, &b, &c); 9 关于 C语言程序的叙述中正确的是 ( )。 ( A)当用 scanf从键盘输入数据时,每行数据在未按下回车键 (Enter键 )前,可以任意修改 ( B)复合语句存语法上包含多条语句,其中不能定义局部变量 ( C)空语句就是指程序中的空行 ( D)花括号对 只能用来表示函数的开头和结尾,不能用于其他目的 10 关于 scanf语句叙述中正确的是 ( )。 ( A)在 Scanf函数的格式控制字符串中,必须有与输入项一一对应的格式转换说明符 ( B)复合语句也被称为语句块,它至
6、少要包含两条语句 ( C) Scanf函数中的格式控制字符串,是提示程序员的,输入数据时不必管它 ( D)只能在 printf函数中指定输入数据的宽度,而不能在 scanf函数中指定输入数据占的宽度 11 与其他三个选项的含义不同的是 ( )。 ( A) if(k 2) ( B) if(k 2=1) ( C) if(k 2)! =0) ( D) if(! k 2=1) 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); (
7、A) 1, 2, 3, 4 ( B) 0, 0, 1, 2 ( C)编译有错 ( D) 0, 1, 2, 0 13 在语句 if(W)printf( d n, k);中,不可代替 W的选项是 ( )。 ( A) a=b+c ( B) ch=getchar() ( C) a不是 C语言的合法运算符,如果要表达 a大于或小于 b+c可用 a! =b+c或 (a b+c)(a b+c)来表达,而不能使用 ab+c。所以它不是一个合法的 C语言表达式。 【知识模块】 C语言程序设计 14 【正确答案】 B 【试题解析】 本题主要考查 if条件和 switch分支语句。 “if(a=1)a=b; els
8、e a+; ”代码段的功能是如果 a等于 1则把 b的值赋值给 a,否 则 a+。只有选项 B不能满足要求。 【知识模块】 C语言程序设计 15 【正确答案】 D 【试题解析】 本题考查的是用 switch语句实现多分支选择结构,首先进入第一个 switch(x)判断, x=1进入 case1中进行嵌套判断,执行 switch(y)y=0,进入case0, a自加 1,遇到 break,退出本次嵌套,接着执行 case2, a自加为 2, b自加为 1,遇到 break,结束整个循环,此时 a=2, b=1。 【知识模块】 C语言程序设计 16 【正确答案】 C 【试题解析】 C语言中的 br
9、eak语句的功能是跳出正式执行的条件语句或循环语句。它可以出现在 switch语句中,也可以出现在循环语句中。 default是关键字,起标号的作用,在 switch语句中代表所有 case标号之外的那些标号。 default标号可以出现在语句体中任何标号位置上。 【知识模块】 C语言程序设计 17 【正确答案】 C 【试题解析】 本题是一个条件赋值语句,题干中的表达式的功能是当 a b并且b c时,变量 k的值等于 1。其余情况下,变量 k的值都是等于 0。 【知识模块】 C语言程序设计 18 【正确答案】 B 【试题解析】 在 while循环中每次变量 y的值减 1,直到其值等于 0时退出
10、循环,因为表达式多执行一次,这时 y值再减 1变为一 1。 【知识模块】 C语言程序设计 19 【正确答案】 C 【试题解析】 注意分号位置 while循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量 y=0时,退出循环,变量 y执行自加运算,得 1,所以打印输出变量 y的值为 1。 【知识模块】 C语言程序设计 20 【正确答案】 D 【试题解析】 dowhile 语句 先执行语句,后判断表达式的值。故 do一 while语句又称 “直到型 ”循环结构。由于是先执行后判断,因此 dowhile 语句的循环语句至少被执行一次,循环条件至少判断一次,判断和执行次数相同。 【知
11、识模块】 C语言程序设计 21 【正确答案】 D 【试题解析】 本题考查 for循环。本题的 for循环初始条件为 i=0, k=一 1;循环结束条件为 k=1永远为真 (k不为 0),因此循环不能结束,程序将进入死循环。 【知识模块】 C语言程序设计 22 【正确答案】 C 【试题解析】 C语言中的 rand()函数功能为产生一个随机数, rand() 5,则产生0 4的任意随机数,当产生的随机数 n为 0时,执行 “case 0: exit(0)”这条语句,结束程序的运行。 【知识模块】 C语言程序设计 23 【正确答案】 D 【试题解析】 本道题考查了 for循环的嵌套应用。对于外层 f
12、or循环来说,变量 i从 1增到 2,循环执行 2次。当变量 i的值等于 1时,对于内层 for循环来说,变量 j从 3减到 1,求得变量 m的值等于 6。当变量 i的值等于 2时,第一遍执行内层 for循环,变量 j的值等于 3,那么 m的值等于 6,其值大于 3,这时执行 break语句,退出内层 for循环的执行。 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 本题考查嵌套 for循环,外层 for循环的自变量 i从 1开始,每次循环后增 1,直到 i等于 3结束。对于外层循环自变量 i的每一个值,内层循环的自变量 j每次从 i开始,每次循环后增 1,直到 j等于
13、3结束。所以在每次外循环开始后,内层循环在一行先打印 i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。 【知识模块】 C语言程序设计 25 【正确答案 】 B 【试题解析】 break语句可以使程序流程跳出 switch语句体,也可用 break语句在循环结构中终止循环体,但一次只能跳出或终止一层 switch语句或循环,因此,当 break出现在循环体中的 switch语句体内时,其作用只是跳出该 switch语句体,并不能终止循环体的执行。 continue语句的作用是结束本次循环,在 while和 dowhile循环中 continue语句使得流程直接跳到循环控制条件的测试部分,判断是否会进入下一次循环。 【知识模块】 C语言程序设计