全国计算机等级考试二级C++模拟试题及答案1.docx
- 文档编号:24027665
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:20
- 大小:21.08KB
全国计算机等级考试二级C++模拟试题及答案1.docx
《全国计算机等级考试二级C++模拟试题及答案1.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C++模拟试题及答案1.docx(20页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级C++模拟试题及答案1
笔试部分
一、选择题
1.树是结点的集合,它的根结点数目是()
A.有且只有1B.1或多于1
C.0或1D.至少2
【参考答案】A
2.在设计程序时,应采纳的原则之一()
A.不限制goto语句的使用B.减少或取消注解行
C.程序越短越好D.程序结构应有助于读者理
【参考答案】D
3.下列叙述中,不属于软件需求规格说明书的作用的是()
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
【参考答案】D
4.单个用户使用的数据视图的描述称为()
A.外模式B.概念模式C.内模式D.存储模式
【参考答案】A
5.SQL语言又称为()
A.结构化定义语言B.结构化控制语言
C.结构化查询语言D.结构化操纵语言
【参考答案】C
6.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
【参考答案】D
7.软件工程的理论和技术性研究的内容主要包括软件开发技术和()
A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用
【参考答案】B
8.在软件测试设计中,软件测试的主要目的是()
A.实验性运行软件B.证明软件正确
C.找出软件中全部错误D.发现软件错误而执行程序
【参考答案】D
9.索引属于()
A.模式B.内模式C.外模式D.概念模式
【参考答案】B
10.数据库系统的核心是()
A.数据库B.数据库管理系统
C.模拟模型D.软件工程
【参考答案】B
来源:
考试大-计算机二级考试11.下面关于类和对象的描述中,错误的是()
A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B.类和对象之间的关系是抽象和具体的关系
C.对象是类的实例,一个对象必须属于一个已知的类
D.类是具有共同行为工的若干对象的统一描述体
【参考答案】A
12.设inta=10,b=11,c=12;,表达式(a+b)
A.2B.0C.-2D.1
【参考答案】B
13.下列语句中不是死循环的是()
A.inti=10;B.for(inti=1;i<10;i++)C.inti=0;D.inti=1;
while
(1){do{for(;;)
{i--;i++;i=i+1;
i--;}}while(i>=0);
if(i==1)break;
}
【参考答案】A
14.下面关于数组的描述错误的是()
A.在C++语言中数组的名字就是指向该数组第一个元素的指针
B.长度为n的数组,下标的范围是0~n-1
C.数组的大小必须在编译时确定
D.数组只能通过值参数和引用参数两种方式传递给函数
【参考答案】D
15.下面的哪个选项不能作为函数的返回类型?
()
A.voidB.intC.newD.long
【参考答案】C
16.下列程序的输出结果为()
#include
intfunc(intn)
{if(n<1)return1;
elsereturnn+func(n-1);
return0;}
voidmain()
{cout<
A.0B.10C.15D.16
【参考答案】D
来源:
考试大-计算机二级考试17.以下程序中,错误的行为()
1.#include
2.classA
3.{
4.public:
5.intn=2;
6.A(intval){cout<
7.~A(){}
8.{;
9.voidmain()
10{
11.Aa(0);
12.}
A.5B.6C.7D.11
【参考答案】A
18.下面程序的运行结果为()
#include
classA
{
intnum;
public:
A(inti){num=i;}
A(A&a){num=a.num++;}
voidprint(){cout<
};
voidmain()
{
Aa
(1),b(a);
a.print();
b.print();
}
A.11B.12C.21D.22
【参考答案】C
来源:
考试大-计算机二级考试19.如果类A被说明成类B的友元,则()
A.类A的成员即类B的成员B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元
【参考答案】D
20.建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为()
A.abcB.acbC.cabD.cba
【参考答案】A
21.下面关于模板的描述,错误的是()
A.函数模板和类模板的参数可以是任意的数据类型
B.类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用
C.函数模板不能直接使用,需要实例化为模板函数后才使用
D.类模板的成员函数都是模板函数
【参考答案】A
22.下面程序的运行结果是()
#include
voidmain()
{
intnum=1;
int&ref=num;
ref=ref+2;
cout<
num=num+3;
}
A.13B.16C.36D.33
【参考答案】C
23.下列程序的运行结果为()
#include
inti=0;
classA{
public:
A(){i++;}
};
voidmain()
{Aa,b[3],*c;
c=b;
cout<
A.2B.3C.4D.5
【参考答案】C
来源:
考试大-计算机二级考试24.下列字符串中可以用C++语言标识符的是()
A._1234B.foo~~bar
C.virtuaD.34var
【参考答案】A
25.下列语句的输出结果()
cout<
A.5B.14C.8D.输出项不合法,无正常输出
【参考答案】A
26.若有如下语句()
#include
voidmain()
{intx=3;
do{
x=x-2;
cout<
}while(!
(--x));
}
则上面程序段
A.输出的是1B.输出的是1和-2C.输出的是3和0D.是死循环
【参考答案】B
27.以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是()
#include
voidmain()
{int*p,*q,a,b;
p=&a;
cout<<″inputa:
″;
cin>>p;}
A.*p表示的是指针变量P的地址
B.p表示的是变量a的地址,而不是变量a的值
C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
【参考答案】B
来源:
考试大-计算机二级考试28.有以下程序
#include
voidfun(inta,intb,intc)
{a=456,b=567,c=678;}
voidmain()
{intx=10,y=20,z=30;
fun(x,y,z);
cout<
输出结果是()
A.30,20,10B.10,20,30
C.456,567,678D.678,567,456
【参考答案】B
29.下列定义中p指向的地址可更改,但*p不能够更改的是()
A.constint*PB.int*constp;C.constint*constp;D.int*p;
【参考答案】A
30.下面程序的结果是()
#include
classA
{
inta;
public:
A():
a
(1){}
};
classB
{
inta;
public:
B():
a
(2){}
};
classC:
publicA,publicB
{inta;
public:
C():
a(3){}
};
voidmain()
{Cc;
c.showa();}
A.1B.2C.3D.程序有错误
【参考答案】C
来源:
考试大-计算机二级考试31.如果表达式x*y+z中,“*”是作为友元函数重载的,“+”是作为友元函数重载的,则该表达式还可为()
A.operator+(operator*(x,y),z)
B.x.operator+(operator*(x,y),z)
C.y.operator*(operator+(x,y),z)
D.x.operator+(operator*(x,y))
【参考答案】A
32.对于语句cout< (2)<<=""p="">
(2)<
A.*********1*2B.********12C.*******1*2D.12********
【参考答案】A
33.有如下程序
#include
intfunc(inta,intb)
{return(a+b);}
voidmain()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
cout<
该程序的输出的结果是()
A.12B.13C.14D.15
【参考答案】D
34.下列描述中,抽象类的特性是()
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
【参考答案】D
35.下列程序的运行结果是()
#include
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
voidmain()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
}
A.63B.36C.编译出错D.00
【参考答案】B
来源:
考试大-计算机二级考试二、填空题
1.在面向对象方法中,类之间共享属性和操作的机制称为【1】。
【参考答案】
1.【1】继承
2.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于【2】的联系。
【参考答案】
2.【2】一对多(或1:
N)
3.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【3】的设计方法。
【参考答案】
3.【3】数据结构
4.软件设计模块化的目的是【4】。
【参考答案】
【4】降低复杂性
5.在树结构中,树根结点没有【5】。
【参考答案】
【5】前件
6.C++中封装性、继承性和【6】是面向对象思想的主要特征。
【参考答案】
【6】多态性
7.下列for语句的循环次数为【7】。
for(inta=0,b=1;b&&a<5;a++);
【参考答案】
【7】5
8.C++程序是从【8】函数开始执行的。
【参考答案】
【8】main
9.派生类构造函数的执行顺序是先执行【9】的构造函数,然后执行成员对象的构造函数,最后执行【10】的构造函数。
【参考答案】
9.【9】基类【10】派生类
10.C++语言程序的注释可以出现在程序中的任何地方,一个注释以【11】作为开始和结束的标记。
【参考答案】
【11】/**/
11.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*)【12】;
【参考答案】
来源:
考试大-计算机二级考试【12】malloc(11)或malloc(sizeof(char)*11)
12.下列程序在构造函数和析构函数中申请和释放类的数据成员int*a,申请时使用形参b初始化a,请填空。
classA
{
public:
A(intb);
~A();
private:
int*a;
};
A:
:
(intb)
{【13】;}
A:
:
~A()
{【14】;}
【参考答案】
12.【13】a=newint(b)【14】deletea
13.将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为【15】。
【参考答案】
【15】x.operator+(operator*(y,z))
来源:
考试大-计算机二级考试上机部分
一、改错题
使用VC6打开考生文件夹下的工程kt1_1,此工程包含一个源程序文件kt1_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
Whichact(aorb)?
b
act1
act2
Bact3
Bact4
Bend
源程序文件kt1_1.cpp清单如下:
#include
classA
{public:
virtualvoidact1(){cout<<"act1\n";act2();}
voidact2(){cout<<"act2\n";act3();}
voidact3(){cout<<"Aact3\n";act4();}
virtualvoidact4{cout<<"Aact4\n";act5();}
voidact5(){cout<<"Aend\n";}
};
classB:
publicA
{
voidact3(){cout<<"Bact3\n";act4();}
voidact4(){cout<<"Bact4\n";act5();}
voidact5(){cout<<"Bend\n";}
};
voidmain(void)
{
charc;
A*a;
cout<<"Whichact(aorb)?
";
cin<
if(c=='a')
a=newA;
else
a=newB;
a->act1();
deletea;
【参考答案】
(1)将voidact3(){cout<<"Aact3\n";act4();}
改为:
virtualvoidact3(){cout<<"Aact3\n";act4();}
(2)将virtualvoidact4{cout<<"Aact4\n";act5();}
改为:
virtualvoidact4(){cout<<"Aact4\n";act5();}
(3)将cin<
改为:
cin>>c;
来源:
考试大-计算机二级考试【试题解析】
(1)主要考查对虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;
(2)主要考查对函数定义的掌握,虽然参数表为空,但括号是不能省略的;
(3)主要考查是否会使用流输入操作,本题中使用的是流输出符。
二、简单应用题
请编写一个函数voidfun(charss[]),该函数将字符串ss翻转,如ss为“123abc”则翻转后为“cba321”。
注意:
用数组方式及for循环来实现该函数。
注意:
部分源程序已存在文件kt1_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
文件kt1_2.cpp的内容如下:
#include
#include
voidfun(charss[]);
【参考答案】
(1)将voidact3(){cout<<"Aact3\n";act4();}
改为:
virtualvoidact3(){cout<<"Aact3\n";act4();}
(2)将virtualvoidact4{cout<<"Aact4\n";act5();}
改为:
virtualvoidact4(){cout<<"Aact4\n";act5();}
(3)将cin<
改为:
cin>>c;
【试题解析】
(1)主要考查对虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;
(2)主要考查对函数定义的掌握,虽然参数表为空,但括号是不能省略的;
(3)主要考查是否会使用流输入操作,本题中使用的是流输出符。
来源:
考试大-计算机二级考试二、简单应用题
请编写一个函数voidfun(charss[]),该函数将字符串ss翻转,如ss为“123abc”则翻转后为“cba321”。
注意:
用数组方式及for循环来实现该函数。
注意:
部分源程序已存在文件kt1_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
文件kt1_2.cpp的内容如下:
#include
#include
voidfun(charss[]);
voidmain()
{chars[80];
cout<<"请输入字符串:
";
cin>>s;
fun(s);
cout<<"逆序后的字符串:
"<
voidfun(charss[])
{
}
【参考答案】
voidfun(charss[])
{
intn=strlen(ss);
for(inti=0;i<(n/2);i++)
{charc=ss[i];
ss[i]=ss[n-1-i];
ss[n-1-i]=c;}
}
【试题解析】
本题考查的是利用数组及for循环、if条件判断等基本控制语句解决实际问题的能力,基本算法是根据字符串的对称性把对应的两个字符串互相换位。
来源:
考试大-计算机二级考试三、综合应用题
使用VC6打开考生文件夹下的工程test1_3,此工程包含一个源程序文件kt1_3.cpp,其中定义了类Cat,但类Cat的定义并不完整。
请按要求完成下列操作,将类Cat的定义补充完整。
(1)定义类Cat的保护数据成员itsAge用于表示年龄,它是int型的数据。
请在注释“//**1**”之后添加适当的语句。
(2)完成成员函数GetAge()的类外定义,返回成员的itsAge值,请在注释“//**2**”之后添加适当的语句。
(3)完成成员函数SetAge(intage)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释“//**3**”之后添加适当的语句。
(4)完成成员函数Meow的类外定义,使其输出字符串“meow.”到屏幕上。
请在注释“//**4**”之后添加适当的语句。
输出结果如下:
meow.
kittyisacatwhois5yearsold.
meow.
注意:
除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序如下:
#include
classCat
{
public:
intGetAge();
voidSetAge(intage);
voidMeow();
protected:
//**1**
};
intCat:
:
GetAge()
{
//**2**
}
voidCat:
:
SetAge(intage)
{
//**3**
}
voidCat:
:
Meow()
{
//**4**
}
voidmain()
{
Catkitty;
kitty.Meow();
kitty.SetAge(5);
cout<<"kittyisacatwhois";
cout<
cout<<"yearsold.\n";
kitty.Meow();
}
【参考答案】
(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 C+ 模拟 试题 答案