1、二级 C语言-69 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.下列叙述中正确的是_。 A.栈是“先进先出”的线性表 B.队列是“先进后出”的线性表 C.循环队列是非线性结构 D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(分数:2.00)A.B.C.D.2.支持子程序调用的数据结构是_。 A.栈 B.树 C.队列 D.二叉树(分数:2.00)A.B.C.D.3.某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是_。 A.10 B.8 C.6 D.4(分数:2.00)A.B.C.D.4.下列排序方法中,最坏情
2、况下比较次数最少的是_。 A.冒泡排序 B.简单选择排序 C.直接插入排序 D.堆排序(分数:2.00)A.B.C.D.5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。 A.编译程序 B.操作系统 C.教务管理系统 D.汇编程序(分数:2.00)A.B.C.D.6.下面叙述中错误的是_。 A.软件测试的目的是发现错误并改正错误 B.对被调试的程序进行“错误定位”是程序调试的必要步骤 C.程序调试通常也称为 Debug D.软件测试应严格执行测试计划,排除测试的随意性(分数:2.00)A.B.C.D.7.耦合性和内聚性是对模块独立性度量的两个标准。下列
3、叙述中正确的是_。 A.提高耦合性降低内聚性有利于提高模块的独立性 B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D.内聚性是指模块间互相连接的紧密程度(分数:2.00)A.B.C.D.8.数据库应用系统中的核心问题是_。 A.数据库设计 B.数据库系统设计 C.数据库维护 D.数据库管理员培训(分数:2.00)A.B.C.D.9.有两个关系 R、S 如下: RA B Ca 3 2b 0 1c 2 1SA Ba 3b 0c 2由关系 R通过运算得到关系 S,则所使用的运算为_。 A.选择 B.投影 C.插入 D.连接(分数:2.00)A
4、.B.C.D.10.将 E-R图转换为关系模式时,实体和联系都可以表示为_。 A.属性 B.键 C.关系 D.域(分数:2.00)A.B.C.D.11.以下叙述中错误的是_。 A.使用三种基本结构构成的程序只能解决简单问题 B.结构化程序由顺序、分支、循环三种基本结构组成 C.C语言是一种结构化程序设计语言 D.结构化程序设计提倡模块化的设计方法(分数:2.00)A.B.C.D.12.以下四个程序中,完全正确的是_。 A.#include stdio.h main(); /*/programming /*/ printf(“programming!/n“); B.#include stdio.
5、h main() /*programming */ printf(“programming!/n“); C.#include stdio.h main() /*/*programming */ */ printf(“programming!/n“); D.include stdio.h main() /*programming */ printf(“programming!/n“);(分数:2.00)A.B.C.D.13.C源程序中不能表示的数制是_。 A.十六进制 B.八进制 C.十进制 D.二进制(分数:2.00)A.B.C.D.14.以下选项中,能用作用户标识符的是_。 A._0_ B.
6、8_8 C.void D.unsigned(分数:2.00)A.B.C.D.15.若有定义语句:int x=10;,则表达式 x-=x+x的值为_。 A.0 B.-20 C.-10 D.10(分数:2.00)A.B.C.D.16.有以下程序:#include stdio.hmain() int a=1, b=0;printf(“%d,“, b=a+b);printf(“%d/n“, a=2*b);程序运行后的输出结果是_。 A.1,2 B.1,0 C.3,2 D.0,0(分数:2.00)A.B.C.D.17.有以下程序: #include stdio.h main() int a1, a2;
7、char c1, c2; scanf(“% d% c% d% c“, printf(“%d, %c, %d, %c“, a1, c1, a2, c2); 若想通过键盘输入,使得 a1的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是(以下 代表空格,CR代表回车)_。 A B (分数:2.00)A.B.C.D.18.若变量已正确定义,在 if(W) printf(“%d/n“, k);中,以下不可替代 W的是_。 A.ab+c B.ch=getchar() C.a=b+c D.a+(分数:2.00)A.B.C.D
8、.19.有以下程序段:#include stdio.hint a, b, c;a=10; b=50; c=30;if(ab) a=b, b=c; c=a;printf(“a=%d b=%d c=%d/n“, a, b, c);程序的输出结果是_。 A.a=10 b=50 c=30 B.a=10 b=50 c=10 C.a=10 b=30 c=10 D.a=50 b=30 c=50(分数:2.00)A.B.C.D.20.下列叙述中正确的是_。 A.在 switch语句中,不一定使用 break语句 B.在 switch语句中必须使用 default C.break语句必须与 switch语句中的
9、 case配对使用 D.break语句只能用于 switch语句(分数:2.00)A.B.C.D.21.以下不构成无限循环的语句或语句组是_。 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;(分数:2.00)A.B.C.D.22.有以下程序:#include stdio.hmain() int c=0, k;for(k=1; k3; k+)switch(k) default:c+=k;case 2:c+; break;case 4:c+=2; break;
10、printf(“% d/n“, c);程序运行后的输出结果是_。 A.7 B.5 C.3 D.9(分数:2.00)A.B.C.D.23.有以下程序:#include stdio.hint f(int x, int y) return(y-x)*x); main() int a=3, b=4, c=5, d;d=f(f(a, b), f(a, c);printf(“% d/n“, d);程序运行后的输出结果是_。 A.7 B.10 C.8 D.9(分数:2.00)A.B.C.D.24.若有定义语句:double a, *p=以下叙述中错误的是_。 A.定义语句中的*号是一个间址运算符 B.定义语
11、句中的*号是一个说明符 C.定义语句中的 p只能存放 double类型变量的地址 D.定义语句中,*p=执行了 px= py=之后,正确的输入语句是_。 A. seanf(“%lf%le“, px, py); B.seanf(“%f %f“ C.scanf(“%f %f“, x, y); D.scanf(“%lf %lf“, x, y);(分数:2.00)A.B.C.D.26.以下定义数组的语句中错误的是_。 A.int num3=1,2,3,4,5,6; B.int num24=1,2,3,4,5,6; C.int num=1,2,3,4,5,6; D.int num4=1,2,3,4,5,
12、6;(分数:2.00)A.B.C.D.27.有以下程序:#include stdio.hvoid fun(int a, int b) int t;t=a; a=b; b=t;main() int c10=1,2,3,4,5,6,7,8,9,0, i;for(i=0; i10; i+=2) fun(ci, ci+1);for(i=0; i10; i+) printf(“%d,“, ci);printf(“/n“);程序的运行结果是_。 A.1,2,3,4,5,6,7,8,9,0, B.2,1,4,3,6,5,8,7,0,9, C.0,9,8,7,6,5,4,3,2,1, D.0,1,2,3,4,
13、5,6,7,8,9,(分数:2.00)A.B.C.D.28.有以下程序:#include stdio.hmain() int x32=0, i;for(i=0; i3; i+) scanf(“%d“, xi);printf(“%3d%3d%3d/n“, x00, x01, x10);若运行时输入:2 4 6 回车,则输出结果为_。 A.2 0 4 B.2 0 0 C.2 4 0 D.2 4 6(分数:2.00)A.B.C.D.29.有以下程序段:#include stdio.hint j; float y; char name50;scanf(“%2d%f%s“, 当执行上述程序段,从键盘上输
14、入 55566 7777abc后,y 的值为_。 A.566.0 B.55566.0 C.7777.0 D.566777.0(分数:2.00)A.B.C.D.30.下列语句组中,正确的是_。 A.char *s; s=“Olympic“ ; B. char s7; s=“Olympic“; C.char *s; s=“Olympic“; D.char s7; s=“Olympic“;(分数:2.00)A.B.C.D.31.有以下函数:int fun(char *s) char *t=s;while(*t+);return(t-s);该函数的功能是_。 A.计算 s所指字符串的长度 B.比较两个
15、字符串的大小 C.计算 s所指字符串占用内存字节的个数 D.将 s所指字符串复制到字符串 t中(分数:2.00)A.B.C.D.32.有以下程序(注:字符 a的 ASCII码值为 97):#include stdio.hmain() char *s=“abc“;do printf(“%d“, *s%10); +s;while(*s);程序运行后的输出结果是_。 A.789 B.abc C.7890 D.979899(分数:2.00)A.B.C.D.33.设有如下函数定义:#include stdio.hint fun(int k) if(k1)return 0;else if(k=1 ) re
16、turn 1;else return fun(k-1)+1;若执行调用语句:n=fun(3);,则函数 fun总共被调用的次数是_。 A.2 B.3 C.4 D.5(分数:2.00)A.B.C.D.34.有以下程序:#include stdio.hint f(int n);main() int a=3, s; s=f(a); s=s+f(a); printf(“%d/n“, s);int f(int n) static int a =1;n+=a+;return n;程序运行后的输出结果是_。 A.9 B.8 C.7 D.10(分数:2.00)A.B.C.D.35.设有定义:struct co
17、mplex int real, unreal; data1=1,8, data2;则以下赋值语句中错误的是_。 A.data2=(2,6); B. data2=data1; C.data2.real=data1.real; D.data2.real=data1.unreal;(分数:2.00)A.B.C.D.36.有以下程序:#include stdio.hstruct Sint n; int a20;void f(struct S *p) int i, j, t;for(i=0; ip-n-1; i+)for(j=i+1; jp-n; j+)if(p-aip-aj) t=p-ai; p-ai
18、=p-aj; p-aj=t;main() int i; struct S s=10, 2,3,1,6,8,7,5,4,10,9;f(for(i=0; is.n; i+) printf(“%d,“, s.ai);程序运行后的输出结果是_。 A.2,3,1,6,8,7,5,4,10,9, B.10,9,8,7,6,5,4,3,2,1, C.1,2,3,4,5,6,7,8,9,10, D.10,9,8,7,6,1,2,3,4,5,(分数:2.00)A.B.C.D.37.有以下程序:#include stdio.h#include string.htypedef struct char name9;
19、char sex; int score2; STU;STU f(STU a) STU b=“Zhao“, m, 85, 90;int i;strcpy(a.name, b.name);a.sex=b.sex;for(i=0; i2; i+) a.scorei=b.scorei;return a;main() STU c= “Qian“, f, 95, 92 , d;d=f(c);printf(“%s, %c, %d, %d,“, d.name, d.sex, d.score0, d.score1);printf(“%s, %c, %d, %d/n“, c.name, c.sex, c.scor
20、e0, c.score1);程序运行后的输出结果是_。 A.Zhao, m, 85, 90, Qian, f, 95, 92 B.Zhao, m, 85, 90, Zhao, m, 85, 90 C.Qian, f, 95, 92, Qian, f, 95, 92 D.Qian, f, 95, 92, Zhao, m, 85, 90(分数:2.00)A.B.C.D.38.以下关于宏的叙述中正确的是_。 A.宏替换没有数据类型限制 B.宏定义必须位于源程序中所有语句之前 C.宏名必须用大写字母表示 D.宏调用比函数调用耗费时间(分数:2.00)A.B.C.D.39.设有以下语句:int a=1,
21、 b=2, c;c=a(b2);执行后,c 的值为_。 A.7 B.9 C.8 D.6(分数:2.00)A.B.C.D.40.有以下程序:#include stdio.hmain() FILE *fp; int a10=1,2,3, i, n;fp=fopen(“d1, dat“, “w“);for(i=0; i3; i+) fprintf(fp, “%d“, ai);fprintf(fp, “/n“);fclose (fp);fp=fopen(“d1.dat“, “r“);fscanf(fp, “%d“, fclose(fp);printf(“%d/n“, n);程序的运行结果是_。 A.3
22、21 B.12300 C.1 D.123(分数:2.00)A.B.C.D.二、程序填空题(总题数:1,分数:6.00)41.在给定程序中,函数 fum的功能是:统计形参 s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。 例如,若形参 s所指的字符串为“abcdef35adgh3kjsdf7”,则输出结果为 4。 请在下划线处填入正确内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行。也不得更改程序的结构! 试题程序: #include stdio.h void fun(char *s, int *t) int i, n;
23、n=0; /*found* / for(i=0; _! =0; i+) /*found* / if(si=0 /*found* / _; main() char s80=“abcdef35adgh3kjsdf7“; int t; printf(“/nThe original string is:% s/n“, s); fun(s, printf(“/nThe result is:% d/n“, t); (分数:6.00)填空项 1:_三、程序修改题(总题数:1,分数:6.00)42.下列给定程序中函数 fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。 例如,变量 a中的值原为
24、 8,b 中的值原为 3,程序运行后 a中的值为 3,b 中的值为 8。 请改正程序中的错误,使它得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include stdlib.h #include conio.h #include stdio.h int fun(int *x, int y) int t; /*found* / t=x; x=y; /*found* / return (y); void main() int a=3, b=8; system(“CLS“); printf(“% d % d/n“, a, b); b=fun( p
25、rintf(“% d % d/n“, a, b); (分数:6.00)_四、程序设计题(总题数:1,分数:8.00)43.编写函数 fun,其功能是:求出 11000 能被 7或 11整除,但不能同时被 7和 11整除的所有整数,并将其放在 a所指的数组中,通过 n返回这些数的个数。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数:fun 的花括号中填入你编写的若干语句。 试题程序: #include stdlib.h #include conio.h #include stdio.h void fun(int *a, int *n) void main()
26、 int aa1000, n, k; system(“CLS“); fun(aa, for(k=0; kn; k+) if(k+1)% 10=0) printf(“% 5d“, aak); printf(“/n“); /*一行写 9个数* / else printf(“% 5d“, aak); (分数:8.00)_二级 C语言-69 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.下列叙述中正确的是_。 A.栈是“先进先出”的线性表 B.队列是“先进后出”的线性表 C.循环队列是非线性结构 D.有序线性表既可以采用顺序存储结构,也可以采
27、用链式存储结构(分数:2.00)A.B.C.D. 解析:解析 栈是先进后出的线性表,所以 A错误;队列是先进先出的线性表,所以 B错误;循环队列是线性结构的线性表,所以 C错误。2.支持子程序调用的数据结构是_。 A.栈 B.树 C.队列 D.二叉树(分数:2.00)A. B.C.D.解析:解析 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为 A。3.某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是
28、_。 A.10 B.8 C.6 D.4(分数:2.00)A.B.C. D.解析:解析 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0的叶子结点总是比度为 2的结点多一个,所以本题中是 5+1=6个。4.下列排序方法中,最坏情况下比较次数最少的是_。 A.冒泡排序 B.简单选择排序 C.直接插入排序 D.堆排序(分数:2.00)A.B.C.D. 解析:解析 冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较 n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是 nlog2n。5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。 A.编
29、译程序 B.操作系统 C.教务管理系统 D.汇编程序(分数:2.00)A.B.C. D.解析:解析 编译程序、操作系统、汇编程序都属于系统软件,只有 C教务管理系统才是应用软件。6.下面叙述中错误的是_。 A.软件测试的目的是发现错误并改正错误 B.对被调试的程序进行“错误定位”是程序调试的必要步骤 C.程序调试通常也称为 Debug D.软件测试应严格执行测试计划,排除测试的随意性(分数:2.00)A. B.C.D.解析:解析 软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项 A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新
30、的错误。程序调试通常称为 Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。7.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_。 A.提高耦合性降低内聚性有利于提高模块的独立性 B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D.内聚性是指模块间互相连接的紧密程度(分数:2.00)A.B. C.D.解析:解析 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的
31、联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以 A错误,B 正确。耦合性是模块问互相连接的紧密程度的度量,内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以 C与 D错误。8.数据库应用系统中的核心问题是_。 A.数据库设计 B.数据库系统设计 C.数据库维护 D.数据库管理员培训(分数:2.00)A. B.C.D.解析:解析 数据库应用系统中的核心问题是数据库的设计。9.有两个关系 R、S 如下: RA B Ca 3 2b 0 1c 2 1SA Ba 3b 0c 2由关系 R通过运算得到关系
32、S,则所使用的运算为_。 A.选择 B.投影 C.插入 D.连接(分数:2.00)A.B. C.D.解析:解析 投影运算是指对于关系内的域指定可引入新的运算。本题中 S是在原有关系 R的内部进行的,是由 R中原有的那些域的列所组成的关系。所以选择 B。10.将 E-R图转换为关系模式时,实体和联系都可以表示为_。 A.属性 B.键 C.关系 D.域(分数:2.00)A.B.C. D.解析:解析 从 E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R 图中属性也可以转换成关系的属性。11.以下叙述中错误的是_。 A.使用三种基本结构构成的程序只能解决简单问题 B.结构化程序
33、由顺序、分支、循环三种基本结构组成 C.C语言是一种结构化程序设计语言 D.结构化程序设计提倡模块化的设计方法(分数:2.00)A. B.C.D.解析:解析 使用顺序、选择(分支)、循环 3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以 A错误。12.以下四个程序中,完全正确的是_。 A.#include stdio.h main(); /*/programming /*/ printf(“programming!/n“); B.#include stdio.h main() /*programming */ printf(“programming!/n“); C.#incl
34、ude stdio.h main() /*/*programming */ */ printf(“programming!/n“); D.include stdio.h main() /*programming */ printf(“programming!/n“);(分数:2.00)A.B. C.D.解析:解析 C 语言中注释语句的注释方法是:/*注释内容*/或/注释一行。所以 A与 C错误,D 选项中预编译命令 include stdio.h前丢掉了“#”号。所以选择 B。13.C源程序中不能表示的数制是_。 A.十六进制 B.八进制 C.十进制 D.二进制(分数:2.00)A.B.C.D
35、. 解析:解析 在 C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择 D。14.以下选项中,能用作用户标识符的是_。 A._0_ B.8_8 C.void D.unsigned(分数:2.00)A. B.C.D.解析:解析 C 语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B 中以数字 8开头,所以错误。C 与 D中用的是关键字 void与 unsigned,所以错误。15.若有定义语句:int x=10;,则表达式 x-=x+x的值为_。 A.0 B.-20 C.-10 D.10(分数:2.00)A.B.C. D
36、.解析:解析 算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式 x-=x+x可以表示成 x=x-(x+x)=10-(10+10)=-10,选择 C。16.有以下程序:#include stdio.hmain() int a=1, b=0;printf(“%d,“, b=a+b);printf(“%d/n“, a=2*b);程序运行后的输出结果是_。 A.1,2 B.1,0 C.3,2 D.0,0(分数:2.00)A. B.C.D.解析:解析 首先打印 b=a+b=1+0=1的值 1,此时已给 b赋值为 1。然后打印 a=2*b=2*1=2的值 2。所以结果是 1,2。17.
37、有以下程序: #include stdio.h main() int a1, a2; char c1, c2; scanf(“% d% c% d% c“, printf(“%d, %c, %d, %c“, a1, c1, a2, c2); 若想通过键盘输入,使得 a1的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是(以下 代表空格,CR代表回车)_。 A B (分数:2.00)A.B.C.D. 解析:解析 在输入多个数据时,若格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。所以应按选项 D的顺序输
38、入数据。18.若变量已正确定义,在 if(W) printf(“%d/n“, k);中,以下不可替代 W的是_。 A.ab+c B.ch=getchar() C.a=b+c D.a+(分数:2.00)A. B.C.D.解析:解析 选项 A是非法的表达式,C 语言中没有运算符。19.有以下程序段:#include stdio.hint a, b, c;a=10; b=50; c=30;if(ab) a=b, b=c; c=a;printf(“a=%d b=%d c=%d/n“, a, b, c);程序的输出结果是_。 A.a=10 b=50 c=30 B.a=10 b=50 c=10 C.a=1
39、0 b=30 c=10 D.a=50 b=30 c=50(分数:2.00)A.B. C.D.解析:解析 本题中 ab 的条件不满足,所以不执行逗号表达式 a=b, b=c;的操作,而是执行 c=a操作,即 c的值为 10。20.下列叙述中正确的是_。 A.在 switch语句中,不一定使用 break语句 B.在 switch语句中必须使用 default C.break语句必须与 switch语句中的 case配对使用 D.break语句只能用于 switch语句(分数:2.00)A. B.C.D.解析:解析 default 语句在 switch语句中可以省略,所以 B错误;switch 语
40、句中并非每个 case后都需要使用 break语句,所以 C错误;break 语句还可以用于 for等循环结构中,所以 D错误。21.以下不构成无限循环的语句或语句组是_。 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;(分数:2.00)A. B.C.D.解析:解析 选项 A中 do后面的语句只执行了一次便结束了循环;B 选项中条件 while(1)永远成立,所以是死循环;C 选项中 n的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死
41、循环;D 选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。22.有以下程序:#include stdio.hmain() int c=0, k;for(k=1; k3; k+)switch(k) default:c+=k;case 2:c+; break;case 4:c+=2; break;printf(“% d/n“, c);程序运行后的输出结果是_。 A.7 B.5 C.3 D.9(分数:2.00)A.B.C. D.解析:解析 向 switch语句块传送参数后,编译器会先寻找匹配的 case语句块,找到后就执行该语句块,遇到 break跳出;如果没有匹配的语句块,则执行
42、default语句块。case 与 default没有顺序之分。所以第一次循环 k的值为 1,执行 c+=k,c 的值为 1,再执行 case 2后的语句 c+,c 的值为 2,遇到break语句跳出循环;第二次循环 k的值为 2,执行 case 2后而的语句 c+,c 的值为 3,跳出循环。23.有以下程序:#include stdio.hint f(int x, int y) return(y-x)*x); main() int a=3, b=4, c=5, d;d=f(f(a, b), f(a, c);printf(“% d/n“, d);程序运行后的输出结果是_。 A.7 B.10 C
43、.8 D.9(分数:2.00)A.B.C.D. 解析:解析 调用 f(a, b)函数返回 3,调用 f(a, c)函数返回 6,所以外层调用 f(f(a, b), f(a, c);即调用 f(3, 6)函数返回 9。24.若有定义语句:double a, *p=以下叙述中错误的是_。 A.定义语句中的*号是一个间址运算符 B.定义语句中的*号是一个说明符 C.定义语句中的 p只能存放 double类型变量的地址 D.定义语句中,*p=中,*号是一个指针运算符,而非间址运算符,所以 A错误。25.若有定义语句:double x, y, *px, *py;执行了 px= py=之后,正确的输入语句
44、是_。 A. seanf(“%lf%le“, px, py); B.seanf(“%f %f“ C.scanf(“%f %f“, x, y); D.scanf(“%lf %lf“, x, y);(分数:2.00)A. B.C.D.解析:解析 因为 x, y都是 double型数据,所以输入时的格式字符应为%lf,所以 B与 C错误。D 选项中 scanf(“%lf %lf“, x, y);应为 scanf(“%lf %lf, 。26.以下定义数组的语句中错误的是_。 A.int num3=1,2,3,4,5,6; B.int num24=1,2,3,4,5,6; C.int num=1,2,3,4,5,6; D.int num4=1,2,3,4,5,6;(分数:2.00)A.B. C.D.解析:解析 B 选项中定义的数组为 2行 4列,而赋值时赋成了 3行所以出错。27.有以下程序:#include s