1、二级 C语言笔试-479 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:40,分数:66.00)1.下列数据结构中,能用二分法进行查找的是_。(A) 顺序存储的有序线性表(B) 线性链表(C) 二叉链表(D) 有序线性链表(分数:2.00)A.B.C.D.2.算法的空间复杂度是指( )。A) 算法程序的长度 B) 算法程序中的指令条数C) 算法程序所占的存储空间 D) 算法执行过程中所需要的存储空间(分数:2.00)A.B.C.D.3.下列叙述中正确的是_。A) 一个逻辑数据结构只能有一种存储结构B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构C) 一个逻辑数
2、据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D) 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(分数:2.00)A.B.C.D.4.下列描述中正确的是 _。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) 外模式 D) 概念
3、模式(分数:2.00)A.B.C.D.7.下列叙述中正确的是A) 数据的逻辑结构与存储结构必定是一一对应的B) 由于计算机存储空间是向量式的存储结构,因此数据的存储结构一定是线性结构C) 程序设计语言中的数据一般是顺序存储结构,因此利用数组只能处理线性结构D) 以上 3种说法都不对(分数:2.00)A.B.C.D.8.数据库管理系统中负责数据模式定义的语言是A) 数据定义语言 B) 数据管理语言C) 数据操纵语言 D) 数据控制语言(分数:2.00)A.B.C.D.9.下列对于软件测试的描述中正确的是A) 软件测试的目的是证明程序是否正确B) 软件测试的目的是使程序运行结果正确C) 软件测试的
4、目的是尽可能多地发现程序中的错误D) 软件测试的目的是使程序符合结构化原则(分数:2.00)A.B.C.D.10.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。 A) 软件矛盾 B) 软件危机 C) 软件藕合 D) 软件产生(分数:2.00)A.B.C.D.11.下列不属于软件工程的 3个要素的是( )。A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D.12.将 E-R图转换到关系模式时,实体与联系都可以表示成A) 属性 B) 关系 C) 键 D) 域(分数:2.00)A.B.C.D.13.一个关系中属性个数为 1时,称此关系为A) 对应
5、关系 B) 单一关系 C) 一元关系 D) 二元关系(分数:1.00)A.B.C.D.14.请选出可用作 C语言用户标识符的是A) void,define,WORD B) a3_b3,_123,IF C) FOR,-abc,Case D) 2a,Do,Sizeof(分数:1.00)A.B.C.D.15.有以下程序_。Main()int x,y,z;x=y=1;z=x+,y+,+y;printf(“%d,%d,%d/n“,x,y,z);程序运行后的输出结果是_。(A) 2,3,3(B) 2,3,2(C) 2,3,1(D) 2,2,1(分数:1.00)A.B.C.D.16.执行下列程序段后,变量
6、a,b,c的值分别是( )。int x=5,y=4;int a,b,c;a=(-x=y+)?x:+y;b=+x;c=y;A) a=5,b=5,c=5 B) a=4,b=5,c=5C) a=5,b=6,c=5 D) a=1,b=5,c=6(分数:2.00)A.B.C.D.17.以下不能正确计算代数式 sin2( (分数:1.00)A.B.C.D.18.若 a是数值类型,则逻辑表达式(a=1)|(a!=1)的值是( )。A1 B0C2 D不知道 a的值,不能确定(分数:1.00)A.B.C.D.19.有以下程序:main()int y=1,x=2,z=3;printf(“%d,%d/n“,(+x,
7、y+),z+2);执行后的输出结果是( )。A) 3,5 B) 2,5 C) 3,3 D) 1,5(分数:1.00)A.B.C.D.20.若 ch为 char型变量,k 为 int型变量(已知字符 a的 ASCII码是 97),则执行下列语句后输出的结果为( )。ch=b;k=10;printf(“%x,%o,“,ch,ch,k);printf(“k=%d/n“,k);A) 因变量类型与格式描述符的类型不匹配,输出无定值B) 输出项与格式描述符个数不符,输出为 0值或不定值C) 62,142,k=%dD) 62,142,k=%10(分数:2.00)A.B.C.D.21.设有定义:int k=1
8、,m=2;float f=7;则下列选项中错误的表达式是( )。A) k=k=k B) -k+ C) k%int(f) D) k=f=m(分数:1.00)A.B.C.D.22.有以下程序:#includestdio.hvoid fun(char *a,char*b)while(*a=*)a+;while(*b=*a)b+;a+;main()char*s=“*a*b*“,t80;fun(s,t);puts(t);程序的运行结果是_。A) *a*b B) a*b C) a*b* D) ab(分数:2.00)A.B.C.D.23.已有定义 int a=3;和输出语句 printf(“%8x“,a);
9、以下正确的叙述是( )。 A) 整型变量的输出格式符只有%d 一种 B) %x是格式符的一种,它可以适用于任何一种类犁的数据 C) %x是格式符的一种,其变量的值按十六进制数输出,但%08x 是错误的 D) %8x是正确的格式符,其中数字 8规定了输出字段的宽度(分数:1.00)A.B.C.D.24.以下程序段中的变量已正确定义for(=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“)程序段的输出结果是_。A) * B) * C) * D) *(分数:2.00)A.B.C.D.25.下列程序执行后的输出结果是( )。main()char x=0xFFFF;printf
10、(“%d/n“,x-);A-32767 BFFFEC-1 D-32768(分数:1.00)A.B.C.D.26.有下列函数定义:int fun(double a,double b)return a*b;若下列选项中所用变量都已正确定义并赋值,错误的函数调用是( )。A) if(fun(x,y) B) z=fun(fun(x,y),fun(x,y);C) z=fun(fun(x,y)x,y); D) fun(x,y);(分数:2.00)A.B.C.D.27.有以下程序:main()int i=0, s=0;doif(i % 2)i+; continue;i+;s+=i;while(i7);pri
11、ntf(“% d/n“, s);执行后的输出结果是_。A) 16 B) 12 C) 28 D) 21(分数:2.00)A.B.C.D.28.下列程序的输出结果是( )。#includestdio.hint fun(int x)int a;if(x=0x=1)return 3;elsea=x-fun(x-2);return a;void main()printf(“%d“,fun(7);A) 2 B) 8 C) 9 D) 5(分数:2.00)A.B.C.D.29.以下程序运行后的输出结果是main( )char s=“ABCD“,*p;for(p=s+1;ps+4;p+)printf(“%s/n
12、“,p);A) ABCDBCDCDDB) ABCDC) BCDD) BCDCDD(分数:2.00)A.B.C.D.30.已知字符A的 ASCII码值是 65,字符变量 c1的值是A,c2 的值是D。执行语句printf(“%d,%d“,c1,c2-2) ;后,输出结果是A) A,B B) A,68 C) 65,66 D) 65,68(分数:2.00)A.B.C.D.31.若程序中定义了以下函数:double myadd(double a, double B) return(a+B) ; 并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是_A) double myad
13、d(double a, B) ; B) double myadd(double, double);C) double myadd(double b, double A) ; D) double myadd(double x, double y);(分数:2.00)A.B.C.D.32.设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应选择存储类别是( )。Aauto BregisterCstatic Dauto 或 register(分数:1.00)A.B.C.D.33.下列程序执行的输出结果是( )。#includestdio.hmain()char a24;strcpy(a,
14、“are“);strcpy(a1,“you“);a03=printf(“%s/n“,a);A) arei1 = f(8)/f(4) ;i2 =f(4 +4)/f(2 +2);printf(“% d,% d/n“ ,i1 ,i2);A) 64,28 B) 4,4 C) 4,3 D) 64,64(分数:1.00)A.B.C.D.36.有以下程序: void fun(char *a, char*b)a=b;(*a)+;)main()char c1=A,c2=a, *p1, *p2;p1= p2= fun(p1,p2);printf(“%c%c/n“, c1,c2);程序运行后的输出结果是 _。A)
15、Ab B) aa C) Aa D) Bb(分数:2.00)A.B.C.D.37.有以下程序#includestdioh#define SUB(a) (a)-(a)main()inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(“%d/n“,d);程序运行后的输山结果是A) 0 B) -12 C) -20 D) 10A.B.C.D.38.已知小写字母 a的 ASCII码为 97,大写字母 A的 ASCII码为 65,以下程序的结果是 _。main()unsigned int a=32,b=66;printf(“%c/n“,aB) ;A) 66 B) 98 C) b D) B
16、(分数:2.00)A.B.C.D.39.若 fp是指向某文件的指针,且尚未读到文件末尾,则函数 feof(fp)的返回值是( )。A) EOF B) -1 C) 非零值 D) 0(分数:2.00)A.B.C.D.40.请选出下面正确的程序段( )。A) int *s;scanf(“%d“,s);B) int *s,k;*s=100;C) int *s,k;char *p, c;s= p=*p=a;D) int *s,k;char *p, c;s= p=s=p; *s=1;(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:32.00)41.以下程序的功能是计算:s=1+12+12
17、3+1234+12345。请填空。main()int t=0,s=0,i;for(i=1;i=5;i+)t=i+U /U;s=s+t;printf(“s=%d/n“,s);(分数:2.00)填空项 1:_42.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 1 实际上对应一个处理模块。(分数:4.00)填空项 1:_43.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为U /U。(分数:2.00)填空项 1:_44.有以下程序:void f(int v,int w)int t;t=v;v=w
18、;w=t;main()int x=1,y=3,z=2if(xy) f(x,y);else if(yz) f(y,z);else f (x,z);printf(“%d,%d,%d/n“,x,y,z);执行后的输出结果是U /U。(分数:2.00)填空项 1:_45.软件测试中路径覆盖测试是整个测试的基础,它是对软件U /U进行测试。(分数:2.00)填空项 1:_46.用树型结构表示实体类型及实体间联系的数据模型称为 1。(分数:2.00)填空项 1:_47.在 E-R图中,矩形表示 1。(分数:2.00)填空项 1:_48.在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的
19、函数是 1。(分数:2.00)填空项 1:_49.strcat函数的作用是U /U。(分数:2.00)填空项 1:_50.有以下程序 #includestdio.h main() int i,n=0,0,0,0,0; for(i=l;i=4;i+) ni=ni-1*3+1;printf(“%d“,ni); 程序运行后的输出结果是U /U(分数:2.00)填空项 1:_51.设有下列的程序段:char str=“Hello“;char*ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为 1。(分数:2.00)填空项 1:_52.下列程序将二维数组 a的行和列元素互换后存放到另一个
20、二维数组 b中。请填空。main()int a23=1,2,3),4,5,b32,i,j;for(i=0;i2;i+)for(j=0;j30+)_;(分数:2.00)填空项 1:_53.执行以下程序的输出结果是_。#includestdio.h#define M 5#define N M+Mmain()int k;k=N*N*5;printf(”%d/n“ ,k);(分数:2.00)填空项 1:_54.以下程序用于判断 a,b,c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a,b,c 输入三角形三条边长时,确定 a,b,c 能构成三角形的条件是需同时满足三个条件:a+bc, a
21、+cb,b+ca。请填空。#include stdio.hmain( )float a,b,c;scanf( “% f% f% f“, if(U /U)printf(“YES/n“); /*a.b.c能构成三角形*/else prinff( “NO /n“ ); /* a.b.c不能构成三解形*/(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是_。#includestdio.hmain()int i,j;for(i=6;i3;i-)j=i;printf(“%d%d/n“,i,j);(分数:2.00)填空项 1:_二级 C语言笔试-479 答案解析(总分:98.00,做题时间:9
22、0 分钟)一、选择题(总题数:40,分数:66.00)1.下列数据结构中,能用二分法进行查找的是_。(A) 顺序存储的有序线性表(B) 线性链表(C) 二叉链表(D) 有序线性链表(分数:2.00)A. B.C.D.解析:2.算法的空间复杂度是指( )。A) 算法程序的长度 B) 算法程序中的指令条数C) 算法程序所占的存储空间 D) 算法执行过程中所需要的存储空间(分数:2.00)A.B.C.D. 解析:解析 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。3.下列叙述
23、中正确的是_。A) 一个逻辑数据结构只能有一种存储结构B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D) 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(分数:2.00)A.B.C.D. 解析:解析 数据的逻辑结构反映数据元素之间的逻辑关系,数据的存储结构(也称数据的物理结构)是数据的逻辑结构在计算机存储空间中的存放形式。同一种逻辑结构的数据可以采用不同的存储结构,但影响数据处理效率。4.下列描述中正确的是 _。A) 程序就是软件 B) 软件开发不受计算机系统的限制C) 软件既是逻辑实体
24、,又是物理实体 D) 软件是程序、数据与相关文档的集合(分数:2.00)A.B.C.D. 解析:解析 程序是软件的一部分,软件是一种逻辑实体,它的开发、运行都依赖计算机系统,因此出现了软件的移植问题。5.两个或两个以上模块之间关联的紧密程度称为A) 耦合度 B) 内聚度 C) 复杂度 D) 数据传输特性(分数:2.00)A. B.C.D.解析:解析 本题考核模块独立性的评价。评价模块独立性的主要标准有两个:一是模块之间的耦合度,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度,所以,本题的正确答案为选项 A;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要
25、求模块之间的耦合尽可能地弱,即模块尽可能独立;而要求模块的内聚程度尽量地高。6.在数据库系统的内部结构体系中,索引属于( )。 A) 模式 B) 内模式 C) 外模式 D) 概念模式(分数:2.00)A.B. C.D.解析:解析 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。7.下列叙述中正确的是A) 数据的逻辑结构与存储结构必定是一一对应的B) 由于计算机存储空间是向量式的存储结构,因此数据的存储结构一定是线性结构C) 程序设
26、计语言中的数据一般是顺序存储结构,因此利用数组只能处理线性结构D) 以上 3种说法都不对(分数:2.00)A.B.C.D. 解析:解析 数据的逻辑结构与数据在计算机中的存储方式无关,它用来抽象地反映数据元素之间的逻辑关系,故选项 A错误。存储结构分为顺序存储结构与链式存储结构,其中顺序存储结构是将逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的相邻关系来决定,它主要用于存储线性结构的数据,故选项 B错误。数组的存储方式连续是指其在计算机中的存储方式,它可以用来处理非线性结构,故选项 C错误。8.数据库管理系统中负责数据模式定义的语言是A) 数据定义语言 B) 数据管
27、理语言C) 数据操纵语言 D) 数据控制语言(分数:2.00)A. B.C.D.解析:解析 数据定义语言用于定义数据库的所有特性和属性,如行布局、列定义、文件位置和存储策略等。9.下列对于软件测试的描述中正确的是A) 软件测试的目的是证明程序是否正确B) 软件测试的目的是使程序运行结果正确C) 软件测试的目的是尽可能多地发现程序中的错误D) 软件测试的目的是使程序符合结构化原则(分数:2.00)A.B.C. D.解析:命题目的 本题考查了软件测试的概念。解题要点 软件测试是为了发现错误而执行程序的过程,且为了达到好的测试效果,应该由独立的第三方来构造测试,程序员应尽量避免检查自己的程序。考点链
28、接 黑箱测试和白箱测试。10.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。 A) 软件矛盾 B) 软件危机 C) 软件藕合 D) 软件产生(分数:2.00)A.B. C.D.解析:解析 随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入们难以控制软件发展的局面,即所谓的“软件危机”。11.下列不属于软件工程的 3个要素的是( )。A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D. 解析:解析 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程
29、项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。12.将 E-R图转换到关系模式时,实体与联系都可以表示成A) 属性 B) 关系 C) 键 D) 域(分数:2.00)A.B. C.D.解析:解析 关系数据库逻辑设计的主要工作是将 E-R图转换成指定 RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R 图中属性也可以转换成关系的属性,实体集也可以转换成关系。13.一个关系中属性个数为 1时,称此关系为A) 对应关系 B) 单一关系 C) 一元关系 D) 二元关系(分数:1.00)A.B.C. D.解
30、析:解析 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N个属性的关系称为 N元关系。14.请选出可用作 C语言用户标识符的是A) void,define,WORD B) a3_b3,_123,IF C) FOR,-abc,Case D) 2a,Do,Sizeof(分数:1.00)A.B. C.D.解析:解析 C 语言规定用户标识符由字母、数字和下画线组成,且第一个字符必须是字母或下画线,可见选项 C) , D) 是错误的;此外,C 语言不允许用户将关键字作为标识符,而选项 A) 中的 void正是C语言的关键字。15.有以下程序_。Main()int
31、x,y,z;x=y=1;z=x+,y+,+y;printf(“%d,%d,%d/n“,x,y,z);程序运行后的输出结果是_。(A) 2,3,3(B) 2,3,2(C) 2,3,1(D) 2,2,1(分数:1.00)A.B.C. D.解析:16.执行下列程序段后,变量 a,b,c的值分别是( )。int x=5,y=4;int a,b,c;a=(-x=y+)?x:+y;b=+x;c=y;A) a=5,b=5,c=5 B) a=4,b=5,c=5C) a=5,b=6,c=5 D) a=1,b=5,c=6(分数:2.00)A.B. C.D.解析:解析 本题考查自加(+)、自减(-)运算符的使用。“
32、+i,-i”,在使用 i之前,先使 i的值加 1或者减 1,再使用此时的表达式的值参与运算;“i+,i-”,先使用此时的 i的值参与运算,在使用 i之后,再使 i的值加 1或者减 1。对于第 1个表达式-x=4,y+=4。两者相等,-x=y+为真,所以 a=x=4,执行完此语句后 y的值是 5。第 2个表达式 b=+x,x 的值先加 1,然后赋给 b,即 b=x+1=5;第一个表达式 c=y=5。17.以下不能正确计算代数式 sin2( (分数:1.00)A. B.C.D.解析:解析 A 中 sin(1/2)是 0,因为 1和 2都是整数,“/”在这里是整除。18.若 a是数值类型,则逻辑表达
33、式(a=1)|(a!=1)的值是( )。A1 B0C2 D不知道 a的值,不能确定(分数:1.00)A. B.C.D.解析:解析 由于 a=1和 a!=1两者互斥,即总有一个为真,因此二者的或也必定为真。19.有以下程序:main()int y=1,x=2,z=3;printf(“%d,%d/n“,(+x,y+),z+2);执行后的输出结果是( )。A) 3,5 B) 2,5 C) 3,3 D) 1,5(分数:1.00)A.B.C.D. 解析:解析 本题考查逗号表达式。逗号表达武的求解步骤是先求解表达式 1,然后依次求解表达式 2,直到表达式 N的值。整个逗号表达式的值就足最后一个表达式 N的
34、值。(+x,y+)这个表达式的返回值是y+,先使用 y的债,然后将 y加 1,所以输出第一个值为 1。第二个输出的值为 z+2=3+2=5。20.若 ch为 char型变量,k 为 int型变量(已知字符 a的 ASCII码是 97),则执行下列语句后输出的结果为( )。ch=b;k=10;printf(“%x,%o,“,ch,ch,k);printf(“k=%d/n“,k);A) 因变量类型与格式描述符的类型不匹配,输出无定值B) 输出项与格式描述符个数不符,输出为 0值或不定值C) 62,142,k=%dD) 62,142,k=%10(分数:2.00)A.B.C. D.解析:解析 第 1个
35、 printf函数,格式说明的个数是 2,而输出项的个数是 3,所以对于多余的输出项k不予输出;第 2个 printf函数,有两个%说明,第 1个%后面的字符要原样输出。知识拓展 本题考查 printf函数的格式。 “%x”和“%o”分别表示以十六进制和八进制无符号型输出整型数据(不带前导 0x或 0):printf 函数中格式说明符之前插入的任何字符都原样输出:格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。21.设有定义:int k=1,m=2;float f=7;则下列选项中错误的表达式是( )。A) k=k=k B) -k+ C) k%i
36、nt(f) D) k=f=m(分数:1.00)A.B.C. D.解析:解析 在 C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量 f进行强制类型转换,正确的写法为 k%(int)f。在 C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、a+;main()char*s=“*a*b*“,t80;fun(s,t);puts(t);程序的运行结果是_。A) *a*b B) a*b C) a*b* D) ab(分数:2.00)A.B.C. D.解析:解析 函数 fun中的第一个 while循环语句将指针定
37、位在字符串 a的第一个不是*号的字符上;第二个 while循环语句将 a所指向的字符赋值给 b,直到字符串的结束符为止。调用函数 fun(s,t);,首先将指针指向a,s=“a*b*”,然后将 s中的字符赋给 t。23.已有定义 int a=3;和输出语句 printf(“%8x“,a);以下正确的叙述是( )。 A) 整型变量的输出格式符只有%d 一种 B) %x是格式符的一种,它可以适用于任何一种类犁的数据 C) %x是格式符的一种,其变量的值按十六进制数输出,但%08x 是错误的 D) %8x是正确的格式符,其中数字 8规定了输出字段的宽度(分数:1.00)A.B.C.D. 解析:解析
38、本题考查 printf函数的格式。“%8x”表示以十六进制无符号形式输出整掣数据。“8”表示指定输出数据的宽度为 8位。24.以下程序段中的变量已正确定义for(=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“)程序段的输出结果是_。A) * B) * C) * D) *(分数:2.00)A.B.C.D. 解析:评析 本题考查的是 for循环语句的使用以及分号“;”的使用,第一层 for循环由于 i两次自增运算故执行两次,每执行一次第一层 for循环,第二条 for循环语句执行三次,但由于语句后面加了分号,因此这一条空循环语句,结果当第一层的 for语句执行完,跳出整
39、个循环语句后,执行 printf语句,因此执行一次 printf语句,选项 D是正确的。25.下列程序执行后的输出结果是( )。main()char x=0xFFFF;printf(“%d/n“,x-);A-32767 BFFFEC-1 D-32768(分数:1.00)A.B.C. D.解析:解析 因为 x=0x FFFF=11111111,因此当以整型形式输出时对应的数为-1。26.有下列函数定义:int fun(double a,double b)return a*b;若下列选项中所用变量都已正确定义并赋值,错误的函数调用是( )。A) if(fun(x,y) B) z=fun(fun(x
40、,y),fun(x,y);C) z=fun(fun(x,y)x,y); D) fun(x,y);(分数:2.00)A.B.C. D.解析:解析 本题考查函数调用时的参数传递。选项 C)中第一个参数的表达式不正确,因此不能得到正确的结果。27.有以下程序:main()int i=0, s=0;doif(i % 2)i+; continue;i+;s+=i;while(i7);printf(“% d/n“, s);执行后的输出结果是_。A) 16 B) 12 C) 28 D) 21(分数:2.00)A. B.C.D.解析:解析 continue 语句的作用是结束本次循环,程序中 while循环语句
41、的功能是计算 17 之间奇数之和,即 s=1+3+5+7=16。28.下列程序的输出结果是( )。#includestdio.hint fun(int x)int a;if(x=0x=1)return 3;elsea=x-fun(x-2);return a;void main()printf(“%d“,fun(7);A) 2 B) 8 C) 9 D) 5(分数:2.00)A. B.C.D.解析:解析 本题考查函数的递归调用。在函数递归调用时,fun(7):a=7-fun(5)fun(5):a=5-fun(3)fun3:a=3-fun(1)fun(1):a=3,反推回去 fun(3):a=3-3
42、0fun(5):a=5-0=5fun(7):a=7-5=2,最后的计算结果为 229.以下程序运行后的输出结果是main( )char s=“ABCD“,*p;for(p=s+1;ps+4;p+)printf(“%s/n“,p);A) ABCDBCDCDDB) ABCDC) BCDD) BCDCDD(分数:2.00)A.B.C.D. 解析:解析 本题考查指向字符串指针的运算方法。执行 p=s+1后,指针变量 p就指向字符串中的第二个字符 B,然后输出字符串“BCD“并换行;继续执行循环语句,指针变量 p指向下一个字符 c,输出字符串“CD“,最后一次循环,p 指向字符“D“,输出字符串“D“。
43、30.已知字符A的 ASCII码值是 65,字符变量 c1的值是A,c2 的值是D。执行语句printf(“%d,%d“,c1,c2-2) ;后,输出结果是A) A,B B) A,68 C) 65,66 D) 65,68(分数:2.00)A.B.C. D.解析:解析 在 C语言中,字符型数据在内存中的存储形式是 ASCII码值。当需要以整型格式输出字符时,输出的也是 ASCII码值。字符“A”和“D”的 ASCII码值分别为 65和 68。31.若程序中定义了以下函数:double myadd(double a, double B) return(a+B) ; 并将其放在调用语句之后,则在调用
44、之前应该对函数进行说明,以下选项中错误的说明是_A) double myadd(double a, B) ; B) double myadd(double, double);C) double myadd(double b, double A) ; D) double myadd(double x, double y);(分数:2.00)A. B.C.D.解析:解析 选项 A中没有指定第二个形参变量 B的数据类型,错误。32.设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应选择存储类别是( )。Aauto BregisterCstatic Dauto 或 register(分数
45、:1.00)A.B.C. D.解析:解析 在 C语言中,未赋初值的静态局部变量,编译程序自动给它赋初值 0。所以选择 C。33.下列程序执行的输出结果是( )。#includestdio.hmain()char a24;strcpy(a,“are“);strcpy(a1,“you“);a03=printf(“%s/n“,a);A) arei1 = f(8)/f(4) ;i2 =f(4 +4)/f(2 +2);printf(“% d,% d/n“ ,i1 ,i2);A) 64,28 B) 4,4 C) 4,3 D) 64,64(分数:1.00)A.B.C. D.解析:解析 程序中 i1=f(8)
46、/f(4)宏替换后得到 i1=(8*8)/(4*4),结果为 4;i2=f(4+4)/f(2 +2)宏替换后得到 i2=(4+4*4+4)/(2+2*2+2),其结果为 3。故本题输出的值为 4,3。36.有以下程序: void fun(char *a, char*b)a=b;(*a)+;)main()char c1=A,c2=a, *p1, *p2;p1= p2= fun(p1,p2);printf(“%c%c/n“, c1,c2);程序运行后的输出结果是 _。A) Ab B) aa C) Aa D) Bb(分数:2.00)A. B.C.D.解析:解析 本题中函数 fun的形参是指针变量,因
47、此实参与形参之间是地址传递,即形参的改变可以影响实参。main 函数中 p1指向 c1,p2指向 c2,函数调用语句 fun(p1,p2)的功能是将 p2所指存储单元的内容的值加 1,即将 c2的值加 1得 c2 =b,故 printf函数的输出结果为 Ab。37.有以下程序#includestdioh#define SUB(a) (a)-(a)main()inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(“%d/n“,d);程序运行后的输山结果是A) 0 B) -12 C) -20 D) 10A.B.C. D.解析:解析 在此处需要直接替换整个式子,SUB(a +b)*c 即为(a+b)-(a+b)*c,代入 a,b,c 的值可得结果为-20。38.已知小写字