全国计算机二级C++语言程序设计考试精选选择题
1.从工程管理角度,软件设计一般分为两步完成,它们是( )。
A.概要设计与详细设计
B.数据设计与接口设计
C.软件结构设计与数据设计
D.过程设计与数据设计
2.下列叙述中正确的是( )。
A.一个逻辑数据结构只能有一种存储结构
B.数据的逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
3.下列关于完全二叉树的叙述中,错误的是( )。
A.除了最后一层外,每一层上的结点数均达到最大值
B.可能缺少若干个左右叶子结点
C.完全二叉树一般不是满二叉树
D.具有结点的完全二叉树的深度为[log2n]+1
4.如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是( )。
A.e3、e1、e4、e2
B.e2、e4、e3、e1
C.e3、e4、e1、e2
D.任意顺序
5.原因排除法属于( )。
A.软件调试方法
B.黑盒测试方法
C.白盒测试方法
D.动态测试方法
6.在E—R图中,用来表示实体的图形是( )。
A.矩形
B.椭圆形
C.菱形
D.三角形
7.下列数据模型中,具有坚实理论基础的是( )。
A.层次模型
B.网状模型
C.关系模型
D.以上3个都是
8.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。
A.log2n
B.n/2
C.n
D.n+1
9.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。
A.控制流
B.加工
C.数据存储
D.源和潭
10.数据库设计的根本目标是要解决( )。
A.数据共享问题
B.数据安全问题
C.大量数据存储问题
D.简化数据维护
11.以下选项中合法的实型常数是( )。
A.5E2.0
B.E—3
C.2EO
D.1.3E
12.下列字符串中可以用作C++语言标识符的是( )。
A.1234
B.foo~~bar
C.virtual
D.34var
13.下列关于C++函数的说明中,正确的是( )。
A.内联函数就是定义在另一个函数体内部的函数
B.函数体的最后一条语句必须是return语句
C.标准C++要求在调用一个函数之前,必须先声明其原型
D.编译器会根据函数的返回值数型和参数表来区分函数的不同重载形式
14.若有如下语句
#include
voidmain( )
{
intx=3:
do{
x=X-2:
cout<}while(!(--x));
}
则上面程序段( )。
A.输出的是1
B.输出的是1和-2
C.输出的是3和0
D.是死循环
15.有以下程序:
#include(iostream)
usingnamespacestd;
intmain( )
{
intx=15:
while(x>10&&x<50)
{
x++;
if(x/3)
{
x++;break;
}
}
cout } 执行后的输出结果是( )。 A.15 B.16 C.17 D.18 16.以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误的原因是( )。 #include(iostream.h) 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是一个指针变量 17.下列有关拷贝构造函数的描述中错误的是( )。 A.拷贝构造函数是一种构造函数 B.拷贝构造函数与一般的构造函数一样,可以设置多个形参 C.每一个类中都必须有一个拷贝构造函数 D.拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象 A.sqrt(cos(x)) B.sqrt(abs(cos(X*3.14/180))) C.sqrt(abs(cos(X*(/180))) D.sqrt(fabs(cos(x*3.14/180))) 19.函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[o]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为( )。 A.1,1 B.1,2 C.2,2 D.2,1 20.有以下程序: #include(iostream.h) 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,10 B.10,20,30 C.456,567,678 D.678,567,456
21.下列定义中P指向的地址可更改,但*P不能够更改的是( )。
A.constint*P;
B.int*constP;
C.constint*constP;
D.int*P;
22.如果表达式“--x/y”中的“--”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为( )。
A.operator/(X.operator--( ),y);
B.operator/(operator--(x),y);
C.X.operator--( ).operator/(y);
D.y.operator/operator--(x));
23.下列程序输出的结果是( )。
#include
funl(chara,charb){charC;c=a;a=b;b=C;)
fun2(char*a,charb){charC;c=*a;*a=b;b=c;)
fun3(char*a,char*b){charC;C=*a;*a=*b;*b=C;)
voidmain( )
{
chara,b;
a=’A’;b=’B’;fun1(a,b);putchar(a);putchar(b);
a=’A’;b=’B’;fun2(&a,b);putchar(a);putchar(b);
a=’A’;b=’B’;fun3(&a,&b);putchar(a);putchar(b);
putchar(’\n’);
}
A.BABBAB
B.ABBBBA
C.ABBABA
D.ABABBA
24.下面程序的结果是( )。
#include(iostream.h>
classA
{
inta;
public:
A( ):a(1){}
voidshowa( )(cout<};
classB
{
inta;
public:
B( ):a(2){}
voidshowa( ){cout<};
classC:publicA,publicB
{
inta;
public:
C( ):a(3){}
voidshowa( ){cout<};
voidmain( )
{
CC;
C.showa( );
}
A.1
B.2
C.3
D.程序有错误
25.有以下程序:
voidmain( )
{inta=5,b=4,c=3,d=2;
if(a>b>c)
cout
cout cout<} A.2 B.3 C.4 D.编译时有错,无结果 26.下列程序的执行结果是( )。 #include(iostream.h> #include classTestClass { public: intX,y; TestClass( ){x=y=0;} TestClass(inta,intb){x=a;y=b;} voiddisp( ) { cout<<"x="<}; classB{public:B( ){cout<<"B";}}; classC:publicA{ Bb; public: C( ){cout<<"C";} }; intmain( ){Cobj;return0;} 执行后的输出结果是( )。 A.CBA B.BAC C.ACB D.ABC 30.下列程序的运行结果是( )。 #include intx=5: intfun(inta) { intC; C=X*a: returnC; } voidmain( ) { intx=3,a=4; x=x+fun(a); cout<<"x="<} A.x=15B.x=17 C.x=23D.x=25
31.以下函数值的返回值类型是( )。
fun(floatx)
{floaty;
y=3*x-4;
returny;
}
A.int
B.不确定
C.void
D.float
32.以下循环体的执行次数是( )。
voidmain( )
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)cout<}
A.3
B.2
C.1
D.0
33.判断char型变量c是否为小写字母的正确表达式是( )。
A.’a’<=c<=’z’
B.(c>=A)&&(c<=z)
C.(’a’>=c)‖(’z’<=c)
D.(c>=’a’)&&(c<=’z’)
34.下列描述中,抽象类的特性是( )。
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
35.以下关于友元函数的叙述不正确的是( )。
A.友元函数提供了类之间数据共享的一个途径
B.一个友元函数可以访问任何类的任何成员
C.友元函数破坏了数据的封装
D.友元函数增加了程序设计的灵活性
36.下面关于运算符重载的描述错误的是( )。
A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B.不是所有的运算符都可以进行重载
C.运算符函数的调用必须使用关键字0perator
D.在C++语言中不可通过运算符重载创造出新的运算符
37.与语句cout B.cout<<’\12’; C.cout<<’\xA’; D.cout<<’\0’; 38.下面程序的运行结果是( )。 #include intfun(inta[],intn) { intresult=1; for(inti=1;i(n;i++) result=result*a[i]; returnresult; } voidmain( ) { inta[3]={3,4,5); coHt<} A.12 B.15 C.20 D.60 39.下面程序的运行结果是( )。 #include voidmain( ) { inti=1: while(i<=8) if(++i%3!=2)continue; elsecout<} A.25 B.36 C.258 D.369 40.下列程序的运行结果为( )。 #include(iostream.h> template(classTT> classFF {TTa1,a2,a3; public: FF(TTb1,TTb2,TTb3){a1=b1;a2=b2.;a3=b3;) TTSum( ){returna1+a2+a3;}}; voidmain( ) {FFx(int(1.1),2,3),y(int(4.2),5,6); cout B.615 C.615.2 D.6.115
选择题答案与解析
1.A。【解析】从软件工程角度看,软件设计分为概要设计和详细设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构;详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库。
2.D。【解析】数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。根据以上分析可知,D选项为正确答案。
3.B。【解析】满二叉树指除最后一层外,每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干叶子结点的二叉树。因此选项A叙述正确,而选项B叙述错误。由定义可知,满二叉树肯定是完全二叉树,而完全二叉树一般不是满二叉树。
4.B。【解析】根据栈先进后出的特点可知el肯定是最后出栈的,因此正确答案为选项B。
5.A。【解析】软件调试方法有:强行排错法、回溯法、原因排除法。
6.A。【解析】在E—R图中,矩形表示实体;菱形表示联系名;椭圆形表示实体的属性。
7.C。【解析】关系模型较格式化模型(网状模型和层次模型)有以下几个优点:数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。
8.C。【解析】对线性表进行顺序查找,最坏情况下,如果从表头进行查找,要查找到表尾才能得出结果,因此需要比较n次。
9.A。【解析】数据流图简称DFD,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。数据流图有4种基本图形符号:①箭头,表示数据流;②圆或椭圆,表示加工;③双杠,表示存储文件(数据源);④方框,表示数据的源点或终点。
10.A。【解析】从数据库的概念中可以看到,所谓数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。因此进行数据库设计的根本目标还是为了解决数据共享问题。
11.C。【解析】本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必须为整数。由于符号E前面必须有数字。D在指数符号后面没有数字,是错误的。
12.A。【解析】C++语言标识符只能由数字、字母和下画线组成,并且只能以字母和下画线为开头。
13.C。【解析】内联函数不是定义在另一个函数体内部的函数,而是将inline放在函数定义中函数类型之前;函数体的最后一条语句可以是任意的语句;编译器不会根据函数返回值的类型来区分重载形式,选项D错误。标准C++要求在调用一个函数之前,必须先声明其原型。
14.B。【解析】d0…while语句的一般格式为“d0循环体语句while(表达式);”,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行x=x-2,即为1。判断表达式的值,!(--x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。
15.C。【解析】本题考核选择语句与循环语句的嵌套。由程序可知,当x=16时,满足if条件表达式,进入if分支,执行“x++;break;”,所以最后程序输出x的值为17。
16.B。【解析】p表示的是变量a的地址,定义后*P表示的是变量a的值。
17.B。【解析】拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型;只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个拷贝构造函数,如果类中未声明,编译器会自动生成一个公有的拷贝构造函数。
18.D。【解析】本题考查数学表达式的掌握,首先应转换为弧度,然后作为cos函数的参数求绝对值,最后是开方函数。考生需要掌握的是常用的数学函数。
19.D。【解析】如果函数实参是数组名,形参也应为数组名,函数swap中形参进行了交换。实际上也是实参进行了交换。而且数组名代表数组首元素的地址,并不是代表数组的全部元素。所以,swap(b,2)是数组b第一个元素与第二个元素进行交换,即b[0]与b[1],根据题干,知道答案为2,1。
20.B。【解析】本题考查函数中变量的作用范围,在主函数中给变量x,y,z赋值,然后将其作为实参传递给了函数fun,虽然在函数fun中改变了这3个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数fun结束后,主函数3个变量的值未改变。
21.A。【解析】“constint*P;”是只能改变指针地址,“int*constP;”是只能改变*P的内容,“constint*constP;”是指针的地址和*P的内容都不能改变,“int*P;”是两者都能改变。
22.B。【解析】本题考查运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且c1、c2都是该类的对象,则“c1.operator+(c2)”,与“c1+c2”含义相同。如果+作为该类的非成员函数重载,则“operator+(c1,c2)”与“c1+c2”含义相同。同理,运算符“/”作为友元函数重载,则“(--x)/y”与表达式“operator/((--x),y)”相同。前缀运算符“--”作为友元函数重载,则“--X与operator--(x)”相同,所以组合起来是“0perator/(operator--(x),y);”,即B选项。
23.B。【解析】由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以d调用funl后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA。
24.C。【解析】类A,类B,中都有showa函数,类C继承后再次重写showa函数就解决了继承的二义性,这时C.showa函数显示的就是类C中的showa的值。
25.B。【解析】本题考查逻辑表达式的结合特性,即左结合性。对于表达式a>b>e,首先判断a>b为真,结果为1,然后判断1>e,为假,故转去判断c-1>=d是否成立,成立,结果为1,再判断l=1,结果为真,因此,执行d+1,答案为B。
26.B。【解析】由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应该是调用具有参数的“TestClass(inta,intb){x=a;Y=b;}”,然后调用成员函数disp(),则输出为“cout<<"x="<
全国计算机等级考试计算机基础及Photoshop应用试题答案汇总(6套)
[Photoshop应用]2017年2月3日全国计算机等级考试四级数据库系统工程师试题及答案汇总(22套)
[数据库工程师]2017年2月2日全国计算机一级考试模拟试题及答案300题
[WPS Office应用]2017年1月22日2017年3月全国计算机等级考试报名时间及报名入口汇总
[考试动态]2017年1月3日2017全国计算机等级考试考试大纲专题
[政策大纲]2017年1月3日