1、二级 C语言笔试-73 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下面程序的运行结果是( )。#includecsmain()int i;for(i=1;i5;i+)if(i%3=0)break;printf(%d,i);(分数:2.00)A.123B.12C.23D.123452.使用视图之前,应首先( )。(分数:2.00)A.新建一个数据库B.新建一个数据库表C.打开相关的数据库D.打开相关的数据表3.以下选项中不合法的标识符是( )。(分数:2.00)A.printB.FORC.&aD._004.下面的函数调用语句中 func
2、函数的实参个数是( )。funcf2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);(分数:2.00)A.3B.4C.5D.85.已有定义:int i,a10,*p;,则合法的赋值语句是( )。(分数:2.00)A.p=100;B.p=a5C.p=a2+2D.p=a+2;6.有以下程序:#includeint fun(int a.int b)if(b=0)return a;else return(fun(-a,-b);main()printf(“%d/n“,fun(4,2);程序的运行结果是( )。(分数:2.00)A.1B.2C.3D.47.设变量已正确定义并赋值,以下表
3、达式正确的是( )。(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,x+yD.x=25%5.08.在软件设计中,不属于过程设计工具的是( )。(分数:2.00)A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图9.设有如下程序段:char s20=“Beijing“,*p;p=s;执行 P=S;语句后,以下叙述正确的是( )。(分数:2.00)A.可以用*p 表示 s0B.S数组中元素的个数和 p所指字符串长度相等C.s和 p都是指针变量D.数组 s中的内容和指针变量 p中的内容相同10.在下列关系运算中,不改变关系表中的属性个数但能减少元组个
4、数的是( )。(分数:2.00)A.并B.交C.投影D.笛卡儿乘积11.有以下程序:void f(int b)int i;for(i=2;i6;i+)bi*=2;mainint a10=1,2,3,4,5,6,7,8,9,10,i;f((分数:1.00)_12.表达式 0x13&0x17的值是( )。(分数:1.00)A.0x17B.0x13C.0xf8D.0xec13.下列定义变量的语句中错误的是( )。(分数:1.00)A.int_int;B.double int_;C.char For;D.float US$;14.有以下程序:main()int i,S=0,t=1,2,3,4,5,6,
5、7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(%d/n,s);程序执行后的输出结果是( )。(分数:1.00)A.45B.20C.25D.3615.有以下程序;main()int i,S=0;for(i=1;i10;i+=2)s+=i+1;printf(“%d/n“,s);程序执行后的输出结果是( )。(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和16.在嵌套使用 if语句时,C 语言规定 else总是( )。(分数:1.00)A.和之前与其具有相同缩进位置的 if配对B.和之前
6、与其最近的 if配对C.和之前与其最近的且不带 else的 if配对D.和之前的第一个 if配对17.有以下程序:#include#includetypedef structchar name9;char sex;float score2;STU;void f(STU(分数:1.00)A.STU b=“Zhao“,m,85.0,90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for (i=0;i2;i+)a.scorei=b.scorei;main()STU c=“Qian“,f,95,92;f(c);printf(1%s,%c,%d,%d,c.nam
7、e,c.sex,c.score0,cscore1);程序运行后的输出结果是( )。A) Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,9018.有以下程序:#define f(x)x*xmain()int i;i=f(4+4)/f(2+2);printf(“%d/n“,i);执行后输出结果是( )。(分数:1.00)A.28B.22C.16D.419.若 fp是指向某文件的指针,且已读到文件末尾,则表达式 feof(fp)的返回值是( )。(分数:1.00)A.EOFB.-1C.非零值D.NULL20.以下选项中可作为 C语言合法常量的
8、是( )。(分数:1.00)A.-80.B.-080C.-8e1.0D.-80.0e21.有以下程序:#includestruct stint x,y;data2=1,10,2,20;main()struct st*p=data;printf(“%d,“,p-y);printf(“%d/n“,(+p)-x);程序的运行结果是( )。(分数:2.00)_22.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。(分数:2.00)A.冒泡排序B.选择排序C.快速排序D.归并排序23.有以下程序:typedef structint b,p;A;void f(A C /*C是结构变量名*/
9、int j;c.b+=1;c.p+=2;main()int i;A a=1,2;f((分数:2.00)A.;printf(“%d,%d/n“,a.b,a.p);程序运行后的输出结果是( )。A) 2,3B.2,4C.1,4D.1,224.下列选项中不属于软件生命周期开发阶段任务的是( )。(分数:2.00)A.软件测试B.概要设计C.软件维护D.详细设计25.若要求定义具有 10个 inf型元素的一维数组 a,则以下定义语句中错误的是( )。(分数:2.00)A.#define N 10int aN;B.#define n 5int a 2*n;C.int a 5+5;D.int n=10,a
10、n;26.有以下程序:main()int i,t3=9,8,7,5,5,4,3,2,1;for(i=0;i3;i+)printf(“%d“t2-ii);程序执行后的输出结果是( )。(分数:2.00)A.7 5 3B.3 5 7C.3 6 9D.7 5 127.关系数据库管理系统所管理的关系是( )。(分数:2.00)A.若干个二维表B.一个 DBF文件C.一个 DBC文件D.若干个 DBC文件28.有以下程序;main()int i;for(i=0;i3;i+)switch(i)case 0;printf(%d,i);case 2;printf(%d,i);default;printf(%d
11、,i);程序运行后的输出结果是( )。(分数:2.00)A.022111B.021021C.000122D.01229.下列对于软件测试的描述中正确的是( )。(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则30.以下叙述中,不属于面向对象方法的优点的是( )(分数:2.00)A.可重用性好B.与人类习惯的思维方法一致C.可维护性好D.有助于实现自顶向下、逐步求精31.有以下程序:int a=2;int f(int*(分数:2.00)A.return(*A) +;m
12、ain()int s=0;int a=5;s+=f(&A) ;s+=f(&A) ;printf(“%d/n“,s);执行后输出结果是( )。A) 10B.9C.7D.832.下列叙述中正确的是( )。(分数:2.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关33.设有以下定义:int a=0;double b=1.25;char c=A;#define d 2则下面语句中错误的是( )。(分数:2.00)A.a+;B.b+;C.c+;D.d+;34.
13、有以下程序:main()char a7=“a0/0a0/0“;int i,j;i=sizeof((分数:2.00)A.;j=strlen(A) ;printf(“%d%d/n“,i,j);程序运行后的输出结果是( &nB.7 6C.7 2D.6 235.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的( )。(分数:2.00)A.正当性B.可行性C.确定性D.有穷性36.已知字母 A的 ASCII码值为 65,若变量 kk为 char型,以下不能正确判断出 kk中的值为大写字母的表达式是( )。(分数:2.00)A.kk=A&kk=ZB.!(kk)=A|kk=Z)C.(k
14、k+32)=a&(kk+32)=zD.isalpha(kk)&(kk91)37.若有定义语句:int k 23,*pk3;,则以下语句中正确的是( )。(分数:2.00)A.pk=k;B.pk01=&k12;C.pk=k0;D.pk1=k;38.有以下程序:#includemain()char c1=1,c2=2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车后,以下叙述正确的是( )。(分数:2.00)A.变量 c1被赋予字符 a,c2 被赋予回车符B.程序将等待用户输入第 2个字符C.变量 c1被赋予字符 a,c2
15、中仍是原有字符 2D.变量 c1被赋予字符 a,c2 中将无确定值39.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和( )。(分数:2.00)A.编码设计B.测试阶段C.运行阶段D.物理设计40.有以下程序:#includevoid fun(int a,int b)(int t;f=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“);程序的运行结果是( )。(分数:2.00)A.1,2,3,4,
16、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,5,6,7,8,9,二、填空题(总题数:15,分数:30.00)41.按“先进后出”原则组织数据的数据结构是 1。(分数:2.00)填空项 1:_42.数据结构分为线性结构和非线性结构,带链的队列属于 1。(分数:2.00)填空项 1:_43.一棵二叉树第六层(根结点为第一层)的结点数最多为 1 个。(分数:2.00)填空项 1:_44.在两种基本测试方法中, 1 测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。(分数:2.00)填空项 1:_45
17、.在关系模型中,把数据看成是二维表,每一个二维表称为一个 1。(分数:2.00)填空项 1:_46.为表示关系 xyz 的 c语言表达式是 1。(分数:2.00)填空项 1:_47.有以下程序:main()int a=3,b=4,C=5,d=2;if(ab)if(bc)printf(%d,d+ +1);elseprintf(%d,+d+1);printf(%d/n,d);程序运行后的输出结果是_。(分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。main()int a44=1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18;int i=0,j=0,
18、s=0;while(i+4)if(i=2|i=4)continue;j=0;dos+=aij;j+;while(j4);printf(%d,s);(分数:2.00)填空项 1:_49.有以下程序:main()inf a33,*p,i;P=&a00;for(i=0;i9;i+)pi=i;for(i=0;i3;i+)printf(“%d,a1i);程序运行后的输出结果是_。(分数:2.00)填空项 1:_50.以下程序的输出结果是_。#includemain()int a5=2,4,6,8,10,*p;p=a;p+;printf(“%d“,*p);(分数:2.00)填空项 1:_51.有如下程序:
19、main()int i,a3=2,7,9,15,3,6,1,5,10,b3=0;for(i-0;i3;i+)for(j=0;j3;j+)bi+=aij;printf(“%d“),b1;程序执行后的输出结果是_。(分数:2.00)填空项 1:_52.有以下程序:void change(int k)k0=k5;main()int x10=1,2,3,4,5,6,7,8,9,10,n=0;while(n=4)(change(&xn);n+;for(n=0;n5;n+)printf(%d,xn);printf(“/n“);程序运行后输出的结果是_。(分数:2.00)填空项 1:_53.已知字母 A的
20、ASCII码为 65。以下程序运行后的输出结果是_。main()char a,b;a=A+5-3;b=a+6-2;printf(%d%c/n,ab);(分数:2.00)填空项 1:_54.下面程序的输出结果是_。#includemain()char c9=T,h,a/0,“,y,0,u;printf(“%s/n“,c);(分数:2.00)填空项 1:_55.有以下程序:#includemain()int a=1,2,3,4,y,*p=&a3;-P;y=*p;printf(“y=%d/n“,y);程序的运行结果是_。(分数:2.00)_二级 C语言笔试-73 答案解析(总分:100.00,做题时
21、间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下面程序的运行结果是( )。#includecsmain()int i;for(i=1;i5;i+)if(i%3=0)break;printf(%d,i);(分数:2.00)A.123B.12 C.23D.12345解析:解析 本题考核的知识点是 break语句的应用。本题中 for循环到 i=3而执行 break语句跳出循环,最终只输出 12。2.使用视图之前,应首先( )。(分数:2.00)A.新建一个数据库B.新建一个数据库表C.打开相关的数据库 D.打开相关的数据表解析:解析 使用视图之前需要先打开存有视图的相应数据库。3
22、.以下选项中不合法的标识符是( )。(分数:2.00)A.printB.FORC.&a D._00解析:解析 本题主要考查的是用户标识符的定义。在 C语言中,合法的标识符只能由字母、数字或下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。选项 C)中包含的“&”字符不合法,所以应该选择 C)。4.下面的函数调用语句中 func函数的实参个数是( )。funcf2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);(分数:2.00)A.3 B.4C.5D.8解析:解析 本题考查的是函数的实参。函数在被调用时,传入的实参以逗号分隔,实参可以是一个变量
23、,也可以是一个表达式。在本题中,func()函数传入的参数是被逗号分隔的 3个表达式,它们分别是f2(v1,v2)、(v3,v4,v5)和(v6,max(v7,v8),所以它的实参个数是 3。其中,f2(v1,v2)是一个函数调用;(v3,v4,v5)是一个逗号表达式;(v6,max(v7,v8)也是一个逗号表达式,它里面甚至还包含了一个函数调用但这并不影响它只代表 1个实参这个事实。故本翘应该选择 A)。5.已有定义:int i,a10,*p;,则合法的赋值语句是( )。(分数:2.00)A.p=100;B.p=a5C.p=a2+2D.p=a+2; 解析:解析 本题考核的知识点是指针变量的赋
24、值。本题中定义了一个整型数组 a和一个整型指针变量p。选项 A)中将一个整型数赋值给一个指针变量,C 语言规定,只能将地址赋给指针变量,故选项 A)不正确;选项 B)中 a5为一数组元素,同样不是一个地址,故选项 B)不正确;选项 C)中 a2为一数组元素,同样是一个整型数据,不是个地址,故选项 C)不正确;选项 D)中数组名 a代表数组首地址加 2,代表第三个元素的地址,故选项 D)正确,所以,4 个选项中选项 D)符合题意。6.有以下程序:#includeint fun(int a.int b)if(b=0)return a;else return(fun(-a,-b);main()pri
25、ntf(“%d/n“,fun(4,2);程序的运行结果是( )。(分数:2.00)A.1B.2 C.3D.4解析:解析 本题考查的是递归函数。题目中给出的 fun()函数直接调用了自身,所以是一个递归函数。其功能是,当参数 b为 0时,返回参数 a的值;否则返回 fun(-a,-b)的值。从这里可以看出,当 b不断递减时,a 也不断递减,直到 b为 0时返回 a的值,那么 a递减的总值就是 b原来的值。所以,整个递归函数的作用其实是返回 a-b的值,故应该选择 B)。7.设变量已正确定义并赋值,以下表达式正确的是( )。(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=
26、y+z+5,x+y D.x=25%5.0解析:解析 本题主要考查的是 C语言中一些运算符的简单应用。在 C语言中,要求等号的左边是一个“左值”,即为一个变量或者能够代表一个变量的表达式(例如*p),而选项 A)中,后面的等号左边是“y*5”,不符合“左值”的要求,所以不正确。%是整数求余运算,所以要求两个运算分量均为整数,所以选项 B)和 D)都不正确。故本题应该选择 C)。8.在软件设计中,不属于过程设计工具的是( )。(分数:2.00)A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图 解析:解析 数据流图 DFD是结构化分析方法最主要的一种图形工具,不属于过程设计工具。9.设
27、有如下程序段:char s20=“Beijing“,*p;p=s;执行 P=S;语句后,以下叙述正确的是( )。(分数:2.00)A.可以用*p 表示 s0 B.S数组中元素的个数和 p所指字符串长度相等C.s和 p都是指针变量D.数组 s中的内容和指针变量 p中的内容相同解析:解析 本题主要考查的是字符数组、字符串和字符指针的一些概念。数组元素个数,是在定义数组的时候确定的,本题的 s数组元素个数是 20。而字符串长度,是从该字符串的第 1个字符开始,一直到/0字符为止,所历经的字符个数,/0不算在内。所以本题 p所指字符串(“Beijina“)的长度为 7。因此选项 B)的叙述不正确。s
28、是数组名,而不是指针变量,因此选项 C)不正确。数组 s中除了包含字符串“Beijing”外,还包含其后的 20个以内字节的内容,而指针变量 p中包含的只是数组 s的首地址。因此选项 D)的说法也不正确。10.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是( )。(分数:2.00)A.并B.交 C.投影D.笛卡儿乘积解析:解析 本题考查数据库的关系运算。两个关系的并运算是指将第一个关系的元组加到第二个关系中,生成新的关系。因此,并运算不改变关系表中的属性个数,也不能减少元组个数。两个关系的交运算是包合同时出现在第一个和第二个关系中的元组的新关系。因此,交运算不改变关系表中的属性
29、个数,但能减少元组个数。投影是一元关系操作。投影操作选取关系的某些属性,这个操作是对一个关系进行垂直分割,消去某些属性,并重新安排属性的顺序,再删除重复的元组。因此,投影运算既可以减少关系表中的属性个数,也可以减少元组个数。两个关系的笛卡儿乘积会增加属性个数。11.有以下程序:void f(int b)int i;for(i=2;i6;i+)bi*=2;mainint a10=1,2,3,4,5,6,7,8,9,10,i;f((分数:1.00)_解析:解析 本题主要考查的是:数组名用作函数参数。数组名用作函数参数的情况类似于指针,属于传地址,故对形参数组元素的修改会同时修改实参。本题中,f()
30、函数通过一个 for循环语句,将传入数组的元素从下标 2到下标 5每个自乘以 2。因此,调用结束时,数组 a中的内容为1,2,6,8,10,12,7,8,9,1012.表达式 0x13&0x17的值是( )。(分数:1.00)A.0x17B.0x13 C.0xf8D.0xec解析:解析 本题考查的是对位与运算符&的理解。0x13 的二进制数是 00010011,0x17 的二进制数是00010111,由位与运算规则,得到结果为 00010011,即 0x13。13.下列定义变量的语句中错误的是( )。(分数:1.00)A.int_int;B.double int_;C.char For;D.f
31、loat US$; 解析:解析 本题考查 C语言中标识符的概念。用户标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与 C语言关键字相同。选项 D)所定义的浮点型变量名中包含了字符$,不属于上述范畴,因此选项 D)是错误的定义语句。14.有以下程序:main()int i,S=0,t=1,2,3,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(%d/n,s);程序执行后的输出结果是( )。(分数:1.00)A.45B.20C.25 D.36解析:解析 本题考查的是数组名的概念。当数组名出现在表达式中时,它类似于一个指针常量,该
32、指针始终指向该数组第 1个元素的位置,它的指向不能被改变。但它又与普通的指针常量有所区别:对数组名使用 sizeof运算符时。得到整个数组所占内存的大小;而对于指针常量,在 TC中返回的始终是 2(TC中,一个指针占 2个字节的内存)。所以,要获得数组 t的第 i个元素的内容,既可以使用常规的 ti表达式,也可以将数组名 t看作一个指针常量,使用表达式*(t+i)来获取数组 t的第 i个元素的内容。在本题中,for 循环会循环 5次,循环变量 i从 0开始每次增加 2,所以 s=t0+t2+t4+t6+t8=25。15.有以下程序;main()int i,S=0;for(i=1;i10;i+=
33、2)s+=i+1;printf(“%d/n“,s);程序执行后的输出结果是( )。(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和 解析:解析 本题考核的知识点是 for循环语句和复合赋值+=运算符的应用。本题中,i 赋初值为 1,并对其每次进行加 2操作,即 i每次均为 1-10之间的奇数,s+=i+1,即 s=s+i+1,相当于 s等于原来的 s每次加上 1-10之间的偶数,直到 i10 不成立。当 i=1时,s=0+1+1=2;当 i=3时,s=2+3+1=2+4;当i=5时,s=2+4+5+1=2+4+6
34、;当 i=7时,s=2+4+6+7+1;2+4+6+8;当 i=9时,s=2+4+6+8+9+1=2+4+6+8+10;当 i=11时,i10 不成立,结束循环。16.在嵌套使用 if语句时,C 语言规定 else总是( )。(分数:1.00)A.和之前与其具有相同缩进位置的 if配对B.和之前与其最近的 if配对C.和之前与其最近的且不带 else的 if配对 D.和之前的第一个 if配对解析:解析 本题考查了 if语句的嵌套。在嵌套的 jf语句中,else 总是与它上面最近的且不带 else的 if配对。因此本题的正确答案为选项 C)。17.有以下程序:#include#includety
35、pedef structchar name9;char sex;float score2;STU;void f(STU(分数:1.00)A.STU b=“Zhao“,m,85.0,90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for (i=0;i2;i+)a.scorei=b.scorei;main()STU c=“Qian“,f,95,92;f(c);printf(1%s,%c,%d,%d,c.name,c.sex,c.score0,cscore1);程序运行后的输出结果是( )。A) Qian,f,95,92 B.Qian,m,85,90C.Zh
36、ao,f,95,92D.Zhao,m,85,90解析:解析 本题考查的是结构体变量用作函数参数。结构体变量用作函数参数时是传值调用,即在函数内部无论怎样修改形参结构体变量的内容,都不会影响到调用函数时传递给函数的实参结构体变量。因此,本题的川函数没有任何实际作用,它改变不了什么内容。故本题的结果是定义结构体 c时给出的初始值,应该选择 A)。18.有以下程序:#define f(x)x*xmain()int i;i=f(4+4)/f(2+2);printf(“%d/n“,i);执行后输出结果是( )。(分数:1.00)A.28 B.22C.16D.4解析:解析 本题考核的知识点是宏定义的简单应
37、用。本题中首先将所有的宏替换掉,则表达式为i=4+4*4+4/2+2*2+2,故最后输出的 i的值为 28。所以,4 个选项中选项 A)符合题意。19.若 fp是指向某文件的指针,且已读到文件末尾,则表达式 feof(fp)的返回值是( )。(分数:1.00)A.EOFB.-1C.非零值 D.NULL解析:解析 本题考查的是文件指针 feof的运用。当文件读到结尾时,feof(fp)为非零值,否则为 0。20.以下选项中可作为 C语言合法常量的是( )。(分数:1.00)A.-80. B.-080C.-8e1.0D.-80.0e解析:解析 本题考查的是 C语言中整型常量与实型常量的部分表示方法
38、。选项 A)用的是整型常量的十进制表示法,是正确的。以 0或-0 开头的整数是八进制数表示法,八进制数的原则是“逢八进一”,它只可能包含 0-7这 8个符号,故选项 B)是错误的。选项 C)和 D)都是实型常量的指数表示法,其规则是用字母 e(或 E)将一个实数的小数部分和指数部分分隔开。字母 e(或 E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故选项 C)和 D)都不正确。所以,4 个选项中选项 A)符合题意。21.有以下程序:#includestruct stint x,y;data2=1,10,2,20;main()struct st*p=data;pr
39、intf(“%d,“,p-y);printf(“%d/n“,(+p)-x);程序的运行结果是( )。(分数:2.00)_解析:解析 本题考查的是结构体指针。题目一开始定义了一个结构体 st,并同时声明了一个包含两个st结构的结构体数组 dafa,且初始化为1,10,2,2022.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。(分数:2.00)A.冒泡排序 B.选择排序C.快速排序D.归并排序解析:解析 从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序
40、方法。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((分数:2.00)A.;printf(“%d,%d/n“,a.b,a.p);程序运行后的输出结果是( )。A) 2,3B.2,4C.1,4D.1,2 解析:解析 本题主要考查的是:结构体用作函数参数。结构体变量用作函数参数时,是将实参复制给被调用函数的形参,即传值。因此,本题中的川函数对传入参数的修改不会影响到外面的实参,即 a的内容还是(1,2),故本题应该选择 D)。24.下列选项中不属于软件
41、生命周期开发阶段任务的是( )。(分数:2.00)A.软件测试B.概要设计C.软件维护 D.详细设计解析:解析 软件生命周期由软件定义、软件开发和软件维护三个时期组成。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。25.若要求定义具有 10个 inf型元素的一维数组 a,则以下定义语句中错误的是( )。(分数:2.00)A.#define N 10int aN;B.#define n 5int a 2*n;C.int a 5+5;D.int n=10,an; 解析:解析 本题考查的是一组数组的定义。C 语言规定,在
42、定义数组时数组名后的方括号中必须是常量表达式,不能包含变量。区此,选项 D)中用变量 n来定义数组的大小是错误的。故应该选择 D)。26.有以下程序:main()int i,t3=9,8,7,5,5,4,3,2,1;for(i=0;i3;i+)printf(“%d“t2-ii);程序执行后的输出结果是( )。(分数:2.00)A.7 5 3B.3 5 7 C.3 6 9D.7 5 1解析:解析 本题考查的是 for循环与二维数组的定义和引用。当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第 1行的第 1个元素起,直到第 1行满,接着代表第 2行、第 3行的每一个元素。程序
43、中的循环将循环 3次,循环变量 i的值分别是 0、1、2,所以 3次循环中输出的数分别是:t2-00、t2-11、t2-22,即 t20、t11、t02,所以最后输出的结果为 3 5 7。故应该选择 B)。27.关系数据库管理系统所管理的关系是( )。(分数:2.00)A.若干个二维表 B.一个 DBF文件C.一个 DBC文件D.若干个 DBC文件解析:解析 在关系数库中,一个表就是一个关系,关系数据库管理系统管理的关系就是多个二维表。28.有以下程序;main()int i;for(i=0;i3;i+)switch(i)case 0;printf(%d,i);case 2;printf(%d
44、,i);default;printf(%d,i);程序运行后的输出结果是( )。(分数:2.00)A.022111B.021021C.000122 D.012解析:解析 本题考核的知识点是 for循环和 switch语句的混合应用。程序中 for循环了三次,第一次i=0,执行 switch语句中(zase0;分支,直到遇到 defaulc语句,退出 switch,这里共执行了三个输出语句分别输出 0,0,0;第二次循环 i=1,switch 语句中没有匹配的分支,故只执行 default语句输出1,退出 switch语句;第三次循环 i=2,从 switch语句中的 case 2;开始执行,共
45、执行了两个输出语句输出 2、2。最后输出的结果为 000122。所以,4 个选项中选项 C)符合题意。29.下列对于软件测试的描述中正确的是( )。(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。可见选项 C)的说法正确。30.以下叙述中,不属于面向对象方法的优点的是( )(分数:2.00)A.可重用性好B.与人类习惯的思维方法一致C.可维护性好D.有助于实现自顶向下、逐步求精 解析:解析 面向对象程序设计方法并不强调自顶向下的构造程序,而常常是自底向上的,而自顶向下、逐步求精是结构化程序设计的特点。31.有以下程序:int a=2;int f(int*(分数:2.00)A.return(*A) +;main()int s=0;int a=5;s+=f(&A) ;s+=f(&A) ;printf(“%d/n“,s);执行后输出结果是( )。A) 10B.9C.7 D