1、C 复习题资料01 C+程序的头文件和源程序文件扩展名分别为_和_。02 在C+程序中,使用基本输入/输出流需要包含的头文件是_。03 字符串类型的变量一般用_和_类型的变量表示。04 一个二维字符数组a1020能够存储_个字符串,每个字符串的长度最多为_。05 C+语言中,唯一的三目运算符是_.06 设int x=10,则表达式x=10?20:30的值分为_07 数组元素ai是该数组中的第_个元素。08 在C+程序中,一个数组的名字实际上是指向该数组_元素的指针,并且在任何时候都不允许修改。09 除了在_和_的情况下,定义引用变量必须初始化。10 执行_操作将动态分配p所指向的数据空间,执行
2、_操作将释放由p所指向的动态分配的数据空间。答案 01 .h .cpp 02 iostream.h 03 字符指针 字符数组 04 10 19 05 ? : 06 20 07 i+1 08 第一个 09 函数参数 函数返回值 10 new p; delete p11 下面程序是计算以内能被整除的自然数之和。请完成下列程序。includevoid main() int x=1,sum; _; while(true) if (_) break; if (_) sum+=x; x+; 答案 sum=0 x1000 x%3=012 下列程序求解矩形两条对角线上的元素之和,请完成下列程序。include
3、void main() int i,j,sum1,sum2; int a4=1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8; sum1=0; _; for(i=0;i4;i+) for(j=0;j4;j+) if (_) sum1+=aij; if (_) sum2+=aij; coutsum1,sum2endl;答案 sum2=0 i=j i+j=313 下列程序计算由0到9之间的任意个不相同的数字组成的三位数共有多少种不同的组合方式。请完成下列程序。includevoid main() int i,j,k,count=0; for(i=9;i=1;i-) for(j=9;j
4、=0;j-) if(_) continue; else for(k=0;k=9;k+) if (_)count+; coutcountendl;答案 i=j (k!=i)&(k!=j) 14 在程序中,每个变量都必须遵循_的原则。15 具有相同函数名但具有不同参数表的函数成为_。16 一个函数可以直接或间接调用自己,这种函数叫做_。17 假设有如下函数定义:void Fun(int x,int y=100);则语句Fun(5)与语句_等价。18 在函数原型声明中,必须声明函数参数的类型,但可以省略_.19 静态整型变量的初始值是_。20 假定一个函数参数说明为int x,则等价的指针参数说明为
5、_。21 假定一个函数参数说明为int x(是常数),则等价的指针参数说明为_。答案 14 先定义后使用 15 重载函数 16 递归函数 17 Fun(5,100) 18 参数名 19 0 20 int *x 21 int (*x)N22 下面的函数un未使用中间变量实现了对两个数的交换,请完成下列函数的定义。void Fun(int& x,int& y) x+=y; y=_; _;答案 x-y x=x-y23 下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。函数TotalSum计算数组各元素之和。请完成下列程序。#include _;vo
6、id main() int a5=2,3,6,8,10; _; Total=TotalSum(a,5); cout”Sum of array:”Totalendl;int TotalSum(int array,int len) _; for(int i=0;_;i+) _; return sum;答案 int TotalSum(int* ,int); int Total int sum=0 ilen sum+=arrayi24 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_,共同的行为被描述为类中的_。25 对类中成员函数和属性的访问是通过_、_、_这三个关键字来控制的
7、。26 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为_权限,而把成员函数(方法)定义为_权限。27 在结构定义中,数据成员和成员函数的默任权限是_。在类定义中,数据成员和成员函数的默任权限是_。28 类中构造函数有_个,析构函数有_个。29 在定义类的对象时,程序将自动调用该对象的_函数初始化对象自身。30 在撤消类的对象时,程序将自动调用该对象的_函数。31 _运算符对指定类型对象动态分配内存并返回该类型的_。32 在类中定义和实现的函数称为_。33 非成员函数应声明为类的_才能访问这个类的private成员。34 若要把类FriendClass定义为类MyClass的友元
8、类,则应在类MyClass的定义中加入语句_35 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句_。答案 24 数据成员 成员函数 25 public protected private 26 private public 27 public private 28 一或多 一 29 构造30 析构 31 new 指针 32 内联函数也称内置函数) 33 友元函数34 friend class FriednFunctiou();35 friend void FriendFunction();36 在下面程序的横线处填上
9、适当的语句,使该程序执行结果为10。#includeclass MyClasspublic: _; /为x置值 _; /取x值private: int x;void main() MyClass my(10); coutmy.GetNum()endl;答案 MyClass(int i)x=i; int GetNUm()return x;37 下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。class MyClass public: enum WeekSun,Mon,Tue,Wed,Thu,Fri,Sat; Week week;void fun(MyClass& my)/将对象my的w
10、eek赋值为所定义的枚举类型值为的枚举量 _=_;答案 my.week Wed38 完成下面的定义。class MyClasspublic: MyClass()x=0; _ int GetNum(_ my);private: int x;int GetNum(_ my) return my.x;答案 friend MyClass MyClass 39 在语言中,每个类都有一个隐含的指针叫做_指针,该指针指向_。40 当一个类对象的成员函数被调用时,该成员函数的_指向调用它的对象。41 指向数组的指针是指_42 指针数组是指_43 有如下定义语句:MyClass *p10;则当指针数组p离开它的
11、作用域时,系统自动调用该类析构函数_次。44 有如下定义语句:MyClass p10;则系统自动调用该类构造函数_次,则当对象数组p离开它的作用域时,系统自动调用该类析构函数_次。答案 39 this 调用它的对象 40 this 41 该指针指向一个数组 42 数组的每个元素都是指针 43 0 44 10 10 45 下面的类定义了拷贝初始化构造函数,请完成该类的定义和实现。class MyClasspublic: MyClass(int xx=0,int yy=0)X=xx;Y=yy; _;/拷贝初始化构造函数private: int X,Y;MyClass:_ /拷贝初始化构造函数的实现
12、 X=_; _;答案 MyClass(MyClass& p) MyClass(MyClass& p) p.X Y=p.Y46 下面程序在构造函数和析构函数申请和释放类的私有成员,请完成该类的实现。class MyClasspublic: MyClass(int a); MyClass();private: int* X;MyClass:MyClass(int a) _;MyClass:MyClass() _;答案 X=new int(a) delete X47 重载运算符的函数名由关键字_引出。48 单目运算符作为类成员函数重载时_形参;双目运算符作为_重载时需声明其右操作数,作为_重载时需声
13、明全部操作数。49 利用成员函数对二元运算符重载,其左操作数为_,右操作数为_。答案 47 operator 48 没有 类成员函数 友元函数 49 this指针 成员函数参数50 下列程序定义了一实部为real,虚部为imag的复数类complex,并在类中重载了复数的+、-操作。请将下列程序补充完整。class Complexpublic: Complex(double r=0.0,double i=0.0)_ _operator +(Complex&); _operator (Complex&,Complex&);private: double real,imag;_operator +
14、(Complex& c) return Complex(_);_operator (Complex& c1,Complex& c2) return Complex(_);答案 real=r;imag=i; Complex friend Complex Complex Complex: real+c.real,imag+c.imag Complex c1.real+c2.real,c1.imag+c2.imag51 如果类Alpha继承了类Beta,则类Alpha称为_类,类Beta称为_类。52 若类是类的私有派生类,类是类的派生类,则类_访问类的保护成员和公有成员。53 当用protecte
15、d继承从基类派生一个类时,基类的public成员成为派生类的_成员,protected成员成为派生类_成员。54 多重继承情况下,基类的构造函数的执行顺序取决于_派生类时所指定的各基类的顺序。55 在建立派生类的对象时,构造函数的执行顺序为:先执行_,再执行_,最后执行_。56 在结束派生类的对象时,析构函数的执行顺序为:先执行_,再执行_,最后执行_。57 构造函数_被继承,析构函数_被继承。58 在派生类中使用基类的成员,可以显示地使用_来使用基类成员。59 多重继承时,多个基类中拥有一个同名成员,则_用调整访问权限确定对该成员的访问。60 指向基类对象的指针变量也可以指向_的对象。61
16、一个指向基类的指针,通过_可以置给一个指向派生类的指针,但程序员必须保证该基类指针实际是指向派生类对象。62 _类的对象可作为基类的对象处理。答案 51 派生 基 52 不能 53 protected protected 54 定义 55 基类构造函数 对象成员构造函数 派生类的构造函数 56 派生类的析构函数 对象成员析构函数 基类析构函数 57 不能 不能 58 基类名限定 59不能 60 派生类 61 强制类型转换 62 派生63 在划线处填上适当的语句,完成下列程序。#includeclass Pointpublic: Point(double a,double b,double c)
17、_ double Getx()return X; double Gety()return Y; double Getz()return Z;private: _ protected: _ ; class Line: _Point public: Line(double a,double b,double c,double d)_ void show() coutGetx()endl; coutGety()” ”Yendl; coutGetz()” ”Zendl; coutKendl; private: double K; ; void main() Line obj(1.2,3.4,5.6,7
18、.8); obj.show();答案 X=a;Y=b;Z=c; double X; double Y,Z; protedted Point(a,b,c) k=d;64 根据基类的定义和测试程序,完成下面派生类的定义。Class Pointpublic: Point(int i=0,int j=0)X=i;Y=j; Void Move(int xOff,int yOff)X+=xOff;Y+=yOff; int GetX()return X; int GetY()return Y;private: int X,Y;class Rectangle:private Pointpublic: Rect
19、angle(int x,int y,int w,int h)_ void Move(int xOff,int yOff)_ int GetX()_ int GetY()_ int GetW()_ int GetH()_private: int W,H; #includevoid main()Rectangle rect(1,2,3,4);rect.Move(5,6);coutThe data of rect(X,Y,W,H):( rect.GetX(),rect.GetY(), rect.GetW(),rect.GetH()endl;答案 Point(s,y) W=w;H=h Point:Mo
20、ve(xoff,yoff) return Point:GetX(); return Point:GetY() return W; return H;65 在横线处填上适当的语句,完成程序。#includeclass Apublic: void f(int i)coutiendl; void g()coutgendl;class B:private Apublic: void h()couthendl; _;void main() B d1; d1.f(6); _.h();答案 void f(int i)A:f(i); d166 在下列给定的继承结构中,判断横线行语句是否有二义性。class B
21、ase1public: int x; int fun1(); int fun2(); int fun2(int); int fun3();class Base2public: char fun2(); int fun3();private: int x; int fun1();class Derived:public Base1,public Base2;void main() Derived d; d.x=1; /_ d.fun1();/_ d.fun2();/_ d.fun2(10);/_ d.fun3();/_答案 有 有 有 有 有67 动态联编中直到_时才能确定调用哪个函数;而静态联
22、编则是在_时进行的。68 静态联编所支持的多态性称为_多态性,动态联编所支持的多态性则称为_多态性,运行多态性由_来支持。69 对虚函数使用对象指针或引用调用,系统使用_联编;使用对象调用时,系统使用_联编。70 动态联编时在_支持下,通过_调用来实现的。71 在一个成员函数内调用一个虚函数时,对该虚函数的调用进行_联编。72 C+中不支持虚构造函数,但_虚析构函数。73 在类定义中,将_置于虚函数的函数原型的末尾可以将虚函数声明为存虚函数。74 带有_的类称为抽象类,它只能作为_来使用。答案 67 运行 编译 68 编译 运行 虚函数 69 动态 静态 70 虚函数 指针或引用 71 动态
23、72 支持 73 =0 74 纯虚函数 基类75 下列程序运行结果如下:Derive1s Print() called. 88Derive2s Print() called. 99根据结果将程序补充完整。#includeclass Basepublic: Base(int i)b=i; _;protected: int b;class Derived1:public Basepublic: _ void Print() cout”Derive1s Print() called. ”bPrint();void main() Base* d1=new Derived1(88); _; fun(d1); fun(d2); delete d1; _;答案 virtual void Print()=0 Derive(int i):Base(i) cout”Derive2s Print() called”endl;Base* obj Base* d2=new Drive2(99) delete d276 根据不同的输出结果,在函数Tone中填入正确语句。#includeclass Instrumentpublic: virtual void Print(