for(inti=0;i<2;i++){cout<
return0;
}
运行时的输出结果是
A)123 B)***123 C)***123 D)***123
234 234 ***234 234***
(35)有如下类定义
classA{
char*a;
public:
A():
a(0){}
A(char*aa){ //把aa所指字符串拷贝到a所指向的存储空间
a= ;
strcpy(a,aa);
strcpy(a,aa);
}
~A(){delete[]a;}
};
横线处应填写的表达式是
A)neschar[strlen(aa)+1] B)char[strlen(aa)+1]
C)char[strlen(aa)] D)newchar[sizeof(aa)-1]
2009年9月全国计算机等级考试二级C++笔试参考答案
选择题
(11)D (12)C (13)B (14)C (15)B
(16)A (17)D (18)A (19)C (20)D(21)B (22)D (23)C (24)B(25)D(26)A (27)C (28)B (29)D (30)A(31)B (32)D (33)C (34)B (35)A
2010年3月计算机等级考试二级C++笔试试题
一、选择题(每小题2分,共70分)
(11)下列关于函数的描述中,错误的是
A)函数可以没有返回值
B)函数可以没有参数
C)函数可以是一个类的成员
D)函数不能被定义为模板
(12)若MyClass是一个类名,且有如下语句序列
MyClassc1,*c2;
MyClass*c3=newMyClass;
MyClass&c4=c1;
上面的语句序列所定义的类对象的个数是
A)1
B)2
C)3
D)4
(13)下列关于继承方式的描述中,错误的是
A)如果不显式地指定继承方式,缺省的继承方式是私有(private)
B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是
A)Decr&operator--(int);
B)Decroperator--(Decr&,int);
C)friendDecr&operator--(Decr&);
D)frlendDecroperator--(Decr&,int);
(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列
MyTempp2;
MyTempp3[2];
编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是
A)1
B)2
C)3
D)0
(16)在C++中,cin是个
A)类
B)对象
C)模板
D)函数
(17)在下列字符中,不允许作为C++标识符的是
A)b
B)B
C)_
D)2
(18)下列叙述中,错误的是
A)false是一个逻辑型常量
B)"b"是一个字符型常量
C)365是一个int常量
D)3.1415926是一个double常量
(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是
A)if(x==0)y=1;elsey=2;
B)if(x==0)theny=1elsey=2;
C)if(x==0)y=1elsey=2;
D)ifx==0y=1;elsey=2;
(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是
A)intx[3]={0,0,0};
B)intx[]={0};
C)staticintx[3]={0};
D)intx[]={0,0,0};
(21)关于函数中的<返回类型>,下列表述中错误的是
A)<返回类型>中有可能包含关键字int
B)<返回类型>中有可能包含自定义标识符
C)<返回类型>中有可能包含字符*
D)<返回类型>中可能包含[]
(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是
A)MyClassp=MyClass;
B)MyClassp=newMyClass;
C)MyClass&p=newMyClass;
D)MyClassa,&p=a;
(23)有如下两个类定义
classXX{
private:
doublex1;
protected:
doublex2;
public:
doublex3;
};
classYY:
protectedXX{
private:
doubley1;
protected:
doubley2;
public:
doubley3;
};
在类YY中保护成员变量的个数是
A)1
B)2
C)3
D)4
(24)下列关于运算符重载的描述中,错误的是
A)可以通过运算符重载在C++中创建新的运算符
B)赋值运算符只能重载为成员函数
C)运算符函数重载为类的成员函数时,第一操作数是该类对象
D)重载类型转换运算符时不需要声明返回类型
(25)下列关于类模板的描述中,错误的是
A)类模板的成员函数都是模板函数
B)可以为类模板参数设置默认值
C)类模板描述了一组类
D)类模板中只允许有一个类型参数
(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是
A)setprecision
B)setw
C)setfill
D)showpoint(27)下列程序段中包含4个函数,其中具有隐含this指针的是
intfun1();
classTest{
public:
intfun2();
friendintfun3();
staticintfun4();
};
A)fun1
B)fun2
C)fun3
D)fun4
(28)有如下程序
#include
usingnamespacestd;
classTest{
public:
Test(){}
Test(constTest&t){cout<<1;}
};
Testfun(Test&u){Testt=u;returnt;}
intmain(){Testx,y;x=fun(y);return0;}
运行这个程序的输出结果是
A)无输出
B)1
C)11
D)111
(29)有如下程序
#include
usingnamespacestd;
classA{
public:
A(inti=0):
r1(i){}
voidprint(){cout<<'E’< voidprint()const{cout<<'C'< voidprint(intx){cout<<'P'< private:
intr1;
};
intmain(){
Aa1;
constAa2(4);
a1.print
(2);
a1.print();
return0;
}
运行时的输出结果是
A)P8-E4
B)P8-C16-
C)P0-E4-
D)P0-C16-
(30)下列代码声明了3个类
classPerson{};
classStudent:
publicPerson{};
classUndergraduate:
Student{};
下列关于这些类之间关系的描述中,错误的是
A)类Person是类Undergraduate的基类
B)类Undergraduate从类Student公有继承
C)类Student是类Person的派生类
D)类Undergraduate是类Person的派生类
(31)有如下程序
#include
usingnamespacestd;
ClassBase{
public:
Base(intx=0):
valB(x){cout< ~Base(){cout< private:
intvalB;
};
classDerived:
publicBase{
public:
Derived(intx=0,inty=0):
Base(x),valD(y){cout< ~Derived(){cout< private:
intvalD;
};
intmain(){
Derivedobj12(2,3);
retuen0;
}
运行时的输出结果是
A)2332
B)2323
C)3232
D)3223
(32)下面是类Shape的定义:
classShape{
public:
virtualvoidDraw()=0;
};
下列关于Shape类的描述中,正确的是
A)类Shape是虚基类
B)类Shape是抽象类
C)类Shape中的Draw函数声明有误
D)语句“Shapes;”能够建立Shape的一个对象s
(33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是
A)MyClockoperator+(MyClock,long);
B)MyClockoperator+(MyClock,MyClock);