1、国家二级( C语言)机试历年真题试卷汇编 2及答案与解析 一、选择题 1 以下关于结构化程序设计的叙述中正确的是 ( )。【 10年 9月】 ( A)一个结构化程序必须同时由顺序、分支、循环三种结构组成 ( B)结构化程序使用 goto语句会很便捷 ( C)在 C语言中,程序的模块化是利用函数实现的 ( D)由三种基本结构构成的程序只能解决小规模的问题 2 以下关于简单程序设计的步骤和顺序的说法中正确的是 ( )。【 10年 9月】 ( A)确定算法后,整理并写出文档,最后进行编码和上机调试 ( B)首先 确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档 ( C)先编码和上机调试,
2、在编码过程中确定算法和数据结构,最后整理文档 ( D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构 3 以下叙述中错误的是 ( )。【 10年 9月】 ( A) C程序在运行过程中所有计算都以二进制方式进行 ( B) C程序在运行过程中所有计算都以十进制方式进行 ( C)所有 C程序都需要编译链接无误后才能运行 ( D) C程序中整型变量只能存放整数,实型变量只能存放浮点数 4 有以下定义: int a; long b; double x, y;,则以下选项中正确的表达式是 ( )。【 10年 9月】 ( A) a (int)(x-y) ( B) a=x!=y; ( C)
3、(a*y) b ( D) y=x+y=x 5 以下选项中能表示合法常量的是 ( )。【 10年 9月】 ( A)整数: 1, 200 ( B)实数: 1 5E2 0 ( C)字符斜杠: ( D)字符串; “ 007” 6 表达式 a+=a-=a=9的值是 ( )。【 10年 9月】 ( A) 9 ( B) -9 ( C) 18 ( D) 0 7 若变 量已正确定义,在 if(W)print(“ d n“, k);中,以下不可替代 W的是( )。【 10年 9月】 ( A) a b+c ( B) ch=getchar() ( C) a=b+c ( D) a+ 8 以下关于 C语言的叙述中正确的是
4、 ( )。【 10年 3月】 ( A) C语言中的注释不可以夹在变量名或关键字的中间 ( B) C语言中的变量可以在使用之前的任何位置进行定义 ( C)在 C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 ( D) C语言的数值常量中夹带空格不影响常量值的正确表示 9 以下 C语言用户标识符中,不合法的是 ( )。【 10年 3月】 ( A) -1 ( B) AaBc ( C) a b ( D) a-b 10 以下关于 C语言数据类型使用的叙述中错误的是 ( )。【 10年 3月】 ( A)若要准确无误差的表示自然数,应使用整数类型 ( B)若要保存带有多位小数的数据,应使用双精度类型
5、 ( C)若要处理如 “人员信息 ”等含有不同类型的相关数据,应自定义结构体类型 ( D)若只处理 “真 ”和 “假 ”两种逻辑值,应使用逻辑类型 11 有以下程序,其中 k的初值为八进制数: #include stdio h main() int k=011; printf(“ d n“, k+); 程序运行后的输出结果是 ( )。【 10年 3月】 ( A) 12 ( B) 11 ( C) 10 ( D) 9 12 有以下程序: #include stdio h main() int a=2, b=-2, c=2; printf(“Vodkn“,a b&c); 程序运行后的输出结果是 (
6、)。【 10年 3月】 ( A) 0 ( B) 1 ( C) 2s ( D) 3 13 以下选项中,能用作用户标识符的是 ( )。【 09年 9月】 ( A) void ( B) 8_8 ( C) _0_ ( D) unsigned 14 表达式 (int)(double)9 2)-(9) 2的值是 ( )。【 09年 9月】 ( A) 0 ( B) 3 ( C) 4 ( D) 5 15 若有定义语句: int x=10;,则表达式 x-=x+x的值为 ( )。【 09年 9月】 ( A) -20 ( B) -10 ( C) 0 ( D) 10 16 以下叙述中正确的是 ( )。【 09年 9
7、月】 ( A)程序设计的任务就是编写程序代码并上机调试 ( B)程序设计的任务就是确定所用数据结构 ( C)程序设计的任务就是确定所用算法 ( D)以上三种说法都不完整 17 以下选项中合法的标识符是 ( )。【 09年 3月】 ( A) 1_1 ( B) 1-1 ( C) _11 ( D) 1_ 18 以下选项中,能用作数据常量的是 ( )。【 09年 3月】 ( A) 0115 ( B) 0118 ( C) 1 5e1 5 ( D) 115L 19 以下叙述中正确的是 ( )。【 08年 9月】 ( A) C程序的基本组成单位是语句 ( B) C程序中的每一行只能写一条语句 ( C)简单
8、C语句必须以分号结束 ( D) C语句必须在一行内写完 20 计算机能直接执行的程序是 ( )。【 08年 9月】 ( A)源程序 ( B)目标程序 ( C)汇编程序 ( D)可执行程序 21 有以下程序: #include stdio h main() int a=1, b=0; if(!a)b+; else if(a=0)if(a)b+=2; else b+=3; printf(“ d n“, b); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 0 ( B) 1 ( C) 2 ( D) 3 22 若有定义语句 int a, b; double x;,则下列选项中没有错误的
9、是 ( )。【 10年9月】 ( A) switch(x 2) case 0: a+; break; case 1: b+: break; default: a+; b+; ( B) switch(int)x 2 0) case 0: a+; break; case 1: b+; break; default: a+; b+; ( C) switch(int)x 2) case 0: a+; break; case 1: b+: break; default: a+ b+; ( D) switch(int)(x) 2) case 0 0: a+; break; case 1 0: b+; br
10、eak; default: a+; b+; 23 有以下程序: #inelude stdio h main() int a=1, b=2; while(a 6)b+=a; a+=2; b =10; ) printf(“ d, d n“, a, b); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 5, 11 ( B) 7, 1 ( C) 7, 11 ( D) 6, 1 24 有以下程序: #include stdio h main() inty=10; while(y-); printf(”y= d n“, y); 程序执行后的输出结果是 ( )。【 10年 9月】 ( A)
11、y=0 ( B) y=-1 ( C) V=1 ( D) while构成无限循环 25 若有定义: double a=22; int i=0, k=18;,则不符合 C语言规定的赋值语句是( )。【 10年 3月】 ( A) a=a+, i+; ( B) i=(a+k) =(i+k); ( C) i=a 11: ( D) i=!a; 26 若 a是数值类型,则逻辑表达式 (a=1)(a!=1)的值是 ( )。【 10年 3月】 ( A) 1 ( B) 0 ( C) 2 ( D)不知道 a的值,不能确定 27 有如下嵌套的 if语句: if(a b) if(a c)k=a; else k=c; e
12、lse if(b c)k=b; else k=c; 以下选项中与上述 if语句等价的语句是 ( )。【 10年 3月】 ( A) k=(a b)?a: b; k=(b c)?b: c; ( B) k=(a b)?(b c)?a: b): (b c)?b: c); ( C) k=(a b)?(a c)?a: c): (b c)?b: c); ( D) k=(a b)?a: b; k=(a c)?a: c; 28 有以下程序: #include stdio h main() char a, b, c, d; scanf(“ c c“, &a, &b); c=getchar(); d=getchar
13、(); printf(“ c c c c n“, a, b, c, d); 当执行程序时,按下列方式输入数据 (从第 1列开始, CR代表回车,注意:回车也是一个字符。 12 CR 34 CR 则输出结果是 ( )。【 10年 3月】 ( A) 1234 ( B) 12 ( C) 12 3 ( D) 12 34 29 有以下程序: #inelude stdio h main() int ij, m=1; for(i=1; i 3; i+) for(j=3; j 0; j-) if(i*j 3)break; m*=i*j; printf(“m= d n“, m); 程序运行后的输出结果是 ( )
14、。【 10年 3月】 ( A) m=6 ( B) m=2 ( C) m=4 ( D) m=5 30 有以下程序: #include stdio h void main() int n=2, k=0; while(k+&n+ 2); printf(“ d d n“, k, n); 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 0 2 ( B) 1 3 ( C) 5 7 ( D) 1 2 31 阅读以下程序: #include stdio h main() intcase; float printF; printf(“请输入 2个数: “); scanf(“ d f“, &case
15、, &printf); printf(“ d f n“, case, printf); 该程序在编译时产生错误,其出错原因是 ( )。【 09年 9月】 ( A)定义语句出错, case是关键字,不能用作用户自定义标识符 ( B)定义语句出错, printf不能用作用户自定义标识符 ( C)定义语句无错, scanf不能作为输入函数使用 ( D)定义语句无错, printf不能输出 case的值 32 有以下程序: #inelude stdio h void main() int a=1, b: 0; printf(“ d, “, b=a+b); printf(“ d n“, a=2*b);
16、程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 0, 0 ( B) 1, 0 ( C) 3, 2 ( D) 1, 2 33 设有定义: int a=1, b=2, c=3;,以下语句中执行效果与其他 3个不同的是( )。【 09年 9月】 ( 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; ) 34 有以下程序 #inelude stdio h void main() int c=0, k; for(k=1; k
17、3; k+) switch(k) default: c+=k; case 2: c+; break; case 4: c+=2; break; printf(“ d n“, c); 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 3 ( B) 5 ( C) 7 ( D) 9 35 有以下程序: #inelude stdio h void main() char c1, c2; c1=A+8-4: c2=A+8+5; printf(“ c, d n“, c1, c2); 已知字母 A的 ASCII码为 65,程序运行后的输出结果是 ( )。【 09年 9月】 ( A) E, 68
18、( B) D, 69 ( C) E, D ( D)输出无定值 36 有以下程序: #include stdio h void main() int a: 2, 3, 5, 4, i; for(i=0; i 4; i+) switch(i 2) case 0: switch(ai 2) case O: ai+; break; case 1: ai-; break; case 1: ai=0; for(i=0; i 4; i+) printf(“ d“, ai); printf(“ n“); 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 3 3 4 4 ( B) 2 0 5 0 (
19、 C) 3 0 4 0 ( D) 0 3 0 4 37 以下是 if语句的基本形式: if(表达式 ) 语句 其中 “表达式 ”( )。【 09年 3月】 ( A)必须是逻辑表达式 ( B)必须是关系表达式 ( C)必须是逻辑表达式或关系表达式 ( D)可以是任意合法的表达式 38 有以下程序: #include stdio h main() int x; scanf(“ d“, &x); if(x =3); else if(x!=10) printf(“ d n“, x); 程序运行时,输入的值为 ( )才会有输出结果。【 09年 3月】 ( A)不等于 10的整数 ( B)大于 3且不等
20、10的整数 ( C)大于 3或等于 10的整数 ( D)小于 3的整数 39 有以下程序 #inelude stdio h 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); 程序运行后的输出结果是 ( )。【 09年 3月】 ( A) 1, 2, 3 ( B) 1, 3, 2 ( C) 1, 3, 3 ( D) 3, 2,
21、1 40 若函数中有定义语句: int k;,则 ( )。【 09年 3月】 ( A)系统将自动给 k赋初值 0 ( B)这时 k中的值无定义 ( C)系统将自动给 k赋初值 -1 ( D)这时 k中无任何值 41 程序段: int x=12; double y=3 141593; printf(“ do 08 6f“, x, y);的输出结果是 ( )。【 09年 3月】 ( A) 123 141593 ( B) 12 3 141593 ( C) 12, 3 141593 ( D) 123 1415930 42 有以下程序: #inelude stdio h main() int a1, a
22、2; char c1, c2; scanf(“ d c d c“, &a1, &c1, &a2, &c2); prinff(“ d, c, d, c“, a1, c1, a2, c2); 若想通过键盘输入,使得 a1的值为 12, a2 的值为 34, c1的值为字符 a, c2的值为字符 b,程序输出结果是: 12, a, 34, b则正确的输入格式是 ( )。 (以下口代表空格, CR代表回车 )。【 09年 3月】 ( A) 12a34b CR ( B) 12a34b CR ( C) 12, a, 34, b CR ( D) 12a34b CR 43 有以下程序: #include st
23、dio h main() char*s=“ABC“; do printf(“ d“, *s 10); s+; while(*s); 注意:字母 A的 ASCII码值为 65。程序运行后的输出结果是 ( )。【 09年 3月】 ( A) 5670 ( B) 656667 ( C) 567 ( D) ABC 44 设变量已正确定义,以下不能统计出一行中输入字符个数 (不包含回车符 )的程序段是 ( )。【 09年 3月】 ( A) n=0; while(ch=getchar()!= n)n+; ( B) n=0; while(getchar()!= n)n+; ( C) for(n=0; getc
24、har()!= n; n+); ( D) n=0; for(ch=getchar(); ch!= n; n+); 45 设有定义: char s80; int i=0;,以下不能将一行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是 ( )。【 09年 3月】 ( A) gets(s); ( B) while(si+=getchar()!= n); si= 0; ( C) scanf(“ s“, s); ( D) doscanf(“ c“, &si); while(si+!= n); si= 0; 46 若变量已正确定义为 int型,要通过语句 scanf(“ d, d, d
25、“, &a, &b,&c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (口代表一个空格符 )( )。【 08年 9月】 ( A) 1, 2, 3回车 ( B) 123回车 ( C) 1, 2, 3回车 ( D) 1, 2, 3回车 47 有以下程序段: int a, b, c; a=10; b=50; c=30; if(a b)a=b, b=c; c=a; printf(“a= d b= d c= d n“, a, b, c); 程序的输出结果是 ( )。【 08年 9月】 ( A) a=10 b=50 c=10 ( B) a=10 b=50 c=30 ( C)
26、a=10 b=30 c=10 ( D) a=50 b=30 c=50 48 有以下程序: #include stdio h main() int x=1, y=2, z=3; if(x y) if(y z)printf(“ d“, +z); else printf(“ d“, +y); printf(“ d n“, x+); 程序的运行结果是 ( )。【 08年 9月】 ( A) 331 ( B) 41 ( C) 2 ( D) 1 49 有以下程序: #include stdio h main() int i=5; do if(i 3=1) if(i 5=2) printf(“* d“i);
27、break; i+: while(i!=0); printf(“ n“); 程序的运行结果是 ( )。【 08年 9月】 ( A) *7 ( B) *3*5 ( C) *5 ( D) *2*6 50 有以下程序: #include stdio h main() char S=“rstuv“; printf(“ c n“, *s+2); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) tuv ( B)字符 t的 ASCII码值 ( C) t ( D)出错 51 有以下程序: #include stdio h #include string h main() char x=“STRI
28、NG“; x0=0; x1= 0; x2=0; printf(“ d d n“, sizeof(x), strlen(x); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 6 1 ( B) 7 0 ( C) 6 3 ( D) 7 1 52 有以下程序: #include stdio h int f(int x); main() int n=1, m; m=f(f(f(n); pfintf(“ d n“, m); int flint x) return x*2; 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 1 ( B) 2 ( C) 4 ( D) 8 53 下列
29、定义数组的语句,正确的是 ( )。【 10年 9月】 ( A) intN=10; int xN; ( B) #define N 10 int xN; ( C) int x0 10; ( D) int x; 国家二级( C语言)机试历年真题试卷汇编 2答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 C语言是 结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提倡结构化设计以来, goto就成了有争议的语句。首先,由于 goto语句可以灵活跳转,如果
30、不加限制,它的确会破坏结构化设计风格。其次, goto 语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎 能解决大部分问题。 【知识模块】 C语言的基本知识 2 【正确答案】 B 【试题解析】 简单程序设计的步骤是首先确定数据结构,然后确定算法,再编码并上机调试,最后整理文档。 【知识模块】 C语言的基本知识 3 【正确答案】 B 【试题解析】 计算机程序都是编译为二进制的代码,计算机才会执行。 【知识模块】 C语言的基本知识 4 【正确答案】 B 【试题解析】
31、 选项 A),若 x和 y相等,则分母为 0,出现除 0错误。选项 C),double类型不能进行取余 ( )操作,要 求两个运算数必须是整数。选项 D), x+y=x错误。 【知识模块】 C语言的基本知识 5 【正确答案】 D 【试题解析】 选项 A), 1200中间不能有逗号,否则编译时会认为是 1或出错。选项 B), 2 0错误,必须为整数。选项 C),要表示字符斜杠常量 ,应该在反斜杠的前面再加上一个反斜杠。选项 D),字符串常量是用一对双引号括起来的一串字符。 【知识模块】 C语言的基本知识 6 【正确答案】 D 【试题解析】 第一步 a=9,然后计算 a-a的值,并将此值赋给 a,
32、此时 a=0,最后计算 a+a,并将此值赋给 a,因此最终结果为 0。 【知识模块】 C语言的基本知识 7 【正确答案】 A 【试题解析】 在 if()语句的括号中的内容是一个合法的 C语言表达式即可,如果表达式的值为 0,则不执行 if 语句,否则执行 if语句。而在选项 A)中,符号不是 c语言的合法运算符,如果要表达 a大于或小于 b+c可用 a!-b+c或 (ab+c)(a b+c)来表达,而不能使用 a b+c。所以它不是一个合法的 C语言表达式。 【知识模块】 C语言的基本知识 8 【正确答案】 A 【试题解 析】 C语言中的注释可以出现在任何位置,但它不能出现在关键字或标识符号中
33、间;复合语句中定义的变量都是局部变量,只在该复合语句中有效;一个浮点数可以和一个整数相加,运算符两侧的运算类型也可以不一致;数值常量中不允许夹带空格。 【知识模块】 C语言的基本知识 9 【正确答案】 D 【试题解析】 在 C语言中的用户标识符只能由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,在选项 D)中出现了非法的字符一。 【知识模块】 C语言的基本知识 10 【正确答案】 D 【试题解析】 在 C语言中没有定义逻辑类型,而是用 0代表假,用非零代表真。 【知识模块】 C语言的基本知识 11 【正确答案】 D 【试题解析】 变量 k的值为八制数 011,其对应的十制进数为 9
34、。 【知识模块】 C语言的基本知识 12 【正确答案】 A 【试题解析】 因为算术运算符除法的优先级要高于按位与运算法的优先级,所以表达式 a b&c的计算过程是:首先进行 a b 的运算,结果为 1,然后 1再与 2进行按位与运算,其结果为 0。 【知识模块】 C语言的基本知识 13 【正确答案】 C 【试题解析】 在 C语言中,用户的标识符只能由字母或下划线开始。一般强调见文知义的命名方法。但是 C语言中的保留字不能用作用户的标识符。 【知识模块】 C语言的基本知识 14 【正确答案】 B 【试题解析】 这个表达式的计算过程为:首先求出 9除以 2的商等于 4,再把其强制转化为实型数据为
35、4 0,然后再强制转化为整型数据 4,最后减去 9对 2求余得到的数 1,最终结果等于 3。 【知识模块】 C语言的基本知识 15 【正确答案】 B 【试题解析】 整型变量 x的初始值等于 10,计算题目所 求表达式的值时,首先计算 x与 x的和等于 20,然后再用 10减去 20等于 -10,得到该表达式的值。 【知识模块】 C语言的基本知识 16 【正确答案】 D 【试题解析】 程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项 A)、 B)、 C)等方面。 【知识模块】 C语言的基本知识 17 【正确答案】 C 【试题解析】 本题考查标识符定义。合法标识符
36、的要求是由下划线、英文大小写字母和数字组成的字符串,且第一个字符必须是字母或下划线。由此可见,选项A)、 D)不符合第二条,选项 B)不符合第一条。 【知识模块】 C语言的基本知识 18 【正确答案】 D 【试题解析】 本题考查常量定义。数据常量可有十进制、八进制、十六进制、指数法等,八进制数字为 0 7,第一个字符为 0,而不是 o,因此选项 A)和 B)错误;为指数法时,指数部分须为整数,因此选项 C)错误;选项 D)中数字后加入 L是说明此常量为长整型。 【知识模块】 C语言的基本知识 19 【正确答案】 C 【试题解析】 一个 C语言源程序由许多函数组成,这些函数都是根据实际任务,确定
37、具体的算 法,由用户自己编写。所以选项 A)不正确; C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。所以选项 B)和 D)不正确; C语言规定每条语句和数据定义的最后必须有一个分号,分号是 C语句的必要组成部分。 【知识模块】 C语言的基本知识 20 【正确答案】 D 【试题解析】 把由高级语言编写的程序称为 “源程序 ”,由二进制代码表示的程序称为 “目标程序 ”(后缀名为 obj),由汇编语言编写的程序称为 “汇编程序 ”。为了把源程序转换成机器能接收的目标程序,软件工作者编制了一系列软件,通过这些软 件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。这种具有
38、翻译功能的软件称为 “编译程序 ”,每种高级语言都有与它对应的编译程序。 C源程序经过 C编译程序编译之后生成一个后缀为 obi 的二进制文件 (称为目标文件 ),这个目标程序要和 C语言的库函数相链接生成一个后缀为 exe的文件,这个文件可以在操作系统中直接执行,称为可执行程序。 【知识模块】 C语言的基本知识 21 【正确答案】 A 【试题解析】 本题考查 if else语句。最开始 a=1, b=0;此时 if(!a)不成立,转到执行 else if(a=0),由于 a=1,导致对应的语句 if(a)b+=2; else b+=3;不会执行,所以 b的值没有改变,最后执行 printf(
39、“ d n“, b);输 出 0。 【知识模块】 C语言程序设计 22 【正确答案】 C 【试题解析】 运算符两边的表达式必须是整型,所以选项 A)、 B)错误。选项D)中 switch 后的表达式类型和 case后的表达式类型不一致。 【知识模块】 C语言程序设计 23 【正确答案】 B 【试题解析】 程序的执行过程如下: a=1时, b=b+a=3, a=a+2=3, b=b 10=3; a=3时, b=b+a=6, a=3+2=5, b=b 10=6; a=5时, b=b+a=11, a=a+2=7, b=b 10=1。 此时 a=7 6不满足循环条件,退出循环,此时 a=7, b=1。
40、 【知识模块】 C语言程序设计 24 【正确答案】 B 【试题解析】 在 while循环中每次变量 y的值减 1,直到其值等于 0时退出循环,这时 y的再减 1变为 -1。 【知识模块】 C语言程序设计 25 【正确答案】 C 【试题解析 】 在 C语言中,求余运算符的运算对象只能是整型,在本题中,变量 a是一个双精型变量,因此选项 C)中赋值表达式的右侧的表达式是一个非法的表达式。 【知识模块】 C语言程序设计 26 【正确答案】 A 【试题解析】 在逻辑表达式中, ab,只有在 a和 b 都为 0时,表达式的结果才为 0。在题中所给的表达式中 a要么等于 1,要么不等于 1,肯定会有一方的
41、值为真。 【知识模块】 C语言程序设计 27 【正确答案】 C 【试题解析】 嵌套的 if else语句的含义是,在变量 a的值小于变量 b 的值,同时,变量 a的值小于变量 c的值时,把变量 a的值赋给变量 k。在变量 a的值小于变量 b的值,同时,变量 a的值大于等于变量 c的值时,把变量 c的值赋给变量k。在变量 a的值大于等于变量 b的值,同时,变量 b 的值小于变量 c的值时,把变量 b的值赋给变量 k。在变量 a的值大于等于变量 b 的值,同时,变量 b的值大于等于变量 c的值时,把变量 c的值赋给变量 k。 【知识模块】 C语言程序设计 28 【正确答案】 C 【试题解析】 在程
42、序中, scanf 函数把 1和 2分别赋给变量 a 和 b, getcllar!()函数把回车符赋给变量 c, getchar()函数把 3赋给变量 d。 【知识模块】 C语言程序设计 29 【正确答案】 A 【试题解析】 这道题考查了 for循环的嵌套应用。对于外层 for循环来说,变量 i从 1增到 2,循环执行 2次。当变量 i的值等于 l时,对于内层 for循环来说,变量 j从 3减到 1,求得变量 m的值等于 6。当变量 i的值等于 2时,第一遍执行内层 for循环,变量 j的值等于 3,那么 i*j的值等于 6,其值大于 3,这时执行break 语句,退出内层 for循环的执行。
43、所以程序输出变量 m的值为 6。 【知识模块】 C语言程序 设计 30 【正确答案】 D 【试题解析】 在程序中整型变量 n的初始值等于 2,整型变量 k的初始值等于0,在执行 wile语句时,由于表达式 k+的值等于 0,所以 while语句中的条件不满足,循环语句不会执行,但是变量 k 的值会加 1,所在输出变量 k和 n 的值是 1和 2。 【知识模块】 C语言程序设计 31 【正确答案】 A 【试题解析】 case是 C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。 【知识模块】 C语言程序设计 32 【正确答案】 D 【试题解析】 在主函数中定义了两
44、个整型变量 a和 b,并把它们的初值分别设置为 1和 0;在第 2条语句中,首先计算出 a和 b 的和等于 1,把此值赋给变量 b,并在屏幕上输出此时变量 b 的值 1;在第 3条语句中,计算出 2乘以 1的积等于2,把 2赋给变量 a,再把变量 a的值在屏幕上输出。 【知识模块】 C语言程序设计 33 【正确答案】 C 【试题解析】 在 C语言中,用分号表示一条语句的结束,用 把几条语句放在一块表示一个语句块,其整体表示一个功能。在本题给出的 4个选项中,选项 A)、B)、 D)表示的功能相同 ,而选项 C)表示的是一条 if 语句和两条赋值语句。 【知识模块】 C语言程序设计 34 【正确
45、答案】 A 【试题解析】 在这段程序中,整型变量 c的初始值赋为 0,在第一次执行 for循环语句时,因为此时变量 k 的值等于 1,所以在 switch 语句中首先执行 defaun 语句,变量 c的值加 1,由于 default语句后面没有 break 语句,会接着执行 case 2语句,再给变量 c的值加 1,其值变为 2,这时退出 switch 语句块,进入第 2次for循环,此时 k的值等于 2,就会执行 switct语句块中的 case 2语句,再给变量c的值加 1,这时变量 c的值就是 3,此时退出 switch 语句块,循环变量 k的值加1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c的值在屏幕上输出。 【知识模块】 C语言程序设计 35 【正确答案】 A