1、二级 C 语言笔试-177 及答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.有以下程序:#includestdio.hmain()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 4
2、D.1 22.在深度为 7 的满二叉树中,叶子节点的个数为_。(分数:2.00)A.32B.31C.64D.633.以下能正确定义一维数组的选项是_。(分数:2.00)_4.有以下程序段:int k=0,a=1,b=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k 的值是_。(分数:2.00)A.3B.2C.1D.05.有以下程序: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.2D.06.有以下程
3、序:#includestdio.hvoid 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.0987654321B.4321098765C.5678901234D.09876512347.设有如下三个关系表:(分数:2.00)A.
4、B.C.D.8.下列叙述中正确的是_。(分数:2.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根节点的二叉树是线性结构9.6-5/2+1.2+5%2 的值是_。(分数:2.00)A.4.3B.4.8C.3.3D.3.810.有以下程序:#includestring.hmain()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)_11.对下列
5、二叉树(分数:2.00)A.B.C.D.12.设变量已正确定义并赋值,以下正确的表达式是_。(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+yD.x=25%5.013.有以下程序:main()int k=5,n=0;doswitch(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.若在定义语句:int a,b,c*p
6、=c;之后,接着执行以下选项中的语句,则能正确执行的语句是_。(分数:2.00)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p);D.scanf(“%d“,p);15.若有定义:char*x=“abcdefghi“;,以下选项中正确运用了 strcpy 函数的是_。(分数:2.00)A.char y10;strcpy(y,x4);B.char y10;strcpy(+y,x1);C.char y10,*s;strcpy(s=y+5,x);D.char y10,*s;strcpy(s=y+1,x+1);16.有以下程序:#in
7、cludestdio.hint 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((分数:2.00)A.;k+=a;17.有以下程序:#includestdio.hmain()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,218.为了使模块尽可能独立,要求_。(分
8、数:2.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强19.若整型变量 a、b、c、d 中的值依次为 1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是_。(分数:2.00)A.1B.2C.3D.420.有以下程序:#includestdio.hmain()int a=1,b=2,c=3,x;x=(ab)c;printf(“%d/n“,x);程序的运行结果是_。(分数:2.00)A.0B.1C.2D.3
9、21.下列叙述中正确的是_。(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对22.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系23.有以下程序:typedef structint b,P;A;void f(A C) /*注意:C 是结构变量名*/int j;c.b+=1;c.p+=2;main()int i;A a=1,2);f((
10、分数:2.00)A.;pri24.有以下程序: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=1225.有定义语句:char s10;,若要从终端给 s 输入 5 个字符,错误的输入语句是_。(分数:2.00)A.gets(s0);B.scanf(“%s“,s+1);C.gets(s);D.scanf(“%s“,s1);26.算法具有五个特性,以下选项中不属于算法特性的是_。(分数
11、:2.00)A.有穷性B.简洁性C.可行性D.确定性27.下列数据结构中,能用二分法进行查找的是_。(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表28.在嵌套使用 if 语句时,C 语言规定 else 总是_。(分数:2.00)A.和之前与其具有相同缩进位置的 if 配对B.和之前与其最近的 if 配对C.和之前与其最近不带 else 的 if 配对D.和之前的第一个 if 配对29.有以下程序:#define P 3void F(int x)return(P*x*x);main()printf(“%d/n“,F(3+5);程序运行后的输出结果是_。(分数:
12、2.00)A.192B.29C.25D.编译出错30.若有定义语句:int k23,*pk3;,则以下语句中正确的是_。(分数:2.00)A.pk=k;B.pk0=k12;C.pk=k0;D.pk1=k;31.设函数 fun 的定义形式为:void fun(char ch,float x)则以下对函数 fun 的调用语句中,正确的是_。(分数:2.00)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fun(65,2.8);D.fun(32,32);32.下面选项中不属于面向对象程序设计特征的是_。(分数:2.00)A.继承性B.多态性C.类比性D.封闭性33.有以下程序
13、:#includestdio.hvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,a(分数:2.00)A.;printf(“%s,%s/n“,ss,aa);char sex;float score2;STU;STU f(STU(分数:2.00)A.STU b=“Zhao“,m,85.0,90.0;i35.在 E-R 图中,用来表示实体的图形是_。(分数:2.00)A.矩形B.椭圆形C.菱形D.三角形36.有以下程序段:char ch; int k
14、;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=1237.设有如下程序段:char s20=“Bejing“,*P;p=s;则执行 p=s;语句后,以下叙述正确的是_。(分数:2.00)A.可以用*P 表示 s0B.s 数组中元素的个数和 p 所指字符串长度相等C.s 和 p 都是指针变量D.数组
15、 s 中的内容和指针变量 p 中的内容相等38.已知大写字母 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-a39.若有语句:char*line5;,以下叙述中正确的是_。(分数:2.00)A.定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量B.定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的*号称为间址运算符D.定
16、义 line 是一个指向字符型函数的指针40.若有定义:int x=0,*p=x;,则语句 printf(“%d/n“,*p);的输出结果是_。(分数:2.00)A.随机值B.0C.x 的地址D.p 的地址二、填空题(总题数:15,分数:30.00)41.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_42.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_43. 1 的任务是诊断和改正程序中的错误。(分数:2.00)填空项 1:_44.在结构化分析使用的数据流图(DFD)中,利用 1 对其中的图形元素进行确切解释。(分数:2.
17、00)填空项 1:_45.问题处理方案的正确而完整的描述称为 1。(分数:2.00)填空项 1:_46.设变量已正确定义为整型,则表达式 n=i=2,+i,i+的值为 1。(分数:2.00)填空项 1:_47.以下程序运行后的输出结果是_。main()int x=0210;printf(“%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=tprintf(“%d%d%d/n“,a,b,c);(分数:2.00)填空项 1:_49.当执
18、行以下程序时,输入 1234567890回车,则其中 while 循环体将执行_次。#includestdio.hmain()char ch;while(ch=getchar()=0)printf(“#“);(分数:2.00)填空项 1:_50.以下程序的运行结果是_。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.hmain()char
19、*s1,*s2,m;s1=s2=(char*)malloc(sizeof(char);*s1=15;*s2=20;m=*s1+*s2:printf(“%d/n“,m);(分数:2.00)填空项 1:_52.以下程序运行后的输出结果是_。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
20、;i=strlen(str);while(i0)str2*i=stri;str2*i-1=*;i-;printf(“%s/n“,str);main()char str40;scanf(“%s“,str);insert(str);(分数:2.00)填空项 1:_54.以下程序中函数 huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda,请填空。#includestring.hchar*huiwen(char*str)char*p1,*p2;int i,t=0;p
21、1=str;p2=_;for(i=0;i=strlen(str)/2;i+)if(*p1+!=*p2-)t=1;break;if(t=0)return(“yes!“);else return(“no!“);main()char str50;printf(“Input:“);scanf(“%s“,str);printf(“%s/n“,huiwen(str);(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是_。struct NODEint k;struct NODE*link;main()struct NODE m5,*p=m,*q=m+4;int i=0;while(p!=q)p
22、-k=+i;p+;q-k=i+;q-;q-k=i;for(i=0;i5;i+)printf(“%d“,mi.k);printf(“/n“);(分数:2.00)填空项 1:_二级 C 语言笔试-177 答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.有以下程序:#includestdio.hmain()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
23、,“%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)”的作用是使指针重新返回文件的开头;“fscanf(fp,“%d%d“,k,n);”的作用是将磁盘文件中的数据传送给变量 k 和 n。2.在深度为 7 的满二叉树中,叶子节点的个数为_。(分数:2.00)A.32B.31C.64 D.63解析:解析 深度为 k
24、且有 2k-1个节点的二叉树,称为满二叉树。3.以下能正确定义一维数组的选项是_。(分数:2.00)_解析:解析 C 语言一维数组的定义有两种方式:一是指定数组长度,如选项 A“int a5=0,1,2,3,4,5;”,但此定义的赋初值个数为 6,多于数组长度,是错误的。因为给数组赋初值,初值个数只能小于或等于数组长度。二是不指定数组长度,由赋初值的初值个数决定数组的长度,如选项 B 的“chara=0,1,2,3,4,54.有以下程序段:int k=0,a=1,b=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k 的值是_。(分数:2.00)A.3B.2 C.1D.0解析:
25、解析 本题考查条件表达式的概念。第一个条件表达式“ab?b:a=12? 2:1=2”,并将 2 赋给k,第二个条件表达式“kc?c:k=23?3:2=2”,并将 2 再赋给 k,此时 k 的值为 2。5.有以下程序: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 函数后得到结果。6.有以下程序:#includestdio.hvoid fun(int*s,int nl
26、,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.0987654321B.4321098765C.5678901234 D.0987651234解析:解析 函数 fun 的功能是:将数组 s 中从 n1 至 n2 的元素首尾互换,然后将第 2 个和倒数第 2 个元
27、素互换,依次类推,其实也就是将原来的元素倒置。执行 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。7.设有如下三个关系表:(分数:2.00)A.B.C. D.解析:解析 广义笛卡儿积():设关系 R 和 S 的属性个数分别为 n、m,则 R 和 S 的广义笛卡儿积是一个有(n+m)列的元组的集合。每
28、个元组的前 n 列来自 R 的一个元组,后 m 列来自 S 的一个元组,记为RS。8.下列叙述中正确的是_。(分数:2.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根节点的二叉树是线性结构解析:解析 线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;栈、队列、线性链表实际上也是线性表,故也是线性结构。线性链表:线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。9.6-5/2+1.2+5%2 的值是_。(分数:
29、2.00)A.4.3B.4.8C.3.3D.3.8 解析:解析 5/2 是整数相除,结果为 2。5%2 取模得到 1,因此,结果为 3.8。10.有以下程序:#includestring.hmain()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)_解析:解析 题目中 p+strlen(q)的作用是在数组元素 p0地址的基础上向后移动三位,然后再将 r 所指字符串内容复制到 p 所指的存储
30、空间中,字符 d 被覆盖,p20=a,b,c,a,b,c,d,e)。然后通过“strcat(p,q);”将 q 所指的字符串内容连接到 p 所指的字符串后面,p20=a,b,c,a,b,c,d,e,a,b,c,11.对下列二叉树(分数:2.00)A. B.C.D.解析:解析 二叉树的中序遍历(LDR),首先遍历左子树,然后访问根节点,最后遍历右子树。12.设变量已正确定义并赋值,以下正确的表达式是_。(分数: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
31、*5=x+z”部分是非法赋值。求余运算符的对象只能是整型,故选项 B 和选项 D 是错误的。选项 C 为逗号表达式。13.有以下程序:main()int k=5,n=0;doswitch(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.235 B.0235C.02356D.2356解析:解析 do-while 语句的特点是先执行循环体,然后再判断循环条件是否成立,当循环条件的值为0 时循环结束。本题中执行
32、 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 循环条件,将用同样的方式再次执行 switch 语句,直到 n=5 时不再满足 do-while 循环条件退出所有的循环。14.若在定义语句:int a,b,c*p=c;之后,接着执行
33、以下选项中的语句,则能正确执行的语句是_。(分数:2.00)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p); D.scanf(“%d“,p);解析:解析 本题考查的重点是 scanf 函数的用法。选项 A 是错误的,地址表中不是地址变量,而且其个数与格式化字符串所说明的输出参数个数不同;选项 B 是错误的,地址表中不是地址变量;选项 D 是错误的,P 表示地址,不必再在其前加上取地址符。15.若有定义:char*x=“abcdefghi“;,以下选项中正确运用了 strcpy 函数的是_。(分数:2.00)A.char y
34、10;strcpy(y,x4);B.char y10;strcpy(+y,x1);C.char y10,*s;strcpy(s=y+5,x);D.char y10,*s;strcpy(s=y+1,x+1); 解析:解析 字符串复制函数 strcpy 调用形式为:“strcpy(s1,s2)”,其功能为把 s2 所指字符串的内容复制到 s1 所指空间,函数返回 s1 的值,即目的串的首地址。为保证复制的合法性,s1 必须指向一个足够容纳 s2 串的存储空间。16.有以下程序:#includestdio.hint a=1;int fun(int c)static int a=2;c=c+1;ret
35、urn(a+)+c;main()int i,k=0;for(i=0;i2;i+)int a=3;k+=f((分数:2.00)A.;k+=a; 解析:解析 本题考查的重点是对 static 变量以及全局变量的理解。static 变量是函数或文件中的永久变量。本题中 static int a=2 语句定义了一个 static 局部变量,编译程序为其生成永久存储单元,即调用函数 fun 时,其值一直都保存着,而不是使用函数外所赋的值(尽管开头定义了一个同名的全局变量)。在主函数中,for 循环进行两次,第一次循环得 f(3)=3+1+2=6,从而 k+=f(3)=6,第二次循环由于 static局部
36、变量 a 变成了 3,从而 f(3)的值为 7,故 k+=f(3)=13,再执行 k+=a 时,此时 a 的值为全局变量,其值为 1,故 k 的值为 14,选项 A 是正确的。17.有以下程序:#includestdio.hmain()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,for 循环条件为真,8%3=2,不等于 0,则 if 条件表达式为真
37、,执行第一个输出语句,先输出 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-表示式,得 x=2,for 循环条件为真,2%3=2,不等于 0,则
38、 if 条件表达式为真,执行第一个输出语句,先输出 x 的值 2,然后将 x 的值减 1,此时x=1。执行 x-表示式,得 x=0,for 循环条件为假,循环结束。18.为了使模块尽可能独立,要求_。(分数:2.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强解析:解析 在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。19.若整型变量 a、b、c、d 中的值依次为 1、4、3、2。则
39、条件表达式 ab?a:cd?c:d 的值是_。(分数:2.00)A.1 B.2C.3D.4解析:解析 本题的考点是 C 语言的三日运算符“:”。由于 a、b、c、d 的初值依次为 1、4、3、2,对于“ab?a:cd?c:d”表达式,可以看成“(ab)?a:(cd?c:d)”,ab 为真,执行紧随 ab 后的?的表达式,也就是 a。条件表达式的值为 1。20.有以下程序:#includestdio.hmain()int a=1,b=2,c=3,x;x=(ab)c;printf(“%d/n“,x);程序的运行结果是_。(分数:2.00)A.0B.1C.2D.3 解析:解析 本题考查的重点是位运算
40、的操作。a 的二进制为 01,b 的二进制为 10,因此 a-b 结果为二进制数 11,再与 c(二进制为 11)进行操作,从而得二进制数 11,故选项 D 是正确的。21.下列叙述中正确的是_。(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对 解析:解析 软件测试即使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行,调试程序应该由编制源程序的程序员来完成。软件在调试后要进行回归
41、测试,防止引进新的错误。22.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMS D.没有任何关系解析:解析 数据库系统(DBS)是由数据库(DB) 、数据库管理系统(DBMS)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。23.有以下程序:typedef structint b,P;A;void f(A C) /*注意:C 是结构变量名*/int j;c.b+=1;c.p+=2;main()int i;A
42、a=1,2);f((分数:2.00)A.;pri解析:解析 在函数调用变量作为参数传递是进行值传递,在函数中对形参变量的修改不会影响对应的实参变量。本题中定义了一个函数 f(),用变量作为实参,在 main()函数中调用了一次 f()函数,形参进行计算:c.b+=1=1+1=2,c,p 十=2=2+2=4,由于参数传递变量不会影响实参的值,所以 a.b 和 a3.p 还是原来的值。24.有以下程序: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);程序执行后的输出
43、结果是_。(分数:2.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 内层 for 循环语句实现 x=x+2,故外层 for 循环语句单次循环实现 x=x+4,所以程序执行后的输出结果为 x=8。25.有定义语句:char s10;,若要从终端给 s 输入 5 个字符,错误的输入语句是_。(分数:2.00)A.gets(s0);B.scanf(“%s“,s+1);C.gets(s);D.scanf(“%s“,s1); 解析:解析 字符串的输入有两种方式:使用 scanf()函数和使用 get()函数。采用 scanf()函数输入时,输入项为字符串的地址值,输入字符依次放入以这一地
44、址为起点的存储单元中。选项 C 是正确的,输入字符从数组的第 2 个位置开始存放;选项 D 是错误的,s1是字符,不是地址值。gets()的调用形式为:gets(str_adr),其中 str_adr 为存放字符串的首地址。选项 A 中,s0为数组的首地址,选项 C 中,s也为数组的首地址因此选项 A 和 C 都是正确的。26.算法具有五个特性,以下选项中不属于算法特性的是_。(分数:2.00)A.有穷性B.简洁性 C.可行性D.确定性解析:解析 一个算法应该具有以下 5 个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。27.下列数据结构中,能用二分法进行查找的是_。(分数
45、:2.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分法查找只适用于顺序存储的线性表。28.在嵌套使用 if 语句时,C 语言规定 else 总是_。(分数:2.00)A.和之前与其具有相同缩进位置的 if 配对B.和之前与其最近的 if 配对C.和之前与其最近不带 else 的 if 配对 D.和之前的第一个 if 配对解析:解析 C 语言的语法规定:else 子句总是与前面最近的不带 else 的 if 相结合。29.有以下程序:#define P 3void F(int x)return(P*x*x);main()printf(“%d/n“,F(3+5);程序运行后的输出结果是_。(分数:2.00)A.192 B.29C.25D.编译出错解析