2010年全国计算机等级考试二级C++模拟试题及答案(9)
编辑推荐:
2010年全国计算机二级考试各科模拟试题冲刺专题
全国计算机二级考试C++试题练习汇总
全国计算机等级考试二级C++语言程序设计标准预测试卷汇总
笔试部分
一、选择题
1.根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成( )
A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.线性结构和非线性结构
D.内部结构和外部结构
【参考答案】 C
2.在下列几种排序方法中,要求内存量最大的是( )
A.插入排序 B.选择排序 C.快速排序 D.归并排序
【参考答案】 D
3.下列不属于软件调试技术的是( )
A.强行排错法 B.集成测试法 C.回溯法 D.原因排除法
【参考答案】 B
4.软件复杂性度量的参数包括( )
A.效率 B.规模 C.完整性 D.容错性
【参考答案】 B
5.数据库系统的核心是( )
A.数据库 B.数据库管理系统 C.数据库模型 D.软件工具
【参考答案】 B
6.最简单的交换排序方法是( )
A.快速排序 B.选择排序
C.堆排序 D.冒泡排序
【参考答案】 D
7.线性表的顺序存储结构和线性表的链式存储结构分别是( )
A.顺序存取的存储结构、顺序存取的存储结构
B.随机存取的存储结构、顺序存取的存储结构
C.随机存取的存储结构、随机存取的存储结构
D.任意存取的存储结构、任意存取的存储结构
【参考答案】 B
8.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示( )
A.模块之间的调用关系 B.程序的组成成分
C.控制程序的执行顺序 D.数据的流向
【参考答案】 A
9.一个关系中属性个数为1时,称此关系为( )
A.对应关系 B.单一关系 C.一元关系 D.二元关系
【参考答案】 C
10.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )
A.可重用性差 B.安全性差 C.非持久性 D.冗余性
【参考答案】 D
11.下列选中不全是C++关键字的是( )
A.const,break,default
B.long,void,using
C.virtual,extern,include
D.try,throw,this
【参考答案】 C
12.在32位的计算机中,一个char型数据所占的内存长度的字节是( )
A.4 B.1 C.2 D.8
【参考答案】 B
13.有如下程序:
#include″iostream.h″
void main()
{ int x=1,a=0,b=0;
switch(x) {
case 0:b++;
case 1:a++;
case 2:a++;b++; }
cout<<″a=″<
该程序的输出结果是( )
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
【参考答案】 A
14.若有说明int a[3][4];,则a数组元素的非法引用是( )
A.a[0][2*1] B.a[1][3]
C.a[4-2][0] D.a[0][4]
【参考答案】 D
15.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )
A.函数调用可以作为独立的语句存在
B.函数调用可以无返回值
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参
【参考答案】 D
16.以下类定义中可能会引起错误的语句是( )
class A
{ public:
~A(){ } //1
int i; //2
private:
int j; //3
A(int i){i++;} //4 };
A.1 B.2 C.3 D.4
【参考答案】 D
17.下列描述中错误的是( )
A.派生类可以作为基类派生其他的子类
B.派生类继承基类的所有数据成员
C.派生类可以有多个基类
D.派生类不能继承一些函数成员
【参考答案】 B
18.下列运算符中哪些是不能够被重载的?( )
A..,.*,->*,::,?: B.++,--,new,delete,==
C.sizeof,new,delete,++,-- D.sizeof,new,delete,+,-
【参考答案】 A
19.下列关于函数模板实参不能省略的情况说明不正确的是( )
A.从模板函数实参表获得的信息有矛盾
B.需要获得特定类型的返回值,而不管参数的类型如何
C.虚拟类型参数没有出现在模板函数的形参表中
D.函数模板不含有常规形参
【参考答案】 D
20.表达式10>5&&6%3的值是( )
A.-1 B.非零值 C.0 D.1
【参考答案】 C
21.以下函数调用语句中含有参数个数是( )
excc((v1,v2),(v2,v3,v4),v6);
A.3 B.4 C.5 D.6
【参考答案】 A
22.下列程序段的输出结果是( )
#include
void fun(fun *x,int *y)
{ cout<<*x<<*y;
*x=3;
*y=4; }
void main()
{ int x=1,y=2;
fun(&y,&x);
cout< A.2143 B.1212 C.1.4 D.2112 【参考答案】 A 23.下列程序的输出结果是( ) #include void main() { char *str=″12123434″; int x1=0,x2=0,x3=0,x4=0,i; for(i=0;str[i]!=′\0′;i++) switch(str[i]) { case′1′:x4++; case′2′:x3++; case′3′:x2++; case′4′:x1++;〗 } cout< A.8,6,4,1 B.8,6,3,2 C.8,8,4,1 D.8,6,4,2 【参考答案】 D 24.每个C++程序中都必须有且仅有一个( ) A.类 B.预处理命令 C.主函数 D.语句 【参考答案】 C 25.设有int x=11;,则表达式(x++*2/3)的值是( ) A.7 B.8 C.11 D.12 【参考答案】 A 26.对表达式for(表达式1;;表达式3)可理解为( ) A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3) C.for(表达式1;表达式3) D.for(;;表达式3) 【参考答案】 B 27.有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是( ) A.*p+9 B.*(p+8) C.*p+=9 D.p+8 【参考答案】 B 28.以下对C++语言函数的有关描述中,正确的是( ) A.在C++语言中调用函数,只能把实参的值传给形参,形参的值不能传送给实参 B.C++语言函数既可以嵌套定义又可以递归调用 C.函数必须无返回值,否则不能使用函数 D.函数必须有返回值,返回值类型不定 【参考答案】 A 29.拷贝构造函数的参数一般是( ) A.某对象名 B.某对象成员名 C.某对象的引用名 D.指向对象的指针名 【参考答案】 C 30.下面这个程序的结果是( ) #include class A { private: int a; public: void seta();int geta();}; void A::seta() { a=1;} int A::gate() { return a;} class B { private: int a; public: void seta();int geta();}; void B::seta() {a=2;} int B::geta() {return a;} class C:public A,public B { private: int b; public: void display();}; void C::display() { int b=geta(); cout<
void main() C c; c.seta(); c.display();} A.1 B.2 C.随机输出1或2 D.程序有错 【参考答案】 D 31.对于模板定义关键字class和typename说法不正确的是( ) A.程序中的class并不能都替换为typename B.class和typename都可互相替换 C.程序中的typename都能替换为class D.程序中的部分class可以替换为typename 【参考答案】 B 32.以下程序的输出结果是( ) #include long fun(int n) { long s; if(n==1||n==2)s=2; else s=n-fun(n-1); return s; } void main() { cout< A.1 B.2 C.3 D.4 【参考答案】 A 33.有如下程序 #include void main() { char ch[2][5]={″6937″,″8254″},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>′\0′;j+=2) s=10*s+p[i][j]-′0′; cout< 该程序的输出结果是( ) A.69825 B.63825 C.6385 D.693825 【参考答案】 C 34.以下程序的输出结果是( ) #include void main() { char x=040; cout<<(x<<1);} A.100 B.80 C.64 D.32 【参考答案】 C 35.对以下说明语句的正确理解是( ) int a[10]={6,7,8,9,10}; A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10] D.因为数组长度与初值的个数不相同,所以此语句不正确 【参考答案】 B 二、填空题 1.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【1】。 【参考答案】 【1】时间复杂度和空间复杂度 2.可以把具有相同属性的一些不同对象归类,称为【2】。 【参考答案】 【2】对象类 3.由关系数据库系统支持的完整性约束是指【3】和参照完整性。 【参考答案】 【3】实体完整性 4.软件结构是以【4】为基础而组成的一种控制层次结构。 【参考答案】 【4】模块 5.数据库保护分为:安全性控制、【5】、并发性控制和数据的恢复。 【参考答案】 【5】完整性控制 6.在C++语言的面向对象程序设计框架中,【6】是程序的基本组成单元。 【参考答案】 【6】类 7.以下程序的输出结果是【7】。 #include void fun() { static int a=0; a+=2; cout<
void main() { int cc; for(cc=1;cc<4;cc++) fun(); cout< 【参考答案】 【7】2 4 6 8.以下程序的输出结果是【8】。 #include unsigned fun(unsigned num) { unsigned k=1; do{k*=num%10;num/=10;}while(num); return k; } void main() { unsigned n=26; cout< 【参考答案】 【8】12 9.C++语言中的多态性是在编译时通过【9】和模板体现的,在运行时是通过【10】体现的。 【参考答案】 【9】CCCCCC 【10】虚函数 10.执行下列语句后,c3中的值为【11】 int c1=1,c2=2,c3;c3=1.0/c2*c1; 【参考答案】 【11】0 11.以下程序的输出结果是【12】。 #include void main() { char s[]=″abcdef″;s[3]=′\0′; cout< 【参考答案】 【12】adc 12.常数据成员和静态数据成员在使用前共同的要求是要进行【13】。 【参考答案】 【13】初始化 13.表达式x.operator+(y.operator++(0))还可以写成【14】。 【参考答案】 【14】x+y++或x+(y++) 14.构造函数是和【15】同名的函数。 【参考答案】 【15】类 上机部分 一、改错题 使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为: classBase classD1 classD2 classD3 finBase 源程序文件kt10_1.cpp清单如下: #include classBase { public: Base(){cout<<"classBase"< voidf(){cout<<"finBase"< classD1:virtualpublicBase { public: D1(){cout<<"classD1"< voidf(){cout<<"finD1"< /**********found**********/ classD2:publicBase { public: D2(){cout<<"classD2"< /**********found**********/ classD3::publicD1,publicD2 { public: D3(){cout<<"classD3"< voidmain() { D3d; /**********found**********/ d.f(); } 【参考答案】 (1)将class D2:public Base 改为:class D2:virtual public Base (2)将class D3::public D1,public D2 改为:class D3:public D1,public D2 (3)将d.f();改为:d.Base::f(); 【试题解析】 (1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一; (2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表; (3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。 二、简单应用题 请编写一个函数inlinelongsum(intn),用递归函数完成运算:sum(n)=1*1+2*2+???+n*n,递归表达式为sum(n)=sum(n-1)+n2。 注意:部分源程序已存在文件kt10_2.cpp中。 请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。 文件kt10_2.cpp的内容如下: #include inlinelongsum(intn) { } voidmain() { intn; cout<<"输入n:"; cin>>n; cout<<"结果为:"< 【参考答案】 inline long sum(int n) { if(n==1) return 1; else return n*n+sum(n-1); } 【试题解析】 本题考查对递归函数掌握的熟练程度。递归的终止条件为n=1时,值为1。 三、综合应用题 使用VC6打开考生文件夹下的工程kt10_3,此工程包含一个源程序文件kt10_3.cpp,其中定义了用于表示雇员信息的CEmployee类与表示公司信息的Company类,但这两个类的定义并不完整。请按要求完成下列操作。 (1)定义Cemployee类的私有数据成员name(大小为50的字符数组)和pay(double型数据),分别用于记录雇员姓名和月薪。请在注释“//**1**”之后添加适当的语句。 (2)完成Company类默认构造函数的定义,该构造函数将n值赋值给私有成员num,并完成指针emp所指的n个Cemployee对象空间的申请,请在注释“//**2**”之后添加适当的语句。 (3)完成Company类成员函数voidCompany::add(intcode,charname[50],doublepay)的定义,该函数将某一雇员的编号code、姓名name及月薪pay输入到公司信息中。请在注释“//**3**”之后添加适当的语句。 (4)完成Company类成员函数voidCompany::print()的定义,使其以"_ispaid_RMBforonemonth"的格式输出公司内所有员工的月薪信息。请在注释“//**4**”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序清单如下: #include #include classCEmployee { public: voidputname(charn[50]){strcpy(name,n);} voidgetname(charn[50]){strcpy(n,name);} voidputpay(doubled){pay=d;} doublegetpay(){returnpay;} private: //**1** }; classCompany { private: CEmployee*emp; intnum; public: Company(intn);
相关阅读