2010年全国计算机等级考试二级C++模拟试题及答案(12)
编辑推荐:
2010年全国计算机二级考试各科模拟试题冲刺专题
全国计算机等级考试二级C++语言程序设计标准预测试卷汇总
全国计算机二级考试C++笔试练习四十套
笔试部分
一、选择题
1.算法的空间复杂度是指
A)算法程序的长度
B)算法程序中的指令条数
C)算法程序所占的存储空间
D)执行过程中所需要的存储空间
【参考答案】 D
2.用链表表示线性表的优点是
A)便于随机存取 B)花费的存储空间较顺序存储少
C)便于插入和删除操作 D)数据元素的物理顺序与逻辑顺序相同
【参考答案】 C
3.数据结构中,与所使用的计算机无关的是数据的
A)存储结构 B)物理结构 C)逻辑结构 D)物理和存储结构
【参考答案】 C
4.结构化程序设计主要强调的是
A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性
【参考答案】 D
5.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A)模块间的关系
B)系统结构部件转换成软件的过程描述
C)软件层次结构
D)软件开发过程
【参考答案】 B
6.检查软件产品是否符合需求定义的过程称为
A)确认测试 B)集成测试 C)验证测试 D)验收测试
【参考答案】 A
7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A)控制流 B)加工 C)数据存储 D)源和潭
【参考答案】 A
8.应用数据库的主要目的是
A)解决数据保密问题 B)解决数据完整性问题
C)解决数据共享问题 D)解决数据量大的问题
【参考答案】 C
9.在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段
【参考答案】 B
10.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
A)数据库系统 B)文件系统
C)人工管理 D)数据项管理
【参考答案】 A
11.下面关于C++语言的描述错误的是
A)C++语言支持数据封装
B)C++语言中引入友元没有破坏封装性
C)C++语言允许函数名和运算符重载
D)C++语言支持动态联编
【参考答案】 B
12.设有定义int a=1;float f=12;char c=′a′;,则下列表示错误的是
A)++a; B)f--; C)c++; D)8++;
【参考答案】 D
13.下列程序的运行结果为
#include
void main()
{ int a=2;
int b=a+1;
cout<
A)0.66667 B)0 C)0.7 D)0.66666666
【参考答案】 B
14.设int a=1,b=2;,则(a++)+b和a+++b这两个表达式的值分别为
A)3,3 B)3,4 C)4,3 D)4,4
【参考答案】 A
15.下面程序的运行结果为
#include
void main()
{ char a=′3′;
switch(a)
{ case ′3′: cout<<"3";
case ′2′: cout<<"2"; break;
default:cout<<"1"; } }
A)3 B)321 C)31 D)32
【参考答案】 D
16.有如下数组声明:int num[10];,下标值引用错误的是
A)num[10] B)num[5] C)num[3] D)num[0]
【参考答案】 A
17.存在定义int a[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的?
A)x=*pa; B)x=*(a+1); C)x=*(pa+1); D)x=a[1];
【参考答案】 A
18.下面程序的运行结果为
#include
void swap(int &a,int b)
{ int temp;
temp=a++;
a=b;
b=temp; }
void main()
{ int a=2,b=3;
swap(a,b);
cout<
A)2,3 B)3,2 C)2,2 D)3,3
【参考答案】 D
19.一个函数功能不太复杂但要求被频繁调用,应选用
A)内联函数 B)重载函数 C)递归函数 D)嵌套函数
【参考答案】 A
20.下面关于C++语言变量的叙述错误的是
A)C++语言中变量分为auto,static,extern和register四种存储类型
B)自动变量和外部变量的作用域为整个程序
C)内部静态变量的作用域是定义它的函数
D)外部静态变量的作用域是定义它的文件
【参考答案】 B
21.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为
A)public B)protected C)private D)static
【参考答案】 A
22.在C++语言程序中,对象之间的相互通信通过
A)继承实现 B)调用成员函数实现 C)封装实现 D)函数重载实现
【参考答案】 B
23.类的析构函数是在什么时候调用的?
A)类创建时 B)创建对象时 C)删除对象时 D)不自动调用
【参考答案】 C
24.通常拷贝构造函数的参数是
A)某个对象名 B)某个对象的成员名 C)某个对象的引用名 D)某个对象的指针名
【参考答案】 C
25.下面程序的运行结果为
#include
class A
{ static int n;
public:
A(){n=1;}
A(int num){n=num;}
void print(){cout< int A::n=2; void main() { A a,b (3); a.print(); b.print(); cout< A)11 B)13 C)23 D)33 【参考答案】 D 26.下列不是描述类的成员函数的是 A)构造函数 B)析构函数 C)友元函数 D)拷贝构造函数 【参考答案】 C 27.继承机制的作用是 A)信息隐藏 B)数据封装 C)定义新类 D)数据抽象 【参考答案】 C 28.C++语言类体系中,不能被派生类继承的有 A)转换函数 B)构造函数 C)虚函数 D)静态成员函数 【参考答案】 B 29.下面程序的运行结果是 #include class base{ protected: int a; public: base(){cout<<"0";} }; class base1:virtual base{ public: base1(){cout<<"1";} }; class base2:virtual base{ public: base2(){cout<<"2";} }; class derived:public base1,public base2{ public: derived(){cout<<"3";} }; void main() { derived obj; cout< A)0123 B)3120 C)0312 D)3012 【参考答案】 A 30.对于类定义 class A{ public: virtual void func1(){} void func2(){} }; class B:public A{ public: void func1(){cout<<″class B func 1″< virtual void func2(){cout<<″class B func 2″< 下面正确的叙述是 A) A::func2()和B::func1()都是虚函数 B) A::func2()和B::func1()都不是虚函数 C) B::func1()是虚函数,而A::func2()不是虚函数 D) B::func1()不是虚函数,而A::func2()是虚函数 【参考答案】 C 31.下面关于运算符重载的描述错误的是 A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构 B)不是所有的运算符都可以进行重载 C)运算符函数的调用必须使用关键字operator D)在C++语言中不可通过运算符重载创造出新的运算符 【参考答案】 C 32.与语句cout< A)cout<<′\n′; B)cout<<′\12′; C)cout<<′\xA′; D)cout<<′\0′; 【参考答案】 D 33.下面程序的运行结果是 #include int fun(int a[],int n) { int result=1; for(int i=1;i result=result*a[i]; return result; } void main() { int a[3]={3,4,5}; cout< A)12 B)15 C)20 D)60 【参考答案】 C 34.下面程序的运行结果是 #include void main() { int i=1; while(i<=8) if (++i%3!=2)continue; else cout<
A)25 B)36 C)258 D)369 【参考答案】 C 35.下列程序的运行结果为 #include template class FF { TT a1, a2, a3; public: FF(TT b1, TT b2, TT b3){a1=b1; a2=b2; a3=b3;} TT Sum(){return a1+a2+a3;} }; void main() { FF cout< A)6.1 15.2 B)6 15 C)6 15.2 D)6.1 15 【参考答案】 B 二、填空题 (1)数据的逻辑结构有线性结构和 【1】 两大类。 【参考答案】 【1】非线性结构 (2)顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。 【参考答案】 【2】相邻 (3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】 。 【参考答案】 【3】可重用性 (4)软件工程研究的内容主要包括: 【4】 技术和软件工程管理。 【参考答案】 【4】软件开发 (5)关系操作的特点是 【5】 操作。 【参考答案】 【5】集合 (6)C++中封装性、继承性和 【6】 是面向对象思想的主要特征。 【参考答案】 【6】多态性 (7)下面程序的结果为【7】。 #include void main() { int a=1,b=2; bool c=1; if((a>b)||c)cout<<"true"< else cout<<"false"< 【参考答案】 【7】true (8)下列for语句的循环次数为 【8】 。 for(int a=0,b=1;b&&a<5;a++); 【参考答案】 【8】5 (9)下面程序的输出结果是 【9】 。 #include void main() { int a[6]={1,2,3,4,5,6}; for(int i=0;i<5;i++) cout<
【参考答案】 【15】*****hello 上机部分 一、改错题 使用VC6打开考生文件夹下的工程kt13_1,此工程包含一个源程序文件kt13_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: 5 5 源程序文件kt13_1.cpp清单如下: #include classA{ public: /*****************found*****************/ staticintn=1; A(){n++;}; ~A(){n--;}; }; /*****************found*****************/ intn=0; intmain(){ Aa; Ab[3]; A*c=newA; c=&a; /*****************found*****************/ cout< cout<
return0; } 【参考答案】 (1)将static int n=1;改为:static int n; (2)将int n=0;改为:int A::n=0; (3)将cout< 【试题解析】 (1)在类的声明中只能对静态数据成员进行引用性声明,不能进行静态数据成员初始化; (2)由于静态数据成员是类的成员,所以在初始化时必须限定它所属的类; (3)c为类的对象指针,访问类成员函数时使用符号“->”,而不能用“.”。 二、简单应用题 请编写一个函数sortnum(intnum),参数num是一个三位的整数,该函数将num的百位、十位和个位的数字进行重排,并返回由上述的三个数字组成的最大的三位数。 注意:部分源程序已存在文件kt13_2.cpp中。 如输入456后,输出结果如下: 654 请勿修改主函数main和其他函数中的内容,仅在函数sortnum的花括号中填写若干语句。 文件kt13_2.cpp的内容如下: #include intsortnum(intnum) { } voidmain() { intnum; intresult=0; cout<<"请输入一个三位数"; cin>>num; cout< 【参考答案】 int number[3],i,j,temp; for(i=0;i<3;i++) { number[i]=num%10; num=num/10; } for (i=0;i<2;i++) { for (j=i+1;j<3;j++) if (number[j]<=number[i]) { temp=number[j]; number[j]=number[i]; number[i]=temp; } } num=number[2]*100+number[1]*10+number[0]; return num; 【试题解析】 本题主要考查对基本控制结构和数组的访问,以及根据实际需要建立模型,对数字进行排序的能力,答案中采用的是冒泡排序法。请注意程序中数组下标的范围和两层for循环嵌套中循环变量的取值情况。 三、综合应用题 使用VC6打开考生文件夹下的工程kt13_3。此工程包含一个kt13_3.cpp,其中定义了类Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类Person的私有数据成员forename、surname和money,forename和surname都是char型的指针数据,money是double型的数据。请在注释“//**1**”之后添加适当的语句。 (2)完成类Person的带三个参数的构造函数Person(char*f,char*s,doublem),分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money,请在注释“//**2**”之后添加适当的语句。 (3)完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“//**3**”之后添加适当的语句。 (4)完成类Person的成员函数display的定义,使其以格式"fornamesurnamehasmoney"的形式输出内容,请在注释“//**4**”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 输出结果如下: RichardBerkhas1000.56 Pressanykeytocontinue 源程序文件kt13_3.cpp清单如下: #include #include classPerson { private: //**1** doublemoney; public: Person(char*f,char*s,doublem); ~Person(); voiddisplay(); }; Person::Person(char*f,char*s,doublem) { //**2** strcpy(forename,f); surname=newchar[strlen(s)+1]; strcpy(surname,s); money=m; } Person::~Person() { //**3** } voidPerson::display() { //**4** } voidmain() { Personp("Richard","Berk",1000.56); p.display(); } 【参考答案】 (1)char *forename; char *surname; (2)forename = new char[strlen(f)+1]; (3)delete []forename; delete []surname; (4)cout<相关阅读