cafuc C++ 复习题Word文档格式.docx
《cafuc C++ 复习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《cafuc C++ 复习题Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
C)私有数据成员D)私有成员函数
(8)在下列函数原型中,可以作为类AA构造函数的是
A)voidAA(int);
B)intAA();
C)AA(int)const;
D)AA(int);
(9)有如下程序:
#include<
iostream>
usingnamespacestd;
classTest
{
public:
Test(){n+=2;
}
~Test(){n-=3;
staticintgetNum(){returnn;
private:
staticintn;
};
intTest:
:
n=1;
intmain()
Testp;
…………………………………….(*)
n="
Test:
getNum()<
endl;
return0;
}
执行后的输出结果是
A)n=0B)n=lC)n=2D)n=3
如果去掉标有*号的程序行,则执行后的输出结果是
(10)有如下程序:
classAA{
intn;
AA(intk):
n(k){}
intget(){returnn;
}
intget()const{returnn+1;
AAa(5);
constAAb(6);
a.get()<
b.get();
A)55B)57C)75D)77
(11)下列关于C++函数的说明中,正确的是
A)内联函数就是定义在另一个函数体内部的函数
B)函数体的最后一条语句必须是return语句
C)标准C++要求在调用一个函数之前,必须先声明其原型
D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
(12)由于常对象不能被更新,因此
A)通过常对象只能调用它的常成员函数
B)通过常对象只能调用静态成员函数
C)常对象的成员都是常成员
D)通过常对象可以调用任何不改变对象值的成员函数
(13)下列符号中可以用作C++标识符的是
A)_radiusB)foo~barC)elseD)3room
(14)有如下程序:
intx=3;
do{
x-=2;
x;
}while(!
(--x));
执行这个程序的输出结果是
A)1B)30C)1-2D)死循环
(15)有如下程序:
#include<
voidfunction(doubleval);
doubleval;
function(val);
val;
voidfunction(doubleval)
val=3;
编译运行这个程序将出现的情况是
A)编译出错,无法运行B)输出:
3
C)输出:
3.0D)输出一个不确定的数
(16)有如下类定义:
classAA
inta;
public:
intgetRef()const{return&
a;
}//①
intgetValue()const{returna;
}//②
voidset(intn)const{a=n;
}//③
friendvoidshow(AAaa)const{cout<
}//④
其中的四个函数定义中正确的是
A)①B)②C)③D)④
(17)有如下类定义:
classFoo
Foo(intv):
value(v){}//①
~Foo(){}//②
private:
Foo(){}//③
intvalue=0;
//④
其中存在语法错误的行是
(18)有如下类声明:
classSAMPLE
SAMPLE(inti=0):
n(i){}
voidsetValue(intn0);
下列关于setValue成员函数的实现中,正确的是
A)SAMPLE:
setValue(intn0){n=n0;
B)voidSAMPLE:
C)voidsetValue(intn0){n=n0;
D)(intn0){n=n0;
(19)下列有关内联函数的叙述中,正确的是
A)内联函数在调用时发生控制转移
B)内联函数必须通过关键字inline来定义
C)内联函数是通过编译器来实现的
D)内联函数函数体的最后一条语句必须是return语句
(20)下列情况中,不会调用拷贝构造函数的是
A)用一个对象去初始化同一类的另一个新对象时
B)将类的一个对象赋值给该类的另一个对象时
C)函数的形参是类的对象,调用函数进行形参和实参结合时
D)函数的返回值是类的对象,函数执行返回调用时
(21)下列符号中,正确的C++标识符是
A)enumB)2bC)foo-9D)_32
(22)if语句的语法格式可描述为:
格式1:
if(<
条件>
)<
语句>
或
格式2:
语句1>
else<
语句2>
关于上面的语法格式,下列表述中错误的是
A)<
部分可以是一个if语句,例如if(if(a==0)…)…
B)<
部分可以是一个if语句,例如if(…)if(…)…
C)如果在<
前加上逻辑非运算符!
并交换<
和<
的位置,语句功能不变
D)<
部分可以是一个循环语句,例如if(…)while(…)…
(23)若有下面的函数调用:
fun(a+b,3,max(n-1,b))
则fun的实参个数是
A)3B)4C)5D)6
(24)以下关键字不能用来声明类的访问权限的是
A)publicB)staticC)protectedD)private
(25)有如下程序
inti=1;
classFun{
staticinti;
intvalue(){returni-1;
intvalue()const{returni+1;
intFun:
i=2;
intmain(){
inti=3;
Funfun1;
constFunfun2;
____________
若程序的输出结果是:
123
则程序中下划线处遗漏的语句是
A)cout<
fun1.value()<
Fun:
i<
fun2.value();
B)cout<
fun1.value()<
C)cout<
fun2.value()<
D)cout<
fun1.value();
(26)有如下程序:
classObj{
Obj(){i++;
~Obj(){i--;
staticintgetVal(){returni;
intObj:
i=0;
voidf(){Objob2;
ob2.getVal();
Objob1;
f();
Obj*ob3=newObj;
ob3->
getVal();
deleteob3;
Obj:
程序的输出结果是
A)232B)231C)222D)221
(27)下列关于类定义的说法中,正确的是
A)类定义中包括数据成员和函数成员的声明
B)类成员的缺省访问权限是保护的
C)数据成员必须被声明为私有的
D)成员函数只能在类体外进行定义
(28)使用输入输出操作符setw,可以控制
A)输出精度B)输出宽度
C)对齐方式D)填充字符
(29)下列字符串中,不可以用作C++标识符的是
A)y_2006B)_TEST_H
C)ReturnD)switch
(30)字面常量42、4.2、42L的数据类型分别是
A)long,double,intB)long,float,int
C)int,double,longD)int,float,long
(31)执行下列语句段后,输出字符“*”的个数是
for(inti=50;
i>
1;
--i)cout<
'
*'
;
A)48B)49C)50D)51
(32)有如下函数定义:
voidfunc(inta,int&
b){a++;
b++;
若执行代码段:
intx=0,y=1;
func(x,y);
则变量x和y的值分别是
A)0和1B)1和1
C)0和2D)1和2
(33)有如下程序:
classA{
staticinta;
voidinit(){a=1;
A(inta=2){init();
a++;
intA:
a=0;
Aobj;
obj.a;
运行时输出的结果是
A)0B)1C)2D)3
(34)在语句cin>
>
data;
中,cin是
A)C++的关键字B)类名
C)对象名D)函数名
(35)有如下程序:
classtest{
test(){cout<
constructor"
test(inta){cout<
a<
test(consttest&
test)
{
a=test.a;
cout<
copyconstructor"
~test(){cout<
destructor"
intmain()
testA(3);
A)3
B)constructor
destructor
C)copyconstructor
D)3
destructor
(36)有如下程序:
classPoint{
staticintnumber;
Point(){number++;
~Point(){number--;
intPoint:
number=0;
voidmain(){
PointA,B;
PointC;
Point:
number<
A)3B)4C)6D)7
(37)有如下程序:
classSample
friendlongfun(Samples);
Sample(longa){x=a;
longx;
longfun(Samples)
if(s.x<
2)return1;
returns.x*fun(Sample(s.x-1));
intsum=0;
for(inti=0;
i<
6;
i++){sum+=fun(Sample(i));
sum;
A)120B)16C)154D)34
(38)在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是
A)autoB)extern
C)registerD)static
(39)对于一个类定义,下列叙述中错误的是
A)如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B)如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
C)如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D)如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
(40)下列符号中不属于C++关键字的是
A)friendB)namespace
C)continueD)byte
(41)下列各组类型声明符中,含义相同的一组是
A)unsignedlongint和long
B)signedshortint和short
C)unsignedshort和short
D)shortint和int
(42)必须用一对大括号括起来的程序段是
A)switch语句中的case标号语句
B)if语句的分支
C)循环语句的循环体
D)函数的函数体
(43)关于函数重载,下列叙述中错误的是
A)重载函数的函数名必须相同
B)重载函数必须在参数个数或类型上有所不同
C)重载函数的返回值类型必须相同
D)重载函数的函数体可以有所不同
(44)有如下程序:
classMyClass{
MyClass(){++count;
~MyClass(){--count;
staticintgetCount(){returncount;
staticintcount;
intMyClass:
count=0;
intmain(){
MyClassobj;
obj.getCount();
MyClassobj2;
MyClass:
getCount();
obj2.getCount();
A)121B)232
C)221D)122
(45)有如下程序:
MyClass(intx):
val(x){}
voidPrint()const{cout<
const:
val="
val<
\t'
voidPrint(){cout<
intval;
constMyClassobj1(10);
MyClassobj2(20);
obj1.Print();
obj2.Print();
A)val=10const:
val=20
B)const:
val=10const:
C)const:
val=10val=20
D)val=10val=20
(46)有如下程序:
classPart{
Part(intx=0):
val(x){cout<
~Part(){cout<
classWhole{
Whole(intx,inty,intz=0):
p2(x),p1(y),val(z){cout<
~Whole(){cout<
Partp1,p2;
Wholeobj(1,2,3);
}
A)123321B)213312
C)213D)123123
二、填空题
(1)执行语句序列
intx=10,&
r=x;
cout<
x<
-'
r<
输出结果为___________。
(2)下列程序的输出结果为
Objectid=0
Objectid=l
请将程序补充完整。
classPoint
Point(intxx=0,intyy=0){X=xx;
Y=yy;
countP++;
~Point(){countP--;
intGetX(){returnX;
intGetY(){returnY;
staticvoidGetC(){cout<
Objectid="
countP<
intX,Y;
staticintcountP;
___________//静态数据成员的初始化
Point:
GetC();
PointA(4,5);
A.GetC();
(3)非成员函数应声明为类的___________函数才能访问这个类的private成员。
(4)有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是___________。
(5)若下面程序运行时输出结果为
1,A,10.1
2,B,3.5
voidtest(int,char,double___________);
test(1,'
A'
10.1);
test(2,'
B'
);
voidtest(inta,charb,doublec)
'
b<
c<
(6)有如下类声明:
classMyClass
inti;
intj;
protected:
intk;
intm,n;
其中,私有成员的数量为___________。
(7)有如下程序:
classCon
charID;
Con():
ID('
){cout<
1;
Con(charID):
ID(ID){cout<
2;