1、二级 C 语言-73 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.下列叙述中正确的是_。 A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D.线性表的链式存储结构所需要的存储空间与顺序存储结构没有任何关系(分数:1.00)A.B.C.D.2.下列叙述中正确的是_。 A.栈是一种先进先出的线性表 B.队列是一种后进先出的线性表 C.栈与队列都是非线性结构 D.以上三种说法都不对(分数:1.0
2、0)A.B.C.D.3.软件测试的目的是_。 A.评估软件可靠性 B.发现并改正程序中的错误 C.改正程序中的错误 D.发现程序中的错误(分数:1.00)A.B.C.D.4.在软件开发中,需求分析阶段产生的主要文档是_。 A.软件集成测试计划 B.软件详细设计说明书 C.用户手册 D.软件需求规格说明书(分数:1.00)A.B.C.D.5.软件生命周期是指_。 A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件从需求分析、设计、实现到测试完成的过程 C.软件的开发过程 D.软件的运行维护过程(分数:1.00)A.B.C.D.6.面向对象方法中,继承是指_。 A.一组对象所具有的相
3、似性质 B.一个对象具有另一个对象的性质 C.各对象之间的共同性质 D.类之间共享属性和操作的机制(分数:1.00)A.B.C.D.7.层次型、网状型和关系型数据库的划分原则是_。 A.记录长度 B.文件的大小 C.联系的复杂程度 D.数据之间的联系方式(分数:1.00)A.B.C.D.8.一名工作人员可以使用多台计算机,而一台计算机可被多名工作人员使用,则实体工作人员与实体计算机之间的联系是_。 A.一对一 B.一对多 C.多对多 D.多对一(分数:1.00)A.B.C.D.9.数据库设计中反映用户对数据要求的模式是_。 A.内模式 B.概念模式 C.外模式 D.设计模式(分数:1.00)A
4、.B.C.D.10.有三个关系 R、S 和 T 如下: RA B Ca 1 2b 2 1c 3 1SA B Ca 1 2b 2 1TA B Cc 3 1则由关系 R 和 S 得到关系 T 的操作是_。 A.自然连接 B.差 C.交 D.并(分数:1.00)A.B.C.D.11.计算机能直接执行的程序是_。 A.可执行程序 B.目标程序 C.汇编程序 D.源程序(分数:1.00)A.B.C.D.12.以下叙述中正确的是_。 A.C 语言规定必须用 main 作为主函数名,程序将从此开始执行 B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C.C 语言程序将从源程序中第一个函
5、数开始执行 D.main 的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main 等(分数:1.00)A.B.C.D.13.以下选项中可用作 C 程序合法实数的是_。 A.3.0e0.2 B1e0 C.E9 D.9.12E(分数:1.00)A.B.C.D.14.下列定义变量的语句中错误的是_。 A.float US$; B.double int_; C.char For; D.int_int;(分数:1.00)A.B.C.D.15.表达式“(int)(double)9/2)-9%2”的值是_。 A.4 B.0 C.3 D.5(分数:1.00)A.B.C.D.16.设变量均已正确定义,若
6、要通过“scanf(“%d%c%d%c“,”语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是_(代表空格字符)。 A.10X 20Y B.10 X 20 Y C.10 X 20 Y D.10 X 20 Y(分数:1.00)A.B.C.D.17.以下选项中不能作为 C 语言合法常量的是_。 A.cd B.0.1e+6 C.“/a“ D./011(分数:1.00)A.B.C.D.18.if 语句的基本形式是“if(表达式)语句”,以下关于“表达式”值的叙述中正确的是_。 A.必须是正数 B.必须是整数值 C.可以是任意合法
7、的数值 D.必须是逻辑值(分数:1.00)A.B.C.D.19.有如下嵌套的 if 语句if(ab)if(ac) k=a;else k=c;elseif(bc) k=b;else k=c;以下选项中与上述 if 语句等价的语句是_。 A.k=(ab)?(ac)?a:c):(bc)?b:c); B.k=(ab)?(bc)?a:b):(bc)?b:c); C.k=(ab)?a:b;k=(bc)?b:c; D.k=(ab)?a:b;k=(ac)?a:c;(分数:1.00)A.B.C.D.20.有以下程序#include stdio.hmain() int k=5;while(-k) printf(“
8、%d“,k-=3);printf(“/n“);执行后的输出结果是_。 A.死循环 B.2 C.4 D.1(分数:1.00)A.B.C.D.21.有以下程序#include stdio.hmain() int i,j;for(i=3;i=1:i-)(for(j=1;j=2;j+) pfintf(“%d“,i+j);printf(“/n“);程序的运行结果是_。 A.2 33 42 3 B.4 32 54 3 C.2 33 44 5 D.4 53 52 3(分数:1.00)A.B.C.D.22.有以下程序#include stdio.hmain() int k=5,n=0;do switch(k)
9、 case 1: case 3:n+=1;k-;break;default:n=0;k-;case 2: case 4:n+=2;k-;break;printf(“%d“,n);while(k0 程序运行后的输出结果是_。 A.235 B.0235 C.02356 D.2356(分数:1.00)A.B.C.D.23.有以下程序#include stdio.hint fun1(double a)return(int)(a*=a);int fun2(double x,double y)double a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);main(
10、)double w;w=fun2(1.1,2.0);printf(“%4.2f“,w);程序执行后输出结果是_。 A.5 B.5.00 C.5.21 D.0.0(分数:1.00)A.B.C.D.24.设有定义语句int(*f)(int);则以下叙述正确的是_。 A.f 是指向函数的指针变量,该函数具有一个 int 类型的形参 B.f 是基类型为 int 的指针变量 C.f 是指向 int 类型一维数组的指针变量 D.f 是函数名,该函数的返回值是基类型为 int 类型的地址(分数:1.00)A.B.C.D.25.有以下程序#include stdio.hvoid fun(int*a,int*b
11、) int*c;c=a;a=b;b=c;main() int x=3,y=5,*p=fun(p,q); printf(“%d,%d,“,*p,*q);fun( printf(“%d,%d/n“,*p,*q);程序运行后的输出结果是_。 A.5,3,3,5 B.3,5,5,3 C.3,5,3,5 D.5,3,5,3(分数:1.00)A.B.C.D.26.若有定义:int w35;则以下不能正确表示该数组元素的表达式是_。 A.*(w+1)4 B.*(*w+3) C.*(*(w+1) D.*(for(i=2;i6;i+) bi*=2;main() int at10=1,2,3,4,5,6,7,8,
12、9,10,i;f(a);for(i=0;i10;i+) printf(“%d,“,ai);程序运行后的输出结果是_。 A.1,2,6,8,10,12,7,8,9,10, B.1,2,3,4,5,6,7,8,9,10, C.1,2,3,4,10,12,14,16,9,10, D.1,2,6,8,10,12,14,16,9,10,(分数:1.00)A.B.C.D.28.有以下程序#include stdio.hint fun(char s) int n=0;while(*s=9s+;return(n);main() char s10=6,1,*,4,*,9,*,0,*;printf(“%d/n“,
13、fun(s);程序的运行结果是_。 A.61490 B.61 C.9 D.5(分数:1.00)A.B.C.D.29.以下选项中正确的语句组是_。 A.char *s;s=“BOOK!“; B.char*s;s=“BOOK!“); C.char s10;s=“BOOK!“; D.char s;s=“BOOK!“;(分数:1.00)A.B.C.D.30.若有定义语句:char *s1=“OK“,*s2=“OK“;以下选项中,能够输出“OK”的语句是_。 A.if(strcmp(s1,s2)=0) puts(s1); B.if(strcmp(s1,s2)!=0) puts(s2); C.if(str
14、cmp(s1,s2)=1) puts(s1); D.if(strcmp(s1,s2)!=0) puts(s1);(分数:1.00)A.B.C.D.31.有以下程序#include stdio.hvoid fun(char *P)+p;printf(“%s/n“,*p);main()char *a=“Morning“,“Afternoon“,“Evening“,“Night“;fun(a);程序的运行结果是_。 A.Afternoon B.fternoon C.Morning D.orning(分数:1.00)A.B.C.D.32.有以下程序,程序中库函数“islower (ch)”用以判断 c
15、h 中的字母是否为小写字母#include stdio.h#include ctype.hvoid fun(char *P)int i=0;while(pi)if(pi=i+;main()char s1100=“ab cd EFG!“;fun(s1);printf(“%s/n“,s1);程序运行后的输出结果是_。 A.ab cd EFG ! B.Ab Cd EFg ! C.aB cD EFG ! D.ab cd EFg !(分数:1.00)A.B.C.D.33.有以下程序#include stdio.hint f(int x)int y;if(x=0x=1) return(3);y=x*x-f
16、(x-2);return y;main()int z;z=f(3);printf(“%d/n“,z);程序的运行结果是_。 A.6 B.9 C.0 D.8(分数:1.00)A.B.C.D.34.有以下程序#include stdio.hint fun(int x,int n)static int sum=0,i;for(i=0;in;i+) sum+=xi;return sum;main()int a=1,2,3,4,5,b=6,7,8,9,s=0;s=fun(a,5)+fun(b,4);printf(“%d/n“,s);程序执行后的输出结果是_。 A.50 B.60 C.45 D.55(分数
17、:1.00)A.B.C.D.35.有以下结构体说明、变量定义和赋值语句struct STD char name10;int age;char sex; s5,*ps;ps=则以下 scanf 函数调用语句有错误的是_。 A.scantf(“%s“, s0.name); B.scanf(“%d“, C.scanf(“%c“, D.scanf(“%d“, ps-age);(分数:1.00)A.B.C.D.36.若有以下语句typedef struct S int g; char h; T;以下叙述中正确的是_。 A.可用 T 定义结构体变量 B.可用 S 定义结构体变量 C.S 是 struct
18、类型的变量 D.T 是 struct S 类型的变量(分数:1.00)A.B.C.D.37.有以下程序#include stdio.h#include string.hstruct Aint a;char b10;double c;struct A f(struct A t);main()struct A a=1001,“ZhangDa“,1098.0;a=f(a);printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c);struct A f(struct A t)t.a=1002;strcpy(t.b,“ChangRong“);t.c=1202.0;return t;程序运行
19、后的输出结果是_。 A.1002,ZhangDa,1202.0 B.1002,ChangRong,1202.0 C.1001,ChangRong,1098.0 D.1001,ZhangDa,1098.0(分数:1.00)A.B.C.D.38.设有宏定义:#define IsDIV(k,n) (k%n=1)?1:0)且变量 m 已正确定义并赋值,则宏调用:IsDIV(m,5) x=(ab)printf(“%d/n“,x);程序的运行结果是_。 A.2 B.1 C.3 D.0(分数:1.00)A.B.C.D.40.有以下程序#include stdio.hmain()FILE *fp;int k,
20、n,a6=1,2,3,4,5,6;fp=fopen(“d2.dat“,“w“);fprintf(fp,“%d%d%d/n“,a0,a1,a2);fprintf(fp,“%d%d%d/n“,a3,a4,a5);fclose(fp);fp=fopen(“d2.dat“,“r“);fscanf(fp,“%d%d“,printf(“%d%d/n“,k,n);fclose(fp);程序运行后的输出结果是_。 A.123 456 B.1 4 C.123 4 D.1 2(分数:1.00)A.B.C.D.二、B程序填空题/B(总题数:1,分数:20.00)41.给定程序中,函数 fun 的功能是:将形参 n
21、所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。 例如,输入一个数 27638496,新的数为 739。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include stdio.h void fun(unsigned long *n) unsigned long x=0,i; int t; i=1: while(*n) /*found*/ t=*n%U U /U /U; /*found*/ if(
22、t%2!=U U /U /U x=x+t*i;i=i*10; *n=*n/10; /*found*/ *n=U U /U /U; main() unsigned long n=-1; while(n99999999n0) printf(“Please input(0n100000000):“); scanf(“%ld“, fun( printf(“/nThe result is:%ld/n“,n); (分数:20.00)填空项 1:_三、程序改错题(总题数:1,分数:20.00)42.给定程序 MODI1.C 中函数 fun 的功能是计算“n!”。 例如,n 为 5,则输出 120.00000
23、0。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include stdio.h double fun(int n) double result=1.0; /*found*/ if n=0 return 1.0; while(n1 main() int n; printf(“Input N:“); scanf(“%d“, printf(“/n/n%d!=%lf/n/n“,n,fun(n); (分数:20.00)_四、程序设计题(总题数:1,分数:20.00)43.请编写一个函数 fun,它的功能是:将一个
24、表示正整数的数字字符串转换为一个整数(不得调用 C 语言提供的将字符串转换为整数的函数)。例如,若输入字符串“1234”,则函数把它转换为整数值 1234。函数 fun 中给出的语句仅供参考。 注意:部分源程序存在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入需要编写的若干语句。 给定源程序: #include stdio.h #include string.h long fun(char *p) /*以下代码仅供参考*/ int i,len;/*len为串长*/ long x=0; len=strlen(p); /*以下完成数字
25、字符串转换为一个数字。注意:字符0不是数字0*/ return x; main() /*主函数*/ char s6; long n; printf(“Enter a string:/n“); gets(s); n=fun(s); printf(“%ld/n“,n); (分数:20.00)_二级 C 语言-73 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.下列叙述中正确的是_。 A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C.线性表的链式存储结构所需要
26、的存储空间一般要少于顺序存储结构 D.线性表的链式存储结构所需要的存储空间与顺序存储结构没有任何关系(分数:1.00)A.B. C.D.解析:解析 线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,因此一般要多于顺序存储结构,选项 B 正确。2.下列叙述中正确的是_。 A.栈是一种先进先出的线性表 B.队列是一种后进先出的线性表 C.栈与队列都是非线性结构 D.以上三种说法都不对(分数:1.00)A.B.C.D. 解析:解析 栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构,因此本题答案为 D。3.软件测试的目的是_。 A.评估软件可靠性 B.发
27、现并改正程序中的错误 C.改正程序中的错误 D.发现程序中的错误(分数:1.00)A.B.C.D. 解析:解析 软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为 D。4.在软件开发中,需求分析阶段产生的主要文档是_。 A.软件集成测试计划 B.软件详细设计说明书 C.用户手册 D.软件需求规格说明书(分数:1.00)A.B.C.D. 解析:解析 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面,因此本题答案为 D。5.软件生命周期是指_。 A.软件产品从提出、实现、使
28、用维护到停止使用退役的过程 B.软件从需求分析、设计、实现到测试完成的过程 C.软件的开发过程 D.软件的运行维护过程(分数:1.00)A. B.C.D.解析:解析 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期,因此本题答案为 A。6.面向对象方法中,继承是指_。 A.一组对象所具有的相似性质 B.一个对象具有另一个对象的性质 C.各对象之间的共同性质 D.类之间共享属性和操作的机制(分数:1.00)A.B.C.D. 解析:解析 继承是面向对象的方法的一个主要特征,是使用已有
29、的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,因此继承是指类之间共享属性和操作的机制,选项 D 正确。7.层次型、网状型和关系型数据库的划分原则是_。 A.记录长度 B.文件的大小 C.联系的复杂程度 D.数据之间的联系方式(分数:1.00)A.B.C.D. 解析:解析 层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,因此三种数据库的划分原则是数据之间的联系方式,选项 D 正确。8.一名工作人员可以使用多台计算机,而一台计算机可被多名工作人员使用,则实体工作人员与实体计算机之间的联系是_
30、。 A.一对一 B.一对多 C.多对多 D.多对一(分数:1.00)A.B.C. D.解析:解析 因为一名工作人员可以操作多台计算机,而一台计算机又可以被多名工作人员使用,所以两个实体之间是多对多的关系,选择 C。9.数据库设计中反映用户对数据要求的模式是_。 A.内模式 B.概念模式 C.外模式 D.设计模式(分数:1.00)A.B.C. D.解析:解析 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,因此选择 C。内模式又称物理模式,它给出了
31、数据库物理存储结构与物理存取的方法。10.有三个关系 R、S 和 T 如下: RA B Ca 1 2b 2 1c 3 1SA B Ca 1 2b 2 1TA B Cc 3 1则由关系 R 和 S 得到关系 T 的操作是_。 A.自然连接 B.差 C.交 D.并(分数:1.00)A.B. C.D.解析:解析 关系 T 中的元组是 R 关系中有而 S 关系中没有的元组的集合,因此进行的是差的运算,答案为 B。11.计算机能直接执行的程序是_。 A.可执行程序 B.目标程序 C.汇编程序 D.源程序(分数:1.00)A. B.C.D.解析:解析 计算机能直接执行的程序是二进制的可执行程序,其他的不能
32、直接执行。12.以下叙述中正确的是_。 A.C 语言规定必须用 main 作为主函数名,程序将从此开始执行 B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C.C 语言程序将从源程序中第一个函数开始执行 D.main 的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main 等(分数:1.00)A. B.C.D.解析:解析 用户不能指定某函数为主函数,函数从 main 函数开始执行,C 语言函数名区别大小写,所以 B、C、D 错误。13.以下选项中可用作 C 程序合法实数的是_。 A.3.0e0.2 B1e0 C.E9 D.9.12E(分数:1.00)A.B. C.
33、D.解析:解析 e 前 e 后有数字,e 后数值为整数,所以 A、C、D 错误。14.下列定义变量的语句中错误的是_。 A.float US$; B.double int_; C.char For; D.int_int;(分数:1.00)A. B.C.D.解析:解析 变量命名规范:由字母、数字、下划线组成,且数字不作为开头。所以 A 错误。15.表达式“(int)(double)9/2)-9%2”的值是_。 A.4 B.0 C.3 D.5(分数:1.00)A.B.C. D.解析:解析 (int)(double)9/2)值为 4,9%2 值为 1,相减值为 3。16.设变量均已正确定义,若要通过
34、“scanf(“%d%c%d%c“,”语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是_(代表空格字符)。 A.10X 20Y B.10 X 20 Y C.10 X 20 Y D.10 X 20 Y(分数:1.00)A. B.C.D.解析:解析 本题考查的知识点是数据输入。scanf 函数是 C 语言提供的标准输入函数,作用是接收在终端设备(或系统隐含指定的输入设备)上输入的数据。scanf()函数的一般形式为:scanf(格式控制,输入项表);本题中的格式控制字符串是“%d%c%d%c”,其中%d 表示要输入的是整数
35、;%c 则表示输入的是字符,且各控制符之间无任何分隔字符,故要求输入的数据之间也不能分开(若要求连续输入的都是数据类型,则必须以空格等空白字符分隔每个数据,因为系统不知道应该如何去分隔这一系列数据)。而选项B、C、D 在 10 和 X 之间均插入空格,所以不正确。17.以下选项中不能作为 C 语言合法常量的是_。 A.cd B.0.1e+6 C.“/a“ D./011(分数:1.00)A. B.C.D.解析:解析 本题考查的是 C 语言的常量。0.1e+6 是实型常量的指数形式,代表 0.110 的 6 次方,所以选项 B 是合法的;“a”是合法的字符串常量,a 是一个非打印的转义字符表示响铃
36、,所以选项 C 是合法的;011 是一个字符常量,011 是一个用 3 位八进制表示的转义字符,所以选项 D 也是合法的。在 C 语言中,字符常量是用单引号括起来的一个字符,选项 A 中的 cd 包含了 2 个字符,所以是不正确的。18.if 语句的基本形式是“if(表达式)语句”,以下关于“表达式”值的叙述中正确的是_。 A.必须是正数 B.必须是整数值 C.可以是任意合法的数值 D.必须是逻辑值(分数:1.00)A.B.C. D.解析:解析 “表达式”的值类型可以是合法的数值,但是都分为两类,0 是假,非 0 是真。19.有如下嵌套的 if 语句if(ab)if(ac) k=a;else
37、k=c;elseif(bc) k=b;else k=c;以下选项中与上述 if 语句等价的语句是_。 A.k=(ab)?(ac)?a:c):(bc)?b:c); B.k=(ab)?(bc)?a:b):(bc)?b:c); C.k=(ab)?a:b;k=(bc)?b:c; D.k=(ab)?a:b;k=(ac)?a:c;(分数:1.00)A. B.C.D.解析:解析 if else 语句和“?:”可以互换,?前语句相当于 if 后括号内容,?后语句相当于 if 后的执行语句,冒号后语句相当于 else 后语句,综合以上可以看出 A 符合题意。20.有以下程序#include stdio.hmai
38、n() int k=5;while(-k) printf(“%d“,k-=3);printf(“/n“);执行后的输出结果是_。 A.死循环 B.2 C.4 D.1(分数:1.00)A.B.C.D. 解析:解析 判断循环条件-k,k 值为 4,条件为真,执行输出语句,其中 k-=3 执行后,k 为 1,即输出为 1,然后判断循环条件-k,值为 0,为假,循环结束。答案选择 D。21.有以下程序#include stdio.hmain() int i,j;for(i=3;i=1:i-)(for(j=1;j=2;j+) pfintf(“%d“,i+j);printf(“/n“);程序的运行结果是_
39、。 A.2 33 42 3 B.4 32 54 3 C.2 33 44 5 D.4 53 52 3(分数:1.00)A.B.C.D. 解析:解析 第一次循环 i 值为 3,j 值分别为 1 和 2,所以输出为 4 和 5;第二次循环 i 值为 2,j 值分别为 1 和 2,所以输出为 3 和 4;第三次循环 i 值为 1,j 值分别为 1 和 2,所以输出为 2 和 3,答案选择D。22.有以下程序#include stdio.hmain() int k=5,n=0;do switch(k) case 1: case 3:n+=1;k-;break;default:n=0;k-;case 2:
40、 case 4:n+=2;k-;break;printf(“%d“,n);while(k0 程序运行后的输出结果是_。 A.235 B.0235 C.02356 D.2356(分数:1.00)A. B.C.D.解析:解析 第一次循环 k 为 5,执行“n=0;k-;”和“n+=2;k-;break;”输出 n 为 2,k 的值为 3,第二次循环 k 为 5,执行“n+=1;k-;break;”输出 n 为 3,k 的值为 2,第二次循环 k 为 5,执行“n+=2;k-;break;”,输出 n 为 5,k 的值为 1,循环条件不成立,所以输出 235,答案选择 A。23.有以下程序#incl
41、ude stdio.hint fun1(double a)return(int)(a*=a);int fun2(double x,double y)double a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);main()double w;w=fun2(1.1,2.0);printf(“%4.2f“,w);程序执行后输出结果是_。 A.5 B.5.00 C.5.21 D.0.0(分数:1.00)A.B. C.D.解析:解析 fun2 中 a=fun1(x),返回 1,b=fun1(y);返回值为 4,所以 fun2 函数返回 5,按格式输出后为 5.0
42、0,所以答案选择 B。24.设有定义语句int(*f)(int);则以下叙述正确的是_。 A.f 是指向函数的指针变量,该函数具有一个 int 类型的形参 B.f 是基类型为 int 的指针变量 C.f 是指向 int 类型一维数组的指针变量 D.f 是函数名,该函数的返回值是基类型为 int 类型的地址(分数:1.00)A. B.C.D.解析:解析 f 是指向函数的指针,所以 B、C、D 选项错误,答案选择 A。25.有以下程序#include stdio.hvoid fun(int*a,int*b) int*c;c=a;a=b;b=c;main() int x=3,y=5,*p=fun(p
43、,q); printf(“%d,%d,“,*p,*q);fun( printf(“%d,%d/n“,*p,*q);程序运行后的输出结果是_。 A.5,3,3,5 B.3,5,5,3 C.3,5,3,5 D.5,3,5,3(分数:1.00)A.B.C. D.解析:解析 f 函数交换局部变量 a 和 b 指针变量里的值,main 调用并不改变参数的值,所以答案选择C。26.若有定义:int w35;则以下不能正确表示该数组元素的表达式是_。 A.*(w+1)4 B.*(*w+3) C.*(*(w+1) D.*(for(i=2;i6;i+) bi*=2;main() int at10=1,2,3,4
44、,5,6,7,8,9,10,i;f(a);for(i=0;i10;i+) printf(“%d,“,ai);程序运行后的输出结果是_。 A.1,2,6,8,10,12,7,8,9,10, B.1,2,3,4,5,6,7,8,9,10, C.1,2,3,4,10,12,14,16,9,10, D.1,2,6,8,10,12,14,16,9,10,(分数:1.00)A. B.C.D.解析:解析 本题主要考查的是:数组名用作函数参数。数组名用作函数参数的情况类似于指针,属于传地址,故对形参数组元素的修改会同时修改实参。本题中,f()函数通过一个 for 循环语句,将传入数组的元素从下标 2 到下标 5 每个各自乘以 2。因此,调用结束时,数组 a 中的内容为1,2,6,8,10,12,7,8,9,10,故本题应该选择 A。28.有以下程序#include stdio.hint fun(char s)