1、二级 C 语言笔试-5 及答案解析(总分:110.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.设变量已正确定义并赋值,以下正确的表达式是_。(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+yD.x=25%5.02.下列数据结构中,能用二分法进行查找的是_。(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表3.有以下程序: #define P 3 void F(int x)return(P*x*x); main() printf(“%d/n“,F(3+5); 程序运行后的输出结果是_。(
2、分数:2.00)A.192B.29C.25D.编译出错4.设有如下三个关系表: (分数:2.00)A.T=RSB.T=RSC.T=RSD.T=R/S5.已知大写字母 A 的 ASC码是 65,小写字母 a 的 ASC码是 97,以下不能将变量 C 中的大写字母转换为对应小写字母的语句是_。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A+c)%26-a6.有以下程序: #includestdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“,
3、-x); 程序的运行结果是_。(分数:2.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,27.有以下程序: #includestdio.h int a=1; int fun(int c) static int a=2; c=c+1; return(a+)+c; main() int i,k=0; for(i=0;i2;i+)int a=3;k+=f(a); k+=a; printf(“%d/n“,k); 程序的运行结果是_。(分数:2.00)A.14B.15C.16D.178.有以下程序: #includestdio.h #includestring.h typede
4、f structchar name9;char sex;float score2;STU; STU f(STU a) STU b=“Zhao“,m,85.0,90.0;int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i,2;i+)a.scorei=b.scorei; return a; main() STU c=“Qian“,f,95.0,92.0,d; d=f(c);printf(“%s,%c,%2.0f%2.0f/n“,d.name,d.sex,d.score0,d.score1); 程序的运行结果是_。(分数:2.00)A.Qian,
5、f,95,92B.Qian,85,90C.Zhao,m,85,90D.Zhao,f,95,929.有以下程序: #includestdio.h main() FILE*fp;int i,k,n; fp=fopen(“data.dat“,“w+“); for(i=1;i6;i+) fprimtf(fp,“%d“,i); if(i%3=0)fprintf(fp,“/n“); rewind(fp); fscanf(fp,“%d%d“,k,n);printf(“%d%d/n“,k,n); fclose(fp); 程序运行后的输出结果是_。(分数:2.00)A.0 0B.123 45C.1 4D.1 2
6、10.若有语句:char*line5;,以下叙述中正确的是_。(分数:2.00)A.定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量B.定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的*号称为间址运算符D.定义 line 是一个指向字符型函数的指针11.有以下程序: fun(int x) int p; if(x=0|x=1)return(3); p=x-fun(x-2); return p; main() printf(“%d/n“,fun(7); 执行后的输出结果是_。(分数:2.00)A.7B
7、.3C.2D.012.下列叙述中正确的是_。(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对13.有以下程序: main() int k=5,n=0; do switch(k) case1: case3:n+=1;k-;break; default:n=0;k-; case2: case4:n+=2;k-;break; printf(“%d“,n); while(k0n5); 程序运行后的输出结果是_。(分数:2.00)A.235B.0235C.02356D.235614.算法具有五个特性,以下选项中不
8、属于算法特性的是_。(分数:2.00)A.有穷性B.简洁性C.可行性D.确定性15.以下能正确定义一维数组的选项是_。(分数:2.00)A.int a5=0,1,2,3,4,5);B.char a=0,1,2,3,4,5);C.char a=A,B,C;D.int a5=“0123“;16.为了使模块尽可能独立,要求_。(分数:2.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强17.数据库 DB、数据库系统 DB
9、S、数据库管理系统 DBMS 之间的关系是_。(分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系18.下列叙述中正确的是_。(分数:2.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根节点的二叉树是线性结构19.在嵌套使用 if 语句时,C 语言规定 else 总是_。(分数:2.00)A.和之前与其具有相同缩进位置的 if 配对B.和之前与其最近的 if 配对C.和之前与其最近不带 else 的 if 配对D.和之前的第一个 if 配对20.6-5/2
10、+1.2+5%2 的值是_。(分数:2.00)A.4.3B.4.8C.3.3D.3.821.有以下程序: #includestdio.h void fun(int*s,int nl,int n2) int i,j,t; i=nl;j=n2; while(ij)t=si;si=sj;sj=t;i+;j-; main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“,ak);printf(“/n“); 程序运行的结果是_。(分数:2.00)A.098765432
11、1B.4321098765C.5678901234D.098765123422.在深度为 7 的满二叉树中,叶子节点的个数为_。(分数:2.00)A.32B.31C.64D.6323.有定义语句:char s10;,若要从终端给 s 输入 5 个字符,错误的输入语句是_。(分数:2.00)A.gets(s0);B.scanf(“%s“,s+1);C.gets(s);D.scanf(“%s“,s1);24.若有定义:char*x=“abcdefghi“;,以下选项中正确运用了 strcpy 函数的是_。(分数:2.00)A.char y10;strcpy(y,x4);B.char y10;str
12、cpy(+y,x1);C.char y10,*s;strcpy(s=y+5,x);D.char y10,*s;strcpy(s=y+1,x+1);25.有以下程序: #includestdio.h void fun(char*t,char*s) while(*t!=0)t+; while(*t+=*s+)!=0); main() char ss10=“acc“,aa10=“bbxxyy“; fun(ss,aa);printf(“%s,%s/n“,ss,aa); 程序的运行结果是_。(分数:2.00)A.accxyy,bbxxyyB.acc,bbxxyyC.accxxyy,bbxxyyD.acc
13、bbxxyy,bbxxyy26.下面选项中不属于面向对象程序设计特征的是_。(分数:2.00)A.继承性B.多态性C.类比性D.封闭性27.有以下程序段: char ch; int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k);printf(“k=%d/n“,k);已知字符 a 的 ASC十进制代码为 97,则执行上述程序段后输出的结果是_。(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=1228.设有如下程序段: char s20=“Bejing“
14、,*P; p=s; 则执行 p=s;语句后,以下叙述正确的是_。(分数:2.00)A.可以用*P 表示 s0B.s 数组中元素的个数和 p 所指字符串长度相等C.s 和 p 都是指针变量D.数组 s 中的内容和指针变量 p 中的内容相等29.若有定义语句:int k23,*pk3;,则以下语句中正确的是_。(分数:2.00)A.pk=k;B.pk0=k12;C.pk=k0;D.pk1=k;30.设函数 fun 的定义形式为: void fun(char ch,float x) 则以下对函数 fun 的调用语句中,正确的是_。(分数:2.00)A.fun(“abc“,3.0);B.t=fun(D
15、,16.5);C.fun(65,2.8);D.fun(32,32);31.若有定义:int x=0,*p=x;,则语句 printf(“%d/n“,*p);的输出结果是_。(分数:2.00)A.随机值B.0C.x 的地址D.p 的地址32.有以下程序: main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j*2)continue; x+; x+; printf(“x=%d/n”,x); 程序执行后的输出结果是_。(分数:2.00)A.x=4B.x=8C.x=6D.x=1233.有以下程序: typedef structint b,
16、P;A; void f(A C) /*注意:C 是结构变量名*/ int j; c.b+=1;c.p+=2; main() int i; A a=1,2); f(a); printf(“%d,%d/n“,a.b,a.p); 程序运行后的输出结果是_。(分数:2.00)A.2,3B.2,4C.1,4D.1,234.有以下程序段: int k=0,a=1,b=2,c=3; k=ab?b:a;k=kc?c:k; 执行该程序段后,k 的值是_。(分数:2.00)A.3B.2C.1D.035.若在定义语句:int a,b,c*p=c;之后,接着执行以下选项中的语句,则能正确执行的语句是_。(分数:2.0
17、0)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p);D.scanf(“%d“,p);36.对下列二叉树 (分数:2.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG37.有以下程序: #includestdio.h main() int a=1,b=2,c=3,x; x=(ab)c;printf(“%d/n“,x); 程序的运行结果是_。(分数:2.00)A.0B.1C.2D.338.若整型变量 a、b、c、d 中的值依次为 1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是_。(分
18、数:2.00)A.1B.2C.3D.439.在 E-R 图中,用来表示实体的图形是_。(分数:2.00)A.矩形B.椭圆形C.菱形D.三角形40.有以下程序: #includestring.h main() char p20=a,b,c,d,q=“abc“,r=“abcde“; strcpy(p+strlen(q),r);strcat(p,q); printf(“%d%d/n“,sizeof(p),strlen(p); 程序运行后的输出结果是_。(分数:2.00)A.20 9B.9 9C.20 11D.11 11二、B填空题/B(总题数:15,分数:30.00)41.算法复杂度主要包括时间复杂
19、度和 1 复杂度。(分数:2.00)填空项 1:_42.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_43. 1 的任务是诊断和改正程序中的错误。(分数:2.00)填空项 1:_44.在结构化分析使用的数据流图(DFD)中,利用 1 对其中的图形元素进行确切解释。(分数:2.00)填空项 1:_45.问题处理方案的正确而完整的描述称为 1。(分数:2.00)填空项 1:_46.设变量已正确定义为整型,则表达式 n=i=2,+i,i+的值为 1。(分数:2.00)填空项 1:_47.以下程序运行后的输出结果是_。 main() int x=0210;pr
20、intf(“%x/n“,x); (分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。 main() int a=3,b=4,c=5,t=99; if(baac)t=a;a=c;c=t; if(acbc)t=b;b=a;a=t printf(“%d%d%d/n“,a,b,c); (分数:2.00)填空项 1:_49.当执行以下程序时,输入 1234567890回车,则其中 while 循环体将执行_次。 #includestdio.h main() char ch; while(ch=getchar()=0)printf(“#“); (分数:2.00)填空项 1:_50.以下程序
21、的运行结果是_。 int k=0; void fun(int m) m+=k;k+=m;printf(“m=%d/n k=%d“,m,k+); main() int i=4; fun(i+);printf(“i=%d k=%d/n“,i,k); (分数:2.00)填空项 1:_51.以下程序的输出结果是_。 #includestdlib.h main() char*s1,*s2,m; s1=s2=(char*)malloc(sizeof(char); *s1=15; *s2=20; m=*s1+*s2: printf(“%d/n“,m); (分数:2.00)填空项 1:_52.以下程序运行后的
22、输出结果是_。 int f(int a,int n) if(n=1)return f(a,n-1)+an-1;else return 0; main() int aa5=1,2,3,4,5),s; s=f(aa,5);printf(“%d/n“,s); (分数:2.00)填空项 1:_53.当运行以下程序时,输入 abcd,程序的输出结果是:_。 insert(char str) int i; i=strlen(str); while(i0) str2*i=stri;str2*i-1=*;i-; printf(“%s/n“,str); main() char str40; scanf(“%s“
23、,str);insert(str); (分数:2.00)填空项 1:_54.以下程序中函数 huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda,请填空。 #includestring.h char*huiwen(char*str) char*p1,*p2;int i,t=0; p1=str;p2=_; for(i=0;i=strlen(str)/2;i+) if(*p1+!=*p2-)t=1;break; if(t=0)return(“yes!“); els
24、e return(“no!“); main() char str50; printf(“Input:“);scanf(“%s“,str); printf(“%s/n“,huiwen(str); (分数:2.00)填空项 1:_55.以下程序运行后的输出结果是_。 struct NODE int k; struct NODE*link; ; main() struct NODE m5,*p=m,*q=m+4; int i=0; while(p!=q) p-k=+i;p+; q-k=i+;q-; q-k=i; for(i=0;i5;i+)printf(“%d“,mi.k); printf(“/n“
25、); (分数:2.00)填空项 1:_二级 C 语言笔试-5 答案解析(总分:110.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.设变量已正确定义并赋值,以下正确的表达式是_。(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+y D.x=25%5.0解析:解析 赋值运算符的左边必须是一个代表某一存储单元的变量名,而 A 选项中的“y*5=x+z”部分是非法赋值。求余运算符的对象只能是整型,故选项 B 和选项 D 是错误的。选项 C 为逗号表达式。2.下列数据结构中,能用二分法进行查找的是_。(分数:2.00)A.顺序存
26、储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分法查找只适用于顺序存储的线性表。3.有以下程序: #define P 3 void F(int x)return(P*x*x); main() printf(“%d/n“,F(3+5); 程序运行后的输出结果是_。(分数:2.00)A.192 B.29C.25D.编译出错解析:解析 本题的函数 F 的功能是,对于形参 x,返回 3*x*x 的值。因此对于函数调用“F(3+5);”先计算得到实参结果是 8,然后调用 F,返回结果应该是 388=192。正确选项是 A。4.设有如下三个关系表: (分数:2.00)A.T=RSB
27、.T=RSC.T=RS D.T=R/S解析:解析 广义笛卡儿积():设关系 R 和 S 的属性个数分别为 n、m,则 R 和 S 的广义笛卡儿积是一个有(n+m)列的元组的集合。每个元组的前 n 列来自 R 的一个元组,后 m 列来自 S 的一个元组,记为RS。5.已知大写字母 A 的 ASC码是 65,小写字母 a 的 ASC码是 97,以下不能将变量 C 中的大写字母转换为对应小写字母的语句是_。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A+c)%26-a 解析:解析 由 97-65=32 可知大写字母对应的小写字母之间相差 32,所以将大写
28、字母加上 32 就得到小写字母,所以选项 B 和 C 是正确的。选项 A 中(cA)%26 可以求出变量 c 中的字母与字母 A 相差几位那么小写字母 a 的 ASC码向后移动相差的位数就是对应的小写字母,所以选项 A 也是正确的。6.有以下程序: #includestdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“,-x); 程序的运行结果是_。(分数:2.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2 解析:解析 本题考查 for 循环语句。x=8,
29、for 循环条件为真,8%3=2,不等于 0,则 if 条件表达式为真,执行第一个输出语句,先输出 x 的值 8,然后将 x 的值减 1,此时 x=7。然后执行 continue 语句结束本次循环。执行 x-表示式,得 x=6,for 循环条件为真6%3=0,则 if 条件表达式为假,执行第二个输出语句,先将 x 的值减 1 得 x=5,然后输出 x 的值 5。执行 x-表示式,得 x=4,for 循环条件为真,4%3=1,不等于 0,则 if 条件表达式为真,执行第一个输出语句,先输出 x 的值 4,然后将 x 的值减 1,此时 x=3。然后执行 continue 语句结束本次循环。执行 x
30、-表示式,得 x=2,for 循环条件为真,2%3=2,不等于 0,则 if 条件表达式为真,执行第一个输出语句,先输出 x 的值 2,然后将 x 的值减 1,此时x=1。执行 x-表示式,得 x=0,for 循环条件为假,循环结束。7.有以下程序: #includestdio.h int a=1; int fun(int c) static int a=2; c=c+1; return(a+)+c; main() int i,k=0; for(i=0;i2;i+)int a=3;k+=f(a); k+=a; printf(“%d/n“,k); 程序的运行结果是_。(分数:2.00)A.14
31、B.15C.16D.17解析:解析 本题考查的重点是对 static 变量以及全局变量的理解。static 变量是函数或文件中的永久变量。本题中 static int a=2 语句定义了一个 static 局部变量,编译程序为其生成永久存储单元,即调用函数 fun 时,其值一直都保存着,而不是使用函数外所赋的值(尽管开头定义了一个同名的全局变量)。在主函数中,for 循环进行两次,第一次循环得 f(3)=3+1+2=6,从而 k+=f(3)=6,第二次循环由于 static局部变量 a 变成了 3,从而 f(3)的值为 7,故 k+=f(3)=13,再执行 k+=a 时,此时 a 的值为全局变
32、量,其值为 1,故 k 的值为 14,选项 A 是正确的。8.有以下程序: #includestdio.h #includestring.h typedef structchar name9;char sex;float score2;STU; STU f(STU a) STU b=“Zhao“,m,85.0,90.0;int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i,2;i+)a.scorei=b.scorei; return a; main() STU c=“Qian“,f,95.0,92.0,d; d=f(c);printf(“%s
33、,%c,%2.0f%2.0f/n“,d.name,d.sex,d.score0,d.score1); 程序的运行结果是_。(分数:2.00)A.Qian,f,95,92B.Qian,85,90C.Zhao,m,85,90 D.Zhao,f,95,92解析:解析 本题考查的重点是对向函数传递结构体的理解。用结构体做函数的参数时,是按传值规则把全部结构传给函数,因此,函数内对结构内容的修改不影响原结构,即退出函数时,原结构内容不变。本题中,d 中的值应为 b 中的值,所以选项 C 是正确的。9.有以下程序: #includestdio.h main() FILE*fp;int i,k,n; fp=
34、fopen(“data.dat“,“w+“); for(i=1;i6;i+) fprimtf(fp,“%d“,i); if(i%3=0)fprintf(fp,“/n“); rewind(fp); fscanf(fp,“%d%d“,k,n);printf(“%d%d/n“,k,n); fclose(fp); 程序运行后的输出结果是_。(分数:2.00)A.0 0B.123 45C.1 4D.1 2 解析:解析 语句“fprintf(fp,”%d”,i);”的作用是将变量 i 的值直接按“%d”的格式输出到文件 fp 指向的文件上;“rewind(fp)”的作用是使指针重新返回文件的开头;“fsc
35、anf(fp,“%d%d“,k,n);”的作用是将磁盘文件中的数据传送给变量 k 和 n。10.若有语句:char*line5;,以下叙述中正确的是_。(分数:2.00)A.定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量 B.定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的*号称为间址运算符D.定义 line 是一个指向字符型函数的指针解析:解析 本题考查指针数组的定义,说明符*line5中,遵照运算符的优先级,的优先级高于*号,因此 line 先与结合,构成一个数组,在它前面的*号则说明了数组
36、 line 是指针类型,它的每个元素都是基类型为 char 的指针。所以选项 A 叙述正确。11.有以下程序: fun(int x) int p; if(x=0|x=1)return(3); p=x-fun(x-2); return p; main() printf(“%d/n“,fun(7); 执行后的输出结果是_。(分数:2.00)A.7B.3C.2 D.0解析:解析 x=7,通过递归调用 fun 函数后得到结果。12.下列叙述中正确的是_。(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对 解析:解
37、析 软件测试即使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行,调试程序应该由编制源程序的程序员来完成。软件在调试后要进行回归测试,防止引进新的错误。13.有以下程序: main() int k=5,n=0; do switch(k) case1: case3:n+=1;k-;break; default:n=0;k-; case2: case4:n+=2;k-;break; printf(“%d“,n); while(k0n5); 程序运行后的输出结果是_。(分数:
38、2.00)A.235 B.0235C.02356D.2356解析:解析 do-while 语句的特点是先执行循环体,然后再判断循环条件是否成立,当循环条件的值为0 时循环结束。本题中执行 switch 语句,寻找与 5 匹配的 case 5 分支,没有寻找到则执行 default 后的语句,n=0,k 的值变为 4,继续执行 switch 语句,寻找与 4 匹配的 case 4 分支,找到后开始执行其后的语句“n+=2;k-;”,n 的值为 2,k 的值变为 3,遇到 break 语句跳出该 switch 语句体。执行 print 语句输出 2;此时 n=2,k=3 依旧满足 do-while
39、 循环条件,将用同样的方式再次执行 switch 语句,直到 n=5 时不再满足 do-while 循环条件退出所有的循环。14.算法具有五个特性,以下选项中不属于算法特性的是_。(分数:2.00)A.有穷性B.简洁性 C.可行性D.确定性解析:解析 一个算法应该具有以下 5 个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。15.以下能正确定义一维数组的选项是_。(分数:2.00)A.int a5=0,1,2,3,4,5);B.char a=0,1,2,3,4,5); C.char a=A,B,C;D.int a5=“0123“;解析:解析 C 语言一维数组的定义有两种方式
40、:一是指定数组长度,如选项 A“int a5=0,1,2,3,4,5;”,但此定义的赋初值个数为 6,多于数组长度,是错误的。因为给数组赋初值,初值个数只能小于或等于数组长度。二是不指定数组长度,由赋初值的初值个数决定数组的长度,如选项 B 的“chara=0,1,2,3,4,5;”,初值个数为 6,因此数组长度为 6。所以能正确定义一维数组。选项 C 的定义中 a 是一个字符变量,不能正确定义一维数组。选项 D“int a5=“0123”;”给 int 型数组赋字符串初值,显然是错误的。16.为了使模块尽可能独立,要求_。(分数:2.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽
41、量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强解析:解析 在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。17.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMS D.没有任何关系解析:解析 数据库系统(DBS)是由数据库(DB) 、数据库管理系统(DBMS)、数据库管理员(人员)、硬件平
42、台(硬件)、软件平台(软件)五个部分构成的运行实体。18.下列叙述中正确的是_。(分数:2.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根节点的二叉树是线性结构解析:解析 线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;栈、队列、线性链表实际上也是线性表,故也是线性结构。线性链表:线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。19.在嵌套使用 if 语句时,C 语言规定 else 总是_。(分数:2.0
43、0)A.和之前与其具有相同缩进位置的 if 配对B.和之前与其最近的 if 配对C.和之前与其最近不带 else 的 if 配对 D.和之前的第一个 if 配对解析:解析 C 语言的语法规定:else 子句总是与前面最近的不带 else 的 if 相结合。20.6-5/2+1.2+5%2 的值是_。(分数:2.00)A.4.3B.4.8C.3.3D.3.8 解析:解析 5/2 是整数相除,结果为 2。5%2 取模得到 1,因此,结果为 3.8。21.有以下程序: #includestdio.h void fun(int*s,int nl,int n2) int i,j,t; i=nl;j=n2
44、; while(ij)t=si;si=sj;sj=t;i+;j-; main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“,ak);printf(“/n“); 程序运行的结果是_。(分数:2.00)A.0987654321B.4321098765C.5678901234 D.0987651234解析:解析 函数 fun 的功能是:将数组 s 中从 n1 至 n2 的元素首尾互换,然后将第 2 个和倒数第 2 个元素互换,依次类推,其实也就是将原来的元素倒
45、置。执行 fun(a,0,3);将数组 a 中的第 03 个元素互换,结果为 4 32 1;执行 fun(a,4,9);将数组 a 中的第 49 个元素互换,结果为 0 9 8 7 65。此时 a中的元素依次为 4 3 2 1 0 9 8 7 6 5,执行 fun(a,0,9);再次将这 10 个元素倒置,结果为 5 6 7 8 9 0 1 2 3 4。22.在深度为 7 的满二叉树中,叶子节点的个数为_。(分数:2.00)A.32B.31C.64 D.63解析:解析 深度为 k 且有 2k-1个节点的二叉树,称为满二叉树。23.有定义语句:char s10;,若要从终端给 s 输入 5 个字符,错误的输入语句是_。(分数:2.00)A.gets(s0);B.scanf(“%s“,s+1);C.gets(s);D.scanf(“%s“,s1); 解析:解析 字符串的输入有两种方式:使用 scanf()函数和使用 get()函数。采用 scanf()函数输入时,输入项为字符串的地址值,输入字符依次放入以这一地址为起点的存储单元中。选项 C 是正确的,输