2010年全国计算机等级考试二级C++模拟试题及答案(14)
编辑推荐:
2010年全国计算机二级考试各科模拟试题冲刺专题
全国计算机等级考试二级C++语言程序设计标准预测试卷汇总
全国计算机二级考试C++笔试练习四十套
笔试部分
一、选择题
1.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
A)数据的存储结构 B)计算方法
C)数据映象 D)逻辑存储
【参考答案】 A
2.串的长度是
A)串中不同字符的个数 B)串中不同字母的个数
C)串中所含字符的个数且字符个数大于零 D)串中所含字符的个数
【参考答案】 D
3.在计算机中,算法是指
A)加工方法 B)解题方案的准确而完整的描述 C)排序方法 D)查询方法
【参考答案】 B
4.下列不属于软件工程的3个要素的是( )
A.工具 B.过程 C.方法 D.环境
【参考答案】 D
5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做
A)软件投机 B)软件危机 C)软件工程 D)软件产生
【参考答案】 B
6.下面不属于软件设计原则的是
A)抽象 B)模块化
C)自底向上 D)信息隐蔽
【参考答案】 C
7.开发大型软件时,产生困难的根本原因是
A)大系统的复杂性 B)人员知识不足
C)客观世界千变万化 D)时间紧、任务重
【参考答案】 A
8.下列SQL语句中,用于修改表结构的是
A)ALTER B)CREATE C)UPDATE D)INSERT
【参考答案】 A
9.数据库、数据库系统和数据库管理系统之间的关系是
A)数据库包括数据库系统和数据库管理系统
B)数据库系统包括数据库和数据库管理系统
C)数据库管理系统包括数据库和数据库系统
D)3者没有明显的包含关系
【参考答案】 B
10.关系模型允许定义3类数据约束,下列不属于数据约束的是
A)实体完整性约束
B)参照完整性约束
C)域完整性约束
D)用户自定义的完整性约束
【参考答案】 C
11.C++语言中标点符号中表示一条预处理命令开始的是
A)# B); C)* D){
【参考答案】 A
12.每个C++程序中都必须有且仅有一个
A)类 B)预处理命令 C)主函数 D)语句
【参考答案】 C
13.sizeof(float)是
A)一个双精度型表达式 B)一个整型表达式
C)一种函数调用 D)一个不合法的表达式
【参考答案】 B
14.设有int x=11;,则表达式(x++*2/3)的值是
A)7 B)8 C)11 D)12
【参考答案】 A
15.设有程序段
int k=10;
while(k=0)k=k-1;
则下面描述中正确的是
A)循环执行10次
B)无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
【参考答案】 C
16.对表达式for(表达式1; ;表达式3)可理解为
A)for(表达式1;0;表达式3) B)for(表达式1;1;表达式3)
C)for(表达式1;表达式3;) D)for(;;表达式3)
【参考答案】 B
17.以下不正确的定义语句是
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9};
C)char c1[]={′1′,′2′,′3′,′4′,′5′};
D)char c2[]={′x10′,′xa′,′x8′};
【参考答案】 B
18.有如下说明
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
19.下列函数的运行结果是
#include
int f(int a,int b)
{ int c;
if(a>b)c=1;
else if(a==b)c=0;
else c=-1;
return(c); }
void main()
{ int i=2,j=3;
int p=f(i,j);
cout << p; }
A)-1 B)1 C)2 D)编译出错,无法运行
【参考答案】 A
20.以下对C++函数的有关描述中,正确的是
A)在C++语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B)C++函数既可以嵌套定义又可以递归调用
C)函数必须无返回值,否则不能使用函数
D)函数必须有返回值,返回值类型不定
【参考答案】 A
21.关于静态数据成员的描述中正确的是
A)类的静态数据成员不是类的所有对象共享的数据
B)类的静态数据成员不能被类的成员函数调用
C)类的静态数据成员不能被类的构造函数调用
D)类的静态数据成员必须进行初始化
【参考答案】 D
22.拷贝构造函数的参数一般是
A)某对象名 B)某对象成员名 C)某对象的引用名 D)指向对象的指针名
【参考答案】 C
23.下表正确的是
在父类中的访问属性访问修饰符在子类中的访问属性
A)publicprivate不能直接访问 B)protectpublicpublic
C)privatepublic不能直接访问 D)protectprivateprotect
【参考答案】 C
24.下面这个程序的结果是
#include
class A
{ private:
int a;
public:
void seta(); int geta(); };
void A::seta()
{a = 1;}
int A::geta()
{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 << b; }
void main()
{ C c;
c.seta();
c.display(); }
A)1 B)2 C)随机输出1或2 D)程序有错
【参考答案】 D
25.下列运算符中全都可以被友元函数重载的是
A)= , + , - , B)[] , +, (), new
C)-> , + , * , >> D)<< , >> , + , *
【参考答案】 D
26.对于模板定义关键字class和typename说法不正确的是
A)程序中的class并不能都替换为typename
B)class和typename都可互相替换
C)程序中的typename都能替换为class
D)程序中的部分class可以替换为typename
【参考答案】 B
27.对于下面的程序
ifstream fin(c:test.txt);
if(fin)
cout << "ok";
else
cout << "wrong";
对于if语句中的内容可以换为
A)fin.fail(); B)fin.bad(); C)fin.good(); D)fin.eof();
【参考答案】 C
28.以下程序的输出结果是
#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 << fun (3); }
A)1 B)2 C)3 D)4
【参考答案】 A
29.不合法的main函数命令行参数表示形式是
A)main(int a,char *c[]) B)main(int arc,char **arv)
C)main(int argc,char *argv) D)main(int argv,char *argc[])
【参考答案】 C
30.有如下程序
#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]>′ ′;j+=2)
s=10*s+p[i][j]-′0′;
cout << s; }
该程序的输出结果是
A)69825 B)63825
C)6385 D)693825
【参考答案】 C
31.下面叙述不正确的是
A)基类的保护成员在派生类中仍然是保护的成员
B)基类的保护成员在公有派生类中仍然是保护的
C)基类的保护成员在私有派生类中仍然是私有的
D)对基类成员的访问必须是无二义性
【参考答案】 A
32.以下程序的输出结果是
#include
void main()
{ char x=040;
cout << (x<<1); }
A)100 B)80 C)64 D)32
【参考答案】 C
33.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的选项是
#include
void main()
{ int a,b,t;
cin >> a >> b;
while()
{ if(a>b)
{ t=a;a=b;b=t;}
cout << a << " " << b << endl;
cin >> a >> b; } }
A)!a=b B)a!=b C)a==b D)a=b
【参考答案】 B
34.对以下说明语句的正确理解是
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
35.类A是类B的友元,类B是类C的友元,则下列说法正确的是
A)类B是类A的友元
B)类C是类A的友元
C)类A是类C的友元
D)以上都不对
【参考答案】 D
二、填空题
(1)长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 【1】 。
【参考答案】
【1】n/2
(2)用树型结构表示实体类型及实体间联系的数据模型称为 【2】 。
【参考答案】
【2】层次模型
(3)类是一个支持集成的抽象数据类型,而对象是类的 【3】 。
【参考答案】
【3】实例
(4)数据流图的类型有 【4】 和事务型。
【参考答案】
【4】变换型
(5)当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的 【5】 。
【参考答案】
【5】物理独立性
(6)在C++语言的面向对象程序设计框架中, 【6】 是程序的基本组成单元。
【参考答案】
【6】类
(7)C++语言程序的注释可以出现在程序中的任何地方,一个注释以 【7】 作为开始和结束的标记。
【参考答案】
【7】/* */
(8)以下程序的输出结果是 【8】 。
#include
void fun()
{ static int a=0;
a+=2;
cout << a << " "; }
void main()
{ int cc;
for(cc=1;cc<4;cc++)
fun();
cout << endl;}
【参考答案】
【8】2 4 6
(9)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*) 【9】 ;
【参考答案】
【9】malloc(11)或malloc(sizeof(char)*11
(10)以下程序的输出结果是 【10】 。
#include
unsigned fun(unsigned num)
{ unsigned k=1;
do{ k *=num;num/=10;} while (num);
return k; }
void main()
{ unsigned n=26;
cout << fun(n)<< endl; }
【参考答案】
【10】12
(11)下列程序在构造函数和析构函数中申请和释放类的数据成员int *a,申请时使用形参b初始化a,请填空。
class A
{ public:
A(int b);
~A();
private:
int *a; };
A::A(int b)
{ 【11】 ; }
A::~A()
{ 【12】 ; }
【参考答案】
【11】a = new int(b); 【12】delete a
(12)C++语言中的多态性是在编译时通过 【13】 和模板体现的,在运行时是通过 【14】体现的。
【参考答案】
【13】函数重载 【14】虚函数
(13)将x+y*z中的"+"用成员函数重载,"*"用友元函数重载应写为 【15】 。
【参考答案】
【15】x. operator+(operator*(y,z))
上机部分
一、改错题
使用VC6打开考生文件夹下的工程kt15_1,此工程包含一个源程序文件kt15_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
Previous=9,Next=11
源程序文件kt15_1.cpp清单如下:
#include
/*****************found*****************/
intmain()
{ intx=10,y,z;
prevnext(x,y,z);
cout<<"Previous="<