1、全国计算机等级考试等级考试真题库1全国计算机等级考试等级考试真题库之选择题(17)1.下列叙述中正确的是A) 一个算法的空间复杂度大,则其时间复杂度也必定大B) 一个算法的空间复杂度大,则其时间复杂度必定小C) 一个算法的时间复杂度大,则其空间复杂度必定小D) 算法的时间复杂度与空间复杂度没有直接关系参考答案:D【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。2.下列叙述中正确的是A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B) 循环队列中的元素个数随队头指针的变化而动态变化C)
2、 循环队列中的元素个数随队尾指针的变化而动态变化D) 以上说法都不对参考答案:A【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A正确。3.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为A) 219B) 229C) 230D) 231参考答案:B【解析】二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=7
3、9,总结点数为n0+n1+n2=80+70+79=229,答案为B。4.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为A) 9B) 10C) 45D) 90参考答案:C【解析】冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45 ,选C。5.构成计算机软件的是A) 源代码B) 程序和数据C) 程序和文档全国计算机等级考试等级考试真题库2D) 程序、数据及相关文档参考答案:D【解析】软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。6.软件生命周期可分为
4、定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是A) 测试B) 设计C) 可行性研究D) 实现参考答案:C【解析】开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计3个阶段,实施则包括编码和测试两个阶段,C不属于开发阶段。7.下面不能作为结构化方法软件需求分析工具的是A) 系统结构图B) 数据字典(DD)C) 数据流程图(DFD图)D) 判定表参考答案:A【解析】结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。8.在关系模型中,每一个二维表称为一个A) 关系B) 属性C) 元组D) 主码(键)参考答案:A【解析】关系模型采用二维表来
5、表示,即每个二维表称为一个关系。9.若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A) 一对一B) 一对多C) 多对一D) 多对多参考答案:B【解析】A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所以为一对多联系。10.全国计算机等级考试等级考试真题库3A) 选择B) 投影C) 交D) 并参考答案:D【解析】关系T中的元素与关系R和关系S中不同元素的总和,因此为并操作。11.以下叙述中正确的是A) C语言程序所调用的函
6、数必须放在main 函数的前面B) C语言程序总是从最前面的函数开始执行C) C语言程序中main函数必须放在程序的开始位置D) C语言程序总是从main函数开始执行参考答案:D【解析】C语言所调用的函数可以放在调用它的函数前,也可以放在调用它的函数后,所以A错误C 语言程序总是从main函数开始执行, 所以B错误main函数的位置可以放在开始,也可以放在中间,也可以放在最后, 所以C错误12.C语言程序中,运算对象必须是整型数的运算符是A) sum = pad = 5; pAd = +sum, pAd+, +pad;printf(“%dn“, pad );全国计算机等级考试等级考试真题库4程
7、序的输出结果是A) 5B) 6C) 7D) 8参考答案:B【解析】C语言区分大小写,pad与pAd 是两个不同的变量首先将5 赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=+sum,此时pAd为6,sum 也为6, 然后计算pAd+,pAd的值变为 7,+pad,pad的值变为6,所以选择B14.有以下程序#include main() int a=3; a+=a-=a*a;printf( “%dn“, a );程序的输出结果是A) 0B) 9C) 3D) -12参考答案:D【解析】首先计算a*a结果为9,执行a=a-9,a的值为-6, 然后执行a+=a,即a=a+a=
8、-6+(-6), 所以值为-1215.sizeof( double )是A) 一个整型表达式B) 一个双精度型表达式C) 一个不合法的表达式D) 一种函数调用参考答案:A【解析】sizeof是C语言中的一个操作符(operator), 不是函数调用,简单的说其作用就是返回一个对象或者类型所占的内存字节数所以选择A16.有以下程序#include main()int a=2, c=5; 全国计算机等级考试等级考试真题库5printf( “a=%d,b=%dn“, a,c );程序的输出结果是A) a=2,b=5B) a=%2,b=%5C) a=%d,b=%dD) a=%d,b=%d参考答案:C【
9、解析】C语言中用“%“打印输出字符 “%“,所以%d,输出为%d两个普通字符,而不是格式控制符“%d“的含义, 所以打印结果为C17.若有定义语句:char a=82;则变量aA) 说明不合法B) 包含1个字符C) 包含2个字符D) 包含3个字符参考答案:A【解析】定义语句:char a=82;定义字符变量a,但是赋初值时却给赋值字符常量,因此A选项正确。18.有以下程序#include main()char c1=A, c2=Y; printf( “%d, %dn“, c1,c2 );程序的输出结果是A) 输出格式不合法,输出出错信息B) 65,89C) 65,90D) A,Y参考答案:B【
10、解析】本题重点考察字符变量的相关知识。分别给字符型变量a和b分别赋值为A和Y,即A和Y的ASSCII码,因此输出结果为65,89,因此B选项正确。19.若变量已正确定义for( x=0,y=0; ( y!=99 for( x=3; xmain() int a, b; for( a=1,b=1; a=20) break;if(b % 3=1) b=b+3; continue; b=b-5;printf(“%dn“,a);程序的输出结果是A) 10B) 9C) 8D) 7参考答案:B【解析】首先注意for循环的控制条件 当b=20或者a100则跳出for循环也即b22时跳出循环,结束程序。所以b从
11、1增加到22 ,有(22-1)/3=7,所以a=1+7=8. 因此B选项正确。23.有以下程序#include void fun( int x, int y, int *c, int *d ) *c = x+y; *d = x-y; main() int a=4, b=3, c=0, d=0;fun ( a, b, printf( “%d %dn“ , c, d );程序的输出结果是A) 0 0B) 4 3C) 3 4D) 7 1参考答案:D【解析】主函数中首先初始化整型变量a、b、c、d分别为4、3 、0、0。调用函数fun,将实参传递给形参。在fun函数内,*c=7 、*d=1。返回主函数
12、,最后输出 7和1。因此D选项正确。全国计算机等级考试等级考试真题库824.有以下程序#include void fun( int *p, int *q ) int t;t = *p; *p = *q; *q=t; *q = *p;main() int a=0, b=9;fun ( printf( “%d %dn“ , a,b );程序的输出结果是A) 9 0B) 0 0C) 9 9D) 0 9参考答案:C【解析】主函数中定义整型变量a、b,分别赋值0和9 。将 a和b的地址传递给指针变量p和q,函数fun 中将 a和b的值互换后,又将a的值赋给b。返回主函数,最后输出9和9 。因此C选项正确
13、。25.有以下程序#include main() int a = 2,4,6,8,10 , x, *p, y=1;p = for( x=0; xmain() int i, x33 = 1,2,3,4,5,6,7,8,9 ;for( i=0; ichar fun( char *c ) if ( *c=A ) *c -= A-a;return *c;main() char s81, *p=s;gets( s );全国计算机等级考试等级考试真题库10while( *p )*p =fun( p );putchar( *p );p+;printf( “n“);若运行时从键盘上输入OPEN THE DOO
14、R,程序的输出结果是A) OPEN THE DOORB) oPEN tHE dOORC) open the doorD) Open The Door参考答案:C【解析】字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。首先使指针变量p指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。fun函数的功能是,将字符串中的大写字母变小写字母。将处理结果返回主函数,主函数通过putchar()字符输出函数进行输出。因此C选项正确。29.设有定义语句:char *aa2= “abcd“,“ABCD“; 则以下叙述正确的是A) aa0存放了字符串“abcd“的首地
15、址B) aa数组的两个元素只能存放含有4 个字符的一维数组的首地址C) aa数组的值分别是字符串“abcd“ 和“ABCD“D) aa是指针变量,它指向含有两个元素的字符型数组参考答案:A【解析】本题中定义了一个指针数组,数组中存放的是字符指针,aa数组的两个元素分别包含了5个字符,所以可以存放 5个字符的一维数组的首地址,所以 B选项错误。aa数组的值是指向那两个字符串的字符指针,而不是那两个字符串,所以C选项错误。aa本身是一个指向两个字符指针的指针,所以D选项错误。30.有以下程序#include int fun( char *s ) char *p=s;while (*p !=0 )
16、p+;return ( p-s );main() printf( “%dn“, fun( “goodbey!“ ) ); 全国计算机等级考试等级考试真题库11程序的输出结果是A) 0B) 6C) 7D) 8参考答案:C解析】本题主要考查了函数定义及调用,以及while循环语句,执行 fun函数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,所以本题答案为8.31.有以下程序#include int fun( int n ) int a;if( n=1 ) return 1;a = n + fun( n-1 );return ( a );main() printf
17、( “%dn“, fun( 5 ) ); 程序的输出结果是A) 9B) 14C) 10D) 15参考答案:D【解析】考查函数的递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)= 5+( 4+( 3+(2+ fun(1) ) ) )=15,所以答案为D 选项。32.有以下程序#include int d=1;void fun( int p ) int d=5;d += p+;printf(“%d “, d );main() int a=3;fun( a );d += a+;全国计算机等级考试等级考试真题库12printf(“%dn“,d);程序的输出结果是A) 8 4B) 9 6
18、C) 9 4D) 8 5参考答案:A【解析】本题主要考查局部变量和全局变量的区别,题目中函数之外定义的d为全局变量,函数fun内定义的d为局部变量,所以执行fun 函数后,打印出 8,执行完d += a+;后d变为4,所以答案为A。33.有以下程序#include int fun(intA) int b=0;static int c=3;a =( c+,b+);return ( a );main() int a = 2, i, k;for( i=0; imain() char c25= “6934“, “8254“ ,*p2 ;int i, j, s=0;全国计算机等级考试等级考试真题库13f
19、or( i=0; i0 a /= SQR(k+m)/SQR(k+m);printf(“%dn“,a);程序的输出结果是A) 0B) 1C) 9D) 10参考答案:B【解析】本题考查宏定义,宏定义只是做个简单的替换,执行SQR(k+m)/SQR(k+m)=k+m*k+m/ k+m*k+m=15/2, a/= SQR(k+m)/SQR(k+m)的结果为1,选项B正确。36.有以下程序#include main() char x=2, y=2, z;z=( y1 );printf( “%dn“,z );程序的输出结果是全国计算机等级考试等级考试真题库14A) 1B) 0C) 4D) 8参考答案:B解
20、析】本题考查位运算1为1,二者与一下为0,所以B选项正确。37.有以下程序#include struct S int a;int b; ;main() struct S a, *p=a.a=99;printf( “%dn“ , _ );程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A) a.aB) *p.aC) p-aD) (*p).a参考答案:B【解析】本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,p为指针,*p为结构体变量,那么*p.a 可以表示为结构体中成员a的数据。38.有以下程序#include #include void fun( double *p1
21、,double *p2,double *s) s = (double *)calloc( 1,sizeof(double) );*s = *p1 + *( p2+1 );main() double a2 = 1.1, 2.2 , b2 = 10.0, 20.0 , *s=a;fun( a, b, s );printf( “%5.2fn“, *s);程序的输出结果是A) 21.10B) 11.10C) 12.10D) 1.10参考答案:D全国计算机等级考试等级考试真题库15【解析】本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1.10,选项D正
22、确。39.A) p=p-next; s -next=p; p-next=s;B) s -next=0; p=p-next; p-next=s;C) p=p-next; s -next=p-next; p-next=s;D) p=(*p).next; (*s ).next=(*p).next; (*p).next=s;参考答案:A【解析】本题考查向链表中插入节点,A选项语句错误,不能够实现在链表末尾插入。40.若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是A) EOFB) 非0C) -1D) 0参考答案:D【解析】本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符) ,eof函数值为非零值,否则为0 ,所以选项D正确。