2010年9月计算机等级考试二级C笔试试题(Word版)
- 格式:doc
- 大小:44.00 KB
- 文档页数:12
2010年9月计算机二级C语言笔试试题及答案公布(含解析)一、选择题(1)答案:(C)解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。
所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
(2)答案:(B)解析:链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
故链式存储结构下的线性表便于插入和删除操作。
(3)答案:(B)解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。
所以出栈时一定是先出D,再出C,最后出A。
(4)答案:(A)解析:从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。
当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法,故本题答案应该为选项A)。
(5)答案:(D)解析:滥用GOTO 语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。
(6)答案:(D)解析:软件工程包括3个要素,即方法、工具和过程。
方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。
(7)答案:(A)解析:软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
(8)答案:(C)解析:关系模型较之格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。
(9)答案:(C)解析:数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。
全国计算机等级考试二级C语言机试真题2010年9月(总分:100.00,做题时间:90分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充fun函数,该函数的功能是:判断一个年份是否为闰年。
例如,1900年不是闰年,2004是闰年。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
[试题源程序]#include<stdio.h>#include<conio.h>int fun(int n)int fiag=0;if(n%4==0)if( (1) )fiag=1;if( (2) )flag=1;return (3) ;void main()int year;clrscr();printf("Input the year:");scanf("%d", &year);if(fun(year))printf("%d is a leap year./n", year);elseprintf("%d is not a leap year./n", year);(分数:30.00)填空项1:__________________ (正确答案:[1] n%100 !=0[2] n%400==0[3] flag)解析:[解析] 题的关键是要知道闰年的定义,如果年份能被4整除但不能被100整除,或者能被400整除,这两种情况满足之一都是闰年。
填空1:显然此处属于第一种情况,能被4整除但不能被100整除。
所以这里应该填n%100!=0,只有满足这个条件,flag才能被赋值1。
填空2:此处属于第二种情况,能被400整除,所以应该填n%400==0。
填空3:从程序中可以知道,当满足以上两种情况之一时,flag就被赋值1,显然flag属于标志单元。
再看主函数中对fun()函数的调用,显然需要返回的值不是真就是假,即函数fun()中标志单元flag的内容。
2010年9月全国计算机等级考试二级C语言笔试试题班级:姓名:一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%b D)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0 C )字符斜杠:‘\’D)字符串:"\007"(16)表达式a+=a-=a=9的值是A)9B)_9C)18D)0(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是A)a<>b+c B)ch=getchar()C)a==b+c D)a++(18)有以下程序#include<stdio.h>main(){int a=1,b=0;if(!a)b++;else if(a==0)if(a)b+=2;else b+=3;printf(”%d\n”,b);}程序运行后的输出结果是A)0B)1C)2D)3(19)若有定义语句int a, b;double x;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0{case 0: a++; break; {case 0: a++; break;case 1: b++; break; case 1: b++; break;default : a++; b++; default : a++; b++;} }C)switch((int)x%2)D)switch((int)(x)%2){case 0: a++; break; {case 0.0: a++; break;case 1: b++; break; case 1.0: b++; break;default : a++; b++; default : a++; b++;} }(20)有以下程序#include <stdio.h>main(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(21)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”Y=%d\n”,Y);}程序执行后的输出结果是A)y=0B)y= -1C)y=1D)while构成无限循环(22)有以下程序#include<stdio .h>main(){char s[」=”rstuv";printf(”%c\n”,*s+2);}程序运行后的输出结果是A)tuv B)字符t的ASCII码值C)t D)出错(23)有以下程序#include<stdio.h>#include<string.h>main(){char x[]=”STRING”;x[0」=0;x[1]=’\0’;x[2」=’0’;printf(”%d %d\n”,sizeof(x),strlen(x));}程序运行后的输出结果是A)6 1B)7 0C)6 3D)7 1(24)有以下程序#include<stdio.h>Int f(int x);main(){int n=1,m;m=f(f(f(n)));printf(”%d\n”,m);}int f(int x){return x*2;}程序运行后的输出结果是A)1B)2C)4D)8(25)以下程序段完全正确的是A)int *p; scanf("%d",&p); B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf("%d",p); D)int k, *p:; *p= &k; scanf(“%d”,p);(26)有定义语句:int *p[4];以下选项中与此语句等价的是A)int p[4];B)int **p;C)int *(p「4」);D)int (*p)「4」; (27)下列定义数组的语句中,正确的是A)int N=10;B)#define N 10int x[N]; int x[N];C)int x[0..10]; D)int x[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a[5]=﹛0﹜;B)int b[]={0,0,0,0,0}; C)int c[2+3];D)int i=5,d[i];(29)有以下程序#include<stdio.h>void f(int *p);main(){int a[5]={1,2,3,4,5},*r=a;f(r);printf(”%d\n”;*r);}void f(int *p){p=p+3;printf(”%d,”,*p);}程序运行后的输出结果是A)1,4B)4,4C)3,1D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# include<stdio.h>void fun(int*a;int n){int i、j、k、t;for (i=0;i<n一1;1+=2){k=i;‘for(j=i;j<n;j+=2)if(a[j]>a〔k])k=j;t=a〔i];a〔i]=a[k];a〔k]=t;}}main(){int aa「10」={1、2、3、4、5、6、7},i;fun(aa、7);for(i=0,i<7; i++)printf(”%d,”,aa[i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7 C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1 (31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是A)if(strcmp(s2,s1)==0)ST;B)if(sl==s2)ST;C)if(strcpy(s l ,s2)==1)ST;D)if(sl-s2==0)ST;(32)以下不能将s所指字符串正确复制到t所指存储空间的是A)while(*t=*s){t++;s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s);D)for(i=0,j=0;t[i++]=s[j++];);(33)有以下程序(strcat函数用以连接两个字符串)#include<stdio.h>#include<string .h>main(){char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;strcat(a,b);printf(”%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJK B)ABCDIJK C)IJK D)EFGIJK(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>void fun(char*p){int i=0;while (p[i]){if(p[i]==’ ’&&islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;i++;}}main(){char s1[100]=”ab cd EFG!”;fun(s1);printf(”%s\n”,s1);}程序运行后的输出结果是A)ab cd EFG!B)Ab Cd EFg!C)aB cD EFG!D)ab cd EFg!(35)有以下程序#include<stdio.h>void fun(int x){if(x/2>1)fun(x/2);printf(”%d”,x);}main(){fun(7);printf(”\n”);}程序运行后的输出结果是A)1 3 7B)7 3 1C)7 3D)3 7(36)有以下程序#include<stdio.h>int fun(){static int x=1;x+=1;return x;}main(){int i;s=1;for(i=1;i<=5;i++)s+=fun();printf(”%d\n”,s);}程序运行后的输出结果是A)11B)21C)6D)120(37)有以下程序#inctude<stdio.h>#include<stdlib.h>Main(){int *a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3(38)有以下程序#include<stdio.h>main(){int s,t,A=10;double B=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6(39)若有以下语句Typedef struct S{int g; char h;}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量(40)有以下程序#include<stdio.h>main(){short c=124;c=c_______;printf(“%d\n”、C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2 B)|248 C)&0248 D)<<I二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
2010年3月二级c语言笔试真题及答案试题:一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分。
共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。
(1) 下列叙述中正确的是AA)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D) 对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2) 算法的时间复杂度是指DA)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(3) 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于系统软件的是BA)编辑软件B)操作系统C)教务管理系统D)浏览器(4) 软件(程序)调试的任务是AA)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5) 数据流程图(DFD图)是CA)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6) 软件生命周期可分为定义阶段,开发阶段和维护阶段。
详细设计属于BA)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7) 数据库管理系统中负责数据模式定义的语言是AA)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8) 在学生管理的关系数据库中,存取一个学生信息的数据单位是DA)文件B)数据库C)字段D)记录(9) 数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的BA)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段(10) 有两个关系R和T如下:R TA B Ca 1 2b 2 2c 3 2A B Cc 3 2d 3 2则由关系R得到关系T的操作是A选择B)投影C)交D)并(11) 以下叙述正确的是BA)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可以作为单独文件形式存在(12) 以下关于C语言的叙述中正确的是BA)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以再使用之前的任何位置进行定义C)在C语言算术的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示(13) 以下C语言用户标示符中,不合法的是DA)_1 B)AaBc C)a_b D)a--b(14) 若有定义:double a=22;int i=0,k=18;则不符合C语言规定的赋值语句是CA)a=a++,i++ B)i=(a+k)<=(i+k) C)i=a%11 D)i=!a(15)#include <stdio.h>Void main(){char a,b,c,d;scanf(”%c%c”,&a,&b);c=getchar(); d=getchar();printf(”%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,<CR>代表回车,注意:回车是一个字符)12<CR>34<CR>则输出结果是:CA、1234B、12C、12D、123 3416、以下关于C语言数据类型使用的叙述中错误的是:DA、若要准确无误的表示自然数,应使用整数类型。
2010 年 9 月全国计算机等级考试二级笔试试卷公共基础知识和 C++语言程序设计(考试时间 90 分钟,满分 100 分)一、选择题(每小题 2 分,共 70 分)(1)下列叙述中正确的是A )线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B )线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C )线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D )上述三种说法都不对 (2)下列叙述中正确的是A )在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B )在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C )在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D )上述三种说法都不对 (3)软件测试的目的是A )评估软件可靠性 C )改正程序中的错误 (4)下面描述中,不属于软件危机表现的是 A )软件过程不规范 C )软件质量难以控制B )发现并改正程序中的错误 D )发现程序中的错误B )软件开发生产率低 D )软件成本不断提高 (5)软件生命周期是指A )软件产品从提出、实现、使用维护到停止使用退役的过程B )软件从需求分析、设计、实现到测试完成的过程C )软件的开发过程D )软件的运行维护过程 (6)面向对象方法中,继承是指A )一组对象所具有的相似性质 C )各对象之间的共同性质B )一个对象具有另一个对象的性质 D )类之间共享属性和操作的机制 (7)层次型、网状型和关系型数据库划分原则是A )记录长度 C )联系的复杂程度B )文件的大小 D )数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 A )一对一 B )一对多 C )多对多 D )多对一 (9)数据库设计中反映用户对数据要求的模式是A )内模式B )概念模式C )外模式D )设计模式 (10)有三个关系 R 、S 和 T 如下:RST则由关系 R 的操作是 A )自然连接 B )交 C )投影D )并A)在函数原型中不必声明形参类型B)函数的实参和形参共享内存空间C)函数形参的生存期与整个程序的运行期相同D)函数的形参在函数被调用时获得初始值(12)下列关于对象初始化的叙述中,正确的是A)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化(13)下列关于基类和派生类关系的叙述中,正确的是A)每个类最多只能有一个直接基类B)派生类中的成员可以访问基类中的任何成员C)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员,还可以定义新的成员(14)下列关于赋值运算符“=”重载的叙述中,正确的是A)赋值运算符只能作为类的成员函数重载B)默认的赋值运算符实现了“深层复制”功能C)重载的赋值运算符函数有两个本类对象作为形参D)如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符(15)下列关于模板的叙述中,正确的是A)如果一个类中存在纯虚函数,这个类就是类模板B)函数模板不能有形式参数表C)类模板是一种参数化类型的类,是类的生成器D)类模板中不能包含构造函数(16)下列关于C++预定义流对象的叙述中,正确的是A)cin 是C++预定义的标准输入流对象B)cin 是C++预定义的标准输入流类C)cout 是C++预定义的标准输入流对象D)cout 是C++预定义的标准输入流类(17)下列选项中,正确的C++标识符是A)6_group B)group~6 C)age+3 D)_group_6(18)下列选项中,正确的C++表达式是A)counter++3 B)element3+ C)a+ = b D)'a' = b(19)下列循环语句中有语法错误的是A)int i; for(i=l; i<10; i++) cout<< '*';B)int i, j; for(i=l, j=0; i<10; i++, j++) cout<< '*';C)int i=0; for(; i<10; i++) cout<< '*';D)for(1) cout<< '*';(20)下列定义语句中,错误的是A)int px*; B)char *acp[10];C)char (*pac)[10]; D)int (*p)();(21)下列函数原型声明中,错误的是A)int function( int m,int n);B)int function( int,int);C)int function( int m=3,int n);D)int function( int &m,int &n);(22)若MyClass 为一个类,执行“MyClass a[4], *p[5];”语句时会自动调用该类构造函数的次数是A)2 B)5 C)4 D)9(23)若在表达式y/x 中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为A)x.operator/(y) B)operator/(x,y)C)y.operator/(x) D)operator/(y,x)(24)若要重载+、=、<<、==和[]运算符,则必须作为类成员重载的运算符是A)+和= B)=和<< C)==和<< D)=和[](25)有函数模板声明和一些变量定义如下:则下列调用中,错误的是A)sum<double, double, double>(d1, d2);B)sum<double, double>(dl, d2)jC)sum<double>(dl, d2);D)sum(dl, d2);(26)有如下语句序列:char str[10]; cin>>str;当从键盘输入"I love this game"时,str 中的字符串是A)"I love this game" B)"I love thi"C)"I love" D)"I"(27)有如下程序:#include <iostream>#include <cmath>using std::cout;class point{public:friend double distance(const Point &p); //p 距原点的距离Point(int xx=0, int yy=0) : x(xx), y(yy){} //①Private:int x, y;};double distance(const point &p){ //②return sqrt(p.x*p.x+p.y*p.y);}int main()(Point p1(3,4);cout<<distance(p1); //③return 0;}下列叙述中正确的是A)程序编译正确C)程序编译时语句②出错B)程序编译时语句①出错D)程序编译时语句③出错(28)有如下程序:#include <iostream>using namespace std;class CD{public:~CD() { cout<<'C';}private:char name[80];};int main() {CD a, *b, d[2];return 0;}运行时的输出结果是A)CCCC B)CCC C)CC D)C(29)某类中有一个无参且无返回值的常成员函数Show,则正确的Show 函数原型是A)const void Show(); B)void const Show();C)void Show() const; D)void Show(const);(30)若已定义了类Vehicle,则下列派生类定义中,错误的是A)class Car : vehicle{/*类体略*/};B)class Car : public car{/*类体略*/};C)class Car : public Vehicle{/*类体略*/);D)class Car : virtual public Vehicle{/*类体略*/};(31)有如下程序:#include <iostream>public:void setTitle(char* str){ strcpy(title, str);} protected:char type[10] ;private:char title[20];};Class Jazz : public Music{public:void set(char* str){strcpy(type, "Jazz"); //①strcpy(title,str); //②}};下列叙述中正确的是A)程序编译正确C)程序编译时语句②出错B)程序编译时语句①出错D)程序编译时语句①和②都出错(32)有如下程序:#include <iostream>using namespace std;class Instrument {public:virtual void Display()=0;};Class Piano : public Instrument{public:void Display(){ /*函数体程序略*/ }};int main(){Instrument s;Instrument *p=0;//…;return 0;}下列叙述中正确的是A)语句“Insturment *p=0;”编译时出错B)语句“Instrument s;”编译时出错C)类Piano 中的Display 函数不是虚函数D)类Instrument 是一个虚基类(33)有类定义如下:class Type{public:Type(int i=0);Type operator - (int);friend Type operator + (Type, Type);private:int val;};若有对象定义Type c1;则下列语句序列中,错误的是A)Type(3)+c1; B)cl+Type(3);C)3-c1; D)c1-3;(34)有如下程序:#include <iostream>#include <iomanip>cout<<setw(10)<<setfill('x')<<setprecision(8)<<left;cout<<12.3456793<< <<98765;return 0;}若程序的输出是12.345679x98765xxxxx,则划线处缺失的部分是A)setw(10) B)setfill('x')C)setprecision(8) D)right(35)有如下程序:#include <iostream>using namespace std;class Book{public:Book(char *t=""){ strcpy(title,t); }Private:char title[40];};Class Novel : public Book{public:Novel(char *t="" ) : Book(t){}Char* category() const{ return "文学"; }};int main(){Book *pb;pb=new Novel();cout<<pb->Category();return 0;}若程序运行时输出结果是“文学”,则划线处缺失的语句是A)char* Category();B)char* Category() const;C)virtual char* Category() const;D)virtual char* Cateqory() const=0;二、填空题(每空 2 分,共30 分)(1)一个栈的初始状态为空。
2010年9月全国计算机等级考试二级C语言笔试试题及答案一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))(1)下列选项中不属于软件生命周期开发阶段任务的是A)详细设计B)概要设计C)软件维护D)软件测试(2)树是结点的集合,它的根结点数目是A)有且只有1 B)1或多于1 C)0或1 D)至少2(3)在面向对象方法中,实现信息隐蔽是依靠A)对象的继承B)对象的多态C)对象的封装D)对象的分类(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和A)语句成分B)变量成分C)对象成分D)传输成分(5)冒泡排序在最坏情况下的比较次数是A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2(6)下列叙述中,不属于软件需求规格说明书的作用的是A)作为确认测试和验收的依据B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)便于用户、开发人员进行理解和交流D)便于开发人员进行需求分析(7)下列叙述中错误的是A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个函数可单独作为一个C程序文件存在(8)下列不属于软件工程的3个要素的是A)方法B)过程C)工具D)环境(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是A)每个C程序文件中都必须有一个main()函数B)在C程序的函数中不能定义另一个函数C)C程序可以由一个或多个函数组成D)在C程序中main()函数的位置是固定的(11)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(12)下列定义变量的语句中错误的是A)double int_; B)int _int; C)char For D)float USS(13)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用(14)以下选项中,合法的一组C语言数值常量是(15)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义(16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf("%d",&p); B)scanf("%d%d%d",a,b,c);C)scanf("%d",p); D) scanf("%d",a,b,c);(17) 有以下程序main(){int x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d \n",a,b,c);程序输出的结果是A)***a=25,b=13,c=19 B)***a=26,b=14,c=19C)### a=25,b=13,c=19 D)### a=26,b=14,c=19(19)下列程序段的输出结果是int a=1234;float b=123.456;double c=12345.54321;printf("-,%2.1f,%2.1f",a,b,c);A)无输出B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5(20)有以下程序main(){int a=0,b=0;a=10; /*给a赋值b=20; 给b赋值*/printf("a+b=%d\n",a+b); /* 输出计算结果*/}程序运行后输出结果是A)30 B)a+b=30 C)a+b=0 D)出错(21)若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是#includemain(){ char c;do{ switch(c=getchar()){ case ′a′:case ′A′:case ′e′:case ′E′:case ′i′:case ′I′:case ′o′:case ′O′:case ′u′:case ′U′:v1+=1;default:v0+=1;v2+=1;}} while(c!=′\n′);printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12 (22) 有以下程序#includemain(){int y=9;for( y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)732 B)433 C)852 D)874(23) 设有以下程序段int x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的D)程序段执行无限次(24)有以下程序fun(int x,int y){return(x+y);}main(){int a=1,b=2,c=3,sum;sum=fun((a++,b++b,a+b),c++);printf("%d\n",sum);}执行后的输出结果是A)5 B)7 C)8 D)3(25)执行下面的程序段后,变量k中的值为int k=3, s[2];A)不定值B)35 C)31 D)20(26)以下叙述中错误的是A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL(27)以下程序段的描述,正确的是x=-1;do{x=x*x;} while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误(28)有以下程序fun(int x,int y){static int m=0,i=2;i+=m+1;m=i+x+y; return m;}main(){int j=1,m=I,k;k=fun(j,m); printf("%d",k);k=fun(j,m); printf("%d\n",k)}执行后的输出结果是A)5,5 B)5,11 C)11,11 D)11,5(29)有以下程序fun(int x){int p;if(x==0║x= =1) return(3);p=x-fun(x=2);retum p;}main(){ prinf("%d\n",fun(7));}执行后的输出结果是A)7 B)3 C)3 D)0(30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A)p向高地址移了一个字节B)p抽高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价(31)有以下程序{int a=1,b=3,c=5;int *p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1 B)2 C)3 D)4 (32)下列程序执行后的输出结果是void func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){ int i=0; func1(i); printf("\n");}A)hello B)hel C)hlo D)hlm (33)在下述程序中,判断i>j共执行的次数是main(){ int i=0, j=10, k=2, s=0;for (;;){ i+=k;if(i>j){ printf("%d",s);break;} s+=i;}}A)4 B)7 C)5 D)6 (34)以下函数返回a所指数组中最大值所在的下标值fun(int *a,int n){ int i,j=0,p;p=j;for(i=j;iif(a[i]>a[p]);return(p);在下划线处应填入的内容是A)i=p B)a[p]=a[i]C)p=j D)p=i(35)下列程序执行后的输出结果是main(){ int a[3][3], *p,i;p=&a[0][0];for(i=1; i<9; i++)p[i]=i+1;printf("%d\n",a[1][2]);}A)3 B)6 C)9 D)随机数(36) 有以下程序#includevoid fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/ {int t,i,j;for(i=0;ifor(j=i+1;jif (a}main(){int c[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for (i=0;i<10;i++) printf("%d,",c);printf("\n");}程序运行的结果是A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,(37)以下程序的输出结果是#includevoid prt (int *x, int*y, int*z){ printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){ int a=10,b=40,c=20;prt (&a,&b,&c);prt (&a,&b,&c);}A)11,42, 3112,22,41B)11,41,2012,42,20C)11,21,4011,21,21D)11,41,21(38) 有以下程序:#includevoid fun(char *t,char *s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){char ss[10]=”acc”,aa[10]=”bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序运行结果是A) accxyy , bbxxyy B) acc, bbxxyyC) accxxyy,bbxxyy D) accbbxxyy,bbxxyy(39) 有以下程序#includemain(){ FILE *fp; int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n); fclose(fp);}程序运行后的输出结果是A)20 30 B)20 50 C)30 50 D)30 20 (40) 有以下程序main(){int x[3][2]={0},I;for(I=0;I<3;I++) scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若运行时输入:246<回车>,则输出结果为A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6 (41)有以下程序int add(int a,int b){return+b};}{int k,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);(41)有以下程序#include <string.h>main(int argc,char *argv[]){int i=1,n=0;while(i<arge){n=n+strlen(argv[i]);i++;}printf(“%d\n”,n);}该程序生成的可执行文件名为:proc.exe。
2010年9月全国计算机二级C语言笔试试题一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对解析:A错误,链式存储结构和顺序存储结构是不同的数据结构所以在内存当中所占用的空间也是不相同的。
B正确,因为链式存储结构由于要保存前后件的地址所以相同的数据元素用链式存储要比顺序存储占用内存空间大。
C错误,参考B的解析D错误。
(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对解析:A错误,栈作为一个顺序存储结构,向栈中添加一个元素只需要操作栈顶指针就行了B错误,因为栈是一个“先进后出”的顺序存储结构,不管是出栈还是入栈都是只需要操作栈顶指针就行了,不需要操作栈底指针的。
C正确。
D错误。
(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程解析:软件生命周期是从提出、实现、使用维护到停止使用退役的过程称为软件生命周期,选项A正确,选项B局限指软件的开发过程,是错误的。
(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制解析:继承是使用已有的类定义作为基础建立新类的定义技术。
全国计算机等级考试二级C++真题2010年9月(总分100,考试时间120分钟)一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
1. 下列叙述中正确的是A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D. 上述三种说法都不对2. 下列叙述中正确的是A. 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B. 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D. 上述三种说法都不对3. 软件测试的目的是A. 评估软件可靠性B. 发现并改正程序中的错误C. 改正程序中的错误D. 发现程序中的错误4. 下面描述中,不属于软件危机表现的是A. 软件过程不规范B. 软件开发生产率低C. 软件质量难以控制D. 软件成本不断提高5. 软件生命周期是指A. 软件产品从提出、实现、使用维护到停止使用退役的过程B. 软件从需求分析、设计、实现到测试完成的过程C. 软件的开发过程D. 软件的运行维护过程6. 面向对象方法中,继承是指A. 一组对象所具有的相似性质B. 一个对象具有另一个对象的性质C. 各对象之间的共同性质D. 类之间共享属性和操作的机制7. 层次型、网状型和关系型数据库划分原则是A. 记录长度B. 文件的大小C. 联系的复杂程度D. 数据之间的联系方式8. 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A. 一对一B. 一对多C. 多对多D. 多对一9. 数据库设计中反映用户对数据要求的模式是A. 内模式B. 概念模式C. 外模式D. 设计模式10. 有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A. 自然连接B. 交C. 投影D. 并11. 下列关于函数参数的叙述中,正确的是A. 在函数原型中不必声明形参类型B. 函数的实参和形参共享内存空间C. 函数形参的生存期与整个程序的运行期相向D. 函数的形参在函数被调用时获得初始值12. 下列关于对象初始化的叙述中,正确的是A. 定义对象的时候不能对对象进行初始化B. 定义对象之后可以显式地调用构造函数进行初始化C. 定义对象时将自动调用构造函数进行初始化D. 在一个类中必须显式地定义构造函数实现初始化13. 下列关于基类和派生类关系的叙述中,正确的是A. 每个类最多只能有一个直接基类B. 派生类中的成员可以访问基类中的任何成员C. 基类的构造函数必须在派生类的构造函数体中调用D. 派生类除了继承基类的成员,还可以定义新的成员14. 下列关于赋值运算符“=”重载的叙述中,正确的是A. 赋值运算符只能作为类的成员函数重载B. 默认的赋值运算符实现了“深层复制”功能C. 重载的赋值运算符函数有两个本类对象作为形参D. 如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符15. 下列关于模板的叙述中,正确的是A. 如果一个类中存在纯虚函数,这个类就是类模板B. 函数模板不能有形式参数表C. 类模板是一种参数化类型的类,是类的生成器D. 类模板中不能包含构造函数16. 下列关于C++预定义流对象的叙述中,正确的是A. cin是C++预定义的标准输入流对象B. cin是C++预定义的标准输入流类C. cout是C++预定义的标准输入流对象D. cout是C++预定义的标准输入流类17. 下列选项中,正确的C++标识符是A. 6_groupB. group~6C. age+3D. _group_618. 下列选项中,正确的C++表达式是A. counter++3B. element3+C. a+=bD. 'a'=b19. 下列循环语句中有语法错误的是A. int i; for(i=1; i<10;i++)cout<<‘*‘;B. int i,j;for(i=1,j=0;i<10;i++,j++)cout<<‘*‘;C. int i=0;for(;i<10;i++)cout<<‘ *‘;D. for(1)cout<<‘*‘;20. 下列定义语句中,错误的是A. int px*;B. char*acp[10];C. char(*pac)[10];D. int(*p)();21. 下列函数原型声明中,错误的是A. int fnction(int m,int n);B. int function(int,int);C. int function(int m=3,int n);D. int function(int &m,int&n);22. 若MyClass为一个类,执行“MyClass a[4],*p[5];”语句时会自动调用该类构造函数的次数是A. 2B. 5C. 4D. 923. 若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为A. x.Operator/(Y)B. operator/(x,Y)C. Y.operator/(x)D. operator/(y,x)24. 若要重载+、=、<<、=和[]运算符,则必须作为类成员重载的运算符是A. +和=B. =和<<C. ==和<<D. =和[]25. 有函数模板声明和一些变量定义如下:template <class Tl,class T2,class T3>T1 sum (T2,T3);double dl,d2;则下列调用中,错误的是A. sum<double,double,double>(dl,d2);B. sum<double;double>(d1,d2);C. sum<double>(d1,d2);D. sum(d1,d2);26. 有如下语句序列:char str[10];cin>>str;当从键盘输入”I love this game”时,str 中的字符串是A. "I love this game"B. "I love thi"C. "I love"D. "I"27. 有如下程序:#include<iostream>#include<cmath>using std::cout;class Point{public:friend double distance(const Point &p); //p距原点的距离Point (int xx=0,int yy=0):x (xx),Y(YY){}//①private:Int x,Y;};double distance(const Point &p){//②return sqrt(p.x*p.x+p.Y*p.Y);}int main(){Point p1(3,4);cout<<distance(p1);//③return 0;}下列叙述中正确的是A. 程序编译正确B. 程序编译时语句①出错C. 程序编译时语句②出错D. 程序编译时语句③出错28. 有如下程序:#include<iostream>using namespace std;class CD {public:~CD(){cout<<’C’;}private:char name[80];};int main(){CD a,*b,d[2];return 0;}运行时的输出结果是A. CCCCB. CCCC. CCD. C29. 某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是A. const void Show();B. void const Show();C. void Show()const;D. void Show(const);30. 若已定义了类V ehicle,则下列派生类定义中,错误的是A. class Car:Vehicle{/*类体略*/},B. class Car:public Car{/*类体略*/};C. class Car:public Vehicle{/*类体略*/};D. class Car:virtual public Vehicle{/*类体略*/};31. 有如下程序:#include<iostream>using namespace std;class Music {public:void setTitle(char*str){strcpy(title,str);}protected:char type[10];private:char title[20];};class Jazz:public Music{public:void set(char* str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列叙述中正确的是A. 程序编译正确B. 程序编译时语句①出错C. 程序编译时语句②出错D. 程序编译时语句①和②都出错32. 有如下程序:#include<iostream>using namespace std;class Instrument {public:virtual void Display()=0;};class Piano:public Instrument {public:void Display(){/*函数体程序略*/}};int, main(){Instrument s;Instrument*p=0;//...;return 0;}下列叙述中正确的是A. 语句“Insturment *p=0;”编译时出错B. 语句“Instruments;”编译时出错C. 类Piano中的Display函数不是虚函数D. 类Instrumen七是一个虚基类33. 有类定义如下:气class Type {public:Type (int i=0);Tvpe operator -(int);friend Type operator + (Type, Type );private:int val;若有对象定义Type cl;则下列语句序列中,错误的是A. Type(3)+c1;B. cl+Type(3);C. 3-cl;D. c1-3;34. 有如下程序:#include<iostream>#include<iomanip>using namespace std;_int main(){Cout<<setw(10)<<setfill(’x’)<<setprecision(8)<<left;Cout<<12.3456793<<_______<<98765;return 0;}若程厚的输出是12.345679x98765xxxxx,则划线处缺失的部分是A. setw(10)B. setfill('x')C. setprecision(8)D. right35. 有如下程序:#include<iostream>using namespace std;class Book{public:Book(char* t=""){strcpy(titie,t);}_____________________________private:Char title[40];};class Novel:public Book{public:Novel(char*t=""):B00K (t){}char*Category()const {return” "文学" }};int main(){Book*pb;pb=new Novel();Cout<<pb->Category();return 0;}若程序运行时输出结果是“文学”,则划线处缺失的语句是A. char* Category();B. char*Category()const;C. virtual char*Category()const;D. virtual char*Category()const=0;二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】-【15】序号的横线上,答在试卷上不得分。
1、软件生命周期中的活动不包括A、软件维护B、市场调研C、软件测试D、需求分析参考答案:B2、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的系统的系能需求B、制定软件集成测试计划 D、需求规格说明书审评参考答案:C3、在黑盒测试方式中,设计测试用例的主要根据是A、程序外部功能B、程序内部逻辑C、程序数据结构D、程序流程图参考答案:A4、在软件设计中不使用的工具是A、系统结构图B、程序流程图C、PAD图D、数据流图(DFD图)参考答案:D5、有以下程序#include <sthio.h>Main(){int s=0,n;For (n=0;n<3;n<++){switch(s){ case 0;Case 1;s+=1;Case 2;s+=2;break;Case 3;s+3;Case 4;s+=4;}printf(("%d\n",s);}}程序运行后的结果是A、1,2,4B、1,3,6C、3,10,14D、3,6,10 参考答案:C6、若k是int类型变量,且有以下for语句For(k=-1;k<0;k++) printf(****\n");下面关于语句执行情况的叙述中正确的是A、循环体执行一次B、循环体执行两次C、循环体一次也不执行D、构成无限循环参考答案:A7、有以下程序#include <sthio.h>Main(){char A,B,C;B='1';C='A'For(A=0;A<6;A++){if(A%2) putchar(B+A);Else putchar(C+A);}}程序运行后输出的结果是A、1B3D5FB、 ABCDFEC、 A2C4E6D、参考答案:C8、设有如下定义语句Int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A、*(k+2)B、 k+2C、*k+2D、*k+=2参考答案:A9、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。
2010年9月全国计算机二级C++笔试试题:文字版一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)下列关于函数参数的叙述中,正确的是A)在函数原型中不必声明形参类型B)函数的实参和形参共享内存空间C)函数形参的生存期与整个程序的运行期相向D)函数的形参在函数被调用时获得初始值(12)下列关于对象初始化的叙述中,正确的是A)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化(13)下列关于基类和派生类关系的叙述中,正确的是A)每个类最多只能有一个直接基类B)派生类中的成员可以访问基类中的任何成员C)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员,还可以定义新的成员(14)下列关于赋值运算符“=”重载的叙述中,正确的是A)赋值运算符只能作为类的成员函数重载B)默认的赋值运算符实现了“深层复制”功能C)重载的赋值运算符函数有两个本类对象作为形参D)如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符(15)下列关于模板的叙述中,正确的是A)如果一个类中存在纯虚函数,这个类就是类模板B)函数模板不能有形式参数表C)类模板是一种参数化类型的类,是类的生成器D)类模板中不能包含构造函数(16)下列关于C++预定义流对象的叙述中,正确的是A)cin是C++预定义的标准输入流对象B)cin是C++预定义的标准输入流类C)cout是C++预定义的标准输入流对象D)cout是C++预定义的标准输入流类(17)下列选项中,正确的C++标识符是A)6_groupB)group~6C)age+3D)_group_6(18)下列选项中,正确的C++表达式是A)counter++3 B)element3+ C)a+=b D)…a…=b(19)下列循环语句中有语法错误的是A)int i; for(i=1; i<10;i++)cout<<…*…;B)int i,j;for(i=1,j=0;i<10;i++,j++)cout<<…*…;C)int i=0;for(;i<10;i++)cout<<… *…;D)for(1)cout<<…*…;(20)下列定义语句中,错误的是A)int px*;B)char*acp[10];C)char(*pac)[10];D)int(*p)();(21)下列函数原型声明中,错误的是A)int fnction(int m,int n);B)int function(int,int);C)int function(int m=3,int n);D)int function(int &m,int&n);(22)若MyClass为一个类,执行“MyClass a[4],*p[5];”语句时会自动调用该类构造函数的次数是A)2 B)5 C)4 D)9(23)若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为A)x.Operator/(Y)B)operator/(x,Y)C)Y.operator/(x)D)operator/(y,x)(24)若要重载+、=、<<、=和[]运算符,则必须作为类成员重载的运算符是A)+和=B)=和<<C)==和<<D)=和[](25)有函数模板声明和一些变量定义如下:template <class Tl,class T2,class T3>T1 sum(T2,T3);double dl,d2;则下列调用中,错误的是A)sum<double,double,double>(dl,d2);B)sum<double;double>(d1,d2);C)sum<double>(d1,d2);D)sum(d1,d2);(26)有如下语句序列:char str[10];cin>>str;当从键盘输入”I love this game”时,str中的字符串是A)"I love this game"B)"I love thi"C)"I love"D)"I"(27)有如下程序:#include<iostream>#include<cmath>using std::cout;class Point{public:friend double distance(const Point &p); //p距原点的距离Point(int xx=0,int yy=0):x (xx),Y(YY){}//①private:Int x,Y;};double distance(const Point &p){//②return sqrt(p.x*p.x+p.Y*p.Y);}int main(){Point p1(3,4);cout<<distance(p1);//③return 0;}下列叙述中正确的是A)程序编译正确B)程序编译时语句①出错C)程序编译时语句②出错D)程序编译时语句③出错(28)有如下程序:#include<iostream>using namespace std;class CD{public:~CD(){cout<<‟C‟;}private:char name[80];};int main(){CD a,*b,d[2];return 0;}运行时的输出结果是A)CCCC B)CCC C)CC D)C(29)某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是A)const void Show();B)void const Show();C)void Show()const;D)void Show(const);(30)若已定义了类Vehicle,则下列派生类定义中,错误的是A)class Car:Vehicle{/*类体略*/},B)class Car:public Car{/*类体略*/};C)class Car:public Vehicle{/*类体略*/};D)class Car:virtual public Vehicle{/*类体略*/};(31)有如下程序:#include<iostream>using namespace std;class Music{public:void setTitle(char*str){strcpy(title,str);}protected:char type[10];private:char title[20];};class Jazz:public Music{public:void set(char* str){strcpy(type,"Jazz");//①strcpy(title,str);//②}};下列叙述中正确的是A)程序编译正确一B)程序编译时语句①出错C)程序编译时语句②出错D)程序编译时语句①和②都出错(32)有如下程序:#include<iostream>using namespace std;class Instrument{public:virtual void Display()=0;};class Piano:public Instrument{public:void Display(){/*函数体程序略*/}};int, main(){Instrument s;Instrument*p=0;//...;return 0;}下列叙述中正确的是A)语句“Insturment *p=0;”编译时出错B)语句“Instrumen ts;”编译时出错C)类Piano中的Display函数不是虚函数D)类Instrumen七是一个虚基类(33)有类定义如下:气class Type {public:Type (int i=0);Tvpe operator -(int);friend Type operator + (Type, Type );private:int val;若有对象定义Type cl;则下列语句序列中,错误的是A)Type(3)+c1;B)cl+Type(3);C)3-cl;D)c1-3;(34)有如下程序:#include<iostream>#include<iomanip>using namespace std;_int main(){Cout<<setw(10)<<setfill(‟x‟)<<setprecision(8)<<left;Cout<<12.3456793<<_______<<98765;return 0;}若程厚的输出是12.345679x98765xxxxx,则划线处缺失的部分是A)setw(10) B)setfill('x') C)setprecision(8) D)right(35)有如下程序:#include<iostream>using namespace std;class Book{public:Book(char* t=""){strcpy(titie,t);}_____________________________private:Char title[40];};class Novel:public Book{public:Novel(char*t=""):B00K (t){}char*Category()const {return” "文学" }};int main(){Book*pb;pb=new Novel();Cout<<pb->Category();return 0;}若程序运行时输出结果是“文学”,则划线处缺失的语句是A)char* Category();B)char*Category()const;C)virtual char*Category()const;D)virtual char*Category()const=0;二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】-【15】序号的横线上,答在试卷上不得分。