福师《C+程序设计》考试复习题_第1页
福师《C+程序设计》考试复习题_第2页
福师《C+程序设计》考试复习题_第3页
福师《C+程序设计》考试复习题_第4页
福师《C+程序设计》考试复习题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、福师09秋学期C+程序设计考试复习题一Share 2010-03-15 21:43:58 阅读96 评论0 字号:大中小订阅 一、选择填空:,(本大题共16小题,每小题 2分,共32 分)1. 对类的构造函数和析构函数描述正确的是_B_ 。 (涉及知识点:构造和析构函数,可参考教材第9章9.1-9.6小节,P293-317) A) 构造函数不能重载,析构函数可以重载 B)构造函数可以重载,析构函数不能重载 C)构造函数可以重载,析构函数也可以重载 D)构造函数不能重载,析构函数也不能重载2. 类MyClass的定义如下:(涉及知识点:构造函数,类成员赋值,可参考教材9.1-9.3小节,P293

2、-306)class MyClasspublic: MyClass( ) MyClass(int i) value = new int(i); int* value; 若要对 value赋值, 则下面语句正确的是: DA) MyClass my; my.value = 1000;B) MyClass my; *my.value = 1000;C) MyClass my; my.*value = 1000;D) MyClass my(l0);3. 假定MyClass为一个类,则执行MyClass a,b(2),*p;语句时,自动调用该类构造函数 _A 次。 (涉及知识点:构造函数的调用,可参考教

3、材9.1-9.3小节,P293-306)A A)2 B)3 C)4 D)54对于拷贝构造函数,正确的描述是_A_。(涉及知识点:拷贝构造函数,可参考教材9.5小节,P311-316) A)在C+语言中,如不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数 B)必须为每个类定义拷贝构造函数 C)如果要使用拷贝构造函数,则必须在类中先定义D)当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数5. 下面对于友元函数描述正确的是_C_。(涉及知识点:友元函数,可参考教材8.7小节,P281-288) A)友元函数的实现必须在类的内部定义 B)友元函数是类的成员函数 C)友元函

4、数破坏了类的封装性和隐藏性 D)友元函数不能访问类的私有成员6. 下面对静态数据成员的描述中,正确的是_D_。(涉及知识点:静态数据成员,可参考教材8.6小节,P277-280) A)静态数据成员可以在类体内进行初始化 B)静态数据成员不可以被类的对象调用 C)静态数据成员不能受private控制符的作用 D)静态数据成员可以直接用类名调用7. 为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问 权限定义为_C_。()(涉及知识点:访问控制和静态数据成员,可参考教材8.4、8.6小节,P269-280) A)public B)protected C)private D)

5、static8. 下列虚基类的声明中,正确的是_D_。(涉及知识点:虚拟继承,可参考教材10.7小节,P350) A) class virtua1 B:public A B) virtual class B:public A C) class B:public A virtual D) c1ass B:virtual public A9. 下面关于类和对象的描述中,错误的是_A_。(涉及知识点:类和对象,可参考教材第8和第9章)A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量B)类和对象之间的关系是抽象和具体的关系C)对象是类的实例,一个对象必须属于一个已知的类D)类是具有共同行为

6、的若干对象的统一描述体10. 以下各选项组中,均是C+语言关键字的组是_A_。(涉及知识点:C+关键字,可参考教材附录A.4,P535)A) public operator this B)shod string staticC)it while D)private cout printf11. 设int a10,b11,c12;,表达式(a+b)?0:1的值为_B_。 (涉及知识点:算术运算,可参考教材3.1.5,P69) (没搞懂这题是什么意思?)A)2 B)0 C)-2 D)112. 下列描述正确的是_D_。(涉及知识点:关系与逻辑操作,switch语句和if语句,可参考教材4.4和2.2

7、,P114,P27)A)表示mn为true或mn&mB)switch语句结构中必须有default语句C)if语句结构中必须有else语句D)如果至少有一个操作数为true,则包含“|”运算符的表达式为true13. 下列语句中不是死循环的是_A_。 (涉及知识点:循环语句,可参考教材2.3小节,P34)A)int i10; while(1) i-; if(i=1)break; B)for( int i1:i=0)/这个i增大最大之后会变成负数,所以也不是死循环,但与A相比,选A更好。D)int i=1;for(;)ii+1;14. 下面关于break语句的描述中,不正确的是_D_。(涉及知识

8、点:break语句,可参考教材2.6小节,P51)A)break可以用于循环体内 B) break语句可以在for循环语句中出现多次C)break语句可以在switch语句中出现多次 D)break语句可用于if条件判断语句内 (这个题有答案吗?)15. 下面关于数组的描述错误的是_D_。(涉及知识点:数组,可参考教材3.5小节,P83)A)在C+语言中数组的名字就是指向该数组第一个元素的指针B)长度为n的数组,下标的范围是0-n-1C)数组的大小必须在编译时确定D)数组只能通过值参数和引用参数两种方式传递给函数16. 结构化程序设计的3种结构是_D_。(涉及知识点:结构化程序设计,可参考教材

9、1.6.2小节,P16)A)顺序结构、选择结构、转移结构 B)分支结构、等价结构、循环结构C)多分支结构、赋值结构、等价结构 D)顺序结构、选择结构、循环结构二、写出下列程序的运行结果(本大题共3小题,共14分)1(涉及知识点:构造函数设置默认参数,可参考教材9.2小节,P298-230)#include class Tdatepublic: Tdate(int m=8,int d=20,int y=2009) month=m; day=d; year=y; cout month / day / year endl; protected: int month; int day; int yea

10、r;void main() Tdate aday; Tdate bday(7); Tdate cday(11,12); Tdate dday(8,2,2008);结果:8/20/20097/20/200911/12/20098/2/20082(涉及知识点:重载模板函数,可参考教材第14.1、14.2小节,P461或课件20.4小节)#include #include template T max(T a,T b) return ab?a:b;char* max(char* a,char* b) return (strcmp(a,b)?a:b);void main() cout Max(summ

11、er,autumn) is max(summer,autumn) endl;这个程序通过不了编译的。Main()要改成:void main()char *a =summer;char * b = antumn;cout Max(summer,autumn) is max(a,b) endl;结果是:Max(summer,autumn) is summer3. (涉及知识点:增量操作,可参考教材4.6小节,P122)#includemain()int a,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b,c,d:%d,%d,%d,b,c,d);return 0; 输出结

12、果为: b,c,d:10,12,120三、填空题,(本大题共3 小题,共 25分)1应在下列程序划线处填入的正确语句#include class Base public: void fun()coutBase:funENDL;class Derived:public Base void fun()_ Base:fun();_ /显示调用基类的函数fun()coutDerived:funSetNum(50);_(涉及知识点:指针,类,可参考教材3.7小节和第8章,P91,P252 )四、简单编程:(本大题共3 小题,共29分)1、编写一个程序求一元二次方程的解。(涉及知识点:条件语句,可参考教材

13、2.2小节,P27) 讨论下述情形:(1)a=0,不是二次方程。 (2)b2-4ac=0,有两个相等实根。 (3) b2-4ac0,有两个不等实根。 (4) b2-4ac0,有两个复根(表示成x+yi,x-yi)。#include #include using namespace std;int main()int a,b,c;while (cinabc)if (a = 0)cout不是二元方程endl;else int deta = b*b - 4*a*c;if (deta = 0)cout有两个相等的根为:-b/(2*a) 0)cout有两个不等实根为:(-b+sqrt(1.0*deta)

14、/(2*a) (-b-sqrt(1.0*deta)/(2*a)endl;elsedouble f1 = -1.0*b/2/a;double f2 = sqrt(-1.0*deta)/2/a;cout有两个复根为:f1+f2i f1-f2in;return 0;2. 编程序求 1/1!+1/2!+1/3!+.+1/100! ( n!=1*2*3*(n-1)*n )(涉及知识点:循环语句,可参考教材2.3小节,P34)#include using namespace std;int main()/1/1!+1/2!+1/3!+.+1/100! ( n!=1*2*3*(n-1)*n )double

15、dwResult = 1.0;double dwTmp = 1.0;for (int nInc = 2; nInc = 100 ; nInc+)dwTmp = dwTmp/nInc;dwResult += dwTmp;cout结果为:dwResultendl;/结果为:.71828return 0;3、编程:统计在所输入的N个实数中有多少个正数、多少个负数、多少个零。(涉及知识点:循环语句,可参考教材2.3小节,P34)#include using namespace std;int main()/统计在所输入的N个实数中有多少个正数、多少个负数、多少个零int N;int nPositive

16、 = 0,nNegative = 0,nZero = 0;double data;coutN;coutdata;if (data 0.0)nPositive+;else if (data 0.0)nNegative+;elsenZero+;cout正数、负数、零的个数分别为:nPositive nNegative nZero1; I-=2)cout*;A)24 B)25C)26 D)506.有如下定义:_。(涉及知识点:数组与指针,可参考教材3.5和3.7小节,P83,P91)int a5=1,3,5,7,9,*p=a;下列表达式中不能得到数值5 的是A)a2 B)a3C)*(p+2) D)*

17、p+47.已知函数f 的原型是void f(int *a, long & b);,变量v1、v2 的定义是:_。int v1; long v2;(涉及知识点:指针和引用参数,可参考教材5.2小节,P139)下列调用语句中正确的是A)f(v1, &v2); B)f(v1, v2);C)f(&v1, &v2); D)f(&v1, v2);8.有如下类定义:_。(涉及知识点:静态数据成员,可参考教材8.6小节,P277)class Pointprivate;static int how_many;_ how_many=0;要初始化Point 类的静态成员how_many,下划线处应填入的内容是A)i

18、ng B)static intC)int Point: D)static int Point:9.在下列关键字中,不能用来表示继承方式的是_。(涉及知识点:继承访问控制,可参考教材10.4小节,P337)A)private B)staticC)public D)protected10.已知Value 是一个类,Value 是Value 类的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是_。(涉及知识点:运算符重载,可参考教材8.3小节,P261)A)Value operator+(Value v, int i); B)Value operator+(Value v=value,

19、 int i);C)Value operator+(Value vint i=0); D)Value operator+(Value v=value, int i=0);11.有如下4 个语句:_。(涉及知识点:输入输出语句,可参考教材2.5小节,P45) coutAsetfill(*)leftsetw(7)Bendl; coutsetfill(*)leftsetw(7)ABendl; coutAsetfill(*)rightsetw(7)Bendl; coutsetfill(*)rightsetw(7)ABendl;其中能显示A*B 的是A)和 B)和C)和 D)和12.有如下类定义:_。(

20、涉及知识点:构造函数,可参考教材9.1-9.4小节,P293)class MyClassInt value;public;MyClass(int n): value (n) int gerValue()const return value;则类MyClass 的构造函数的个数是A)1 个 B)2 个C)3 个 D)4 个13.有如下类和对象的定义:_。(涉及知识点:静态成员函数的调用,可参考教材8.6.2,P280)class Constantspublic;static double getPI()return 3.1416;Constants constants;下列各组语句中,能输出3.

21、1416 的是A)coutgetPI();和coutConstants:gerPI();B)coutconstants.getPI();和coutConstants.getPI();C)coutgetPI();和coutgetPI();D)coutconstants.getPI();和coutConstants:getPI();14.有如下类声明:_。(涉及知识点:访问控制和继承访问控制,可参考教材8.4、10.4小节,P269、P337)class Baseprotected;int amount;public;Base(int n=0): amount(n)int getAmount()c

22、onst retum amount; ;class Derived: public Base protected;int value;public;Derived(int m, int n): value(m). Base(n)Int getData()const return value+amount; ;已知x 是一个Derived 对象,则下列表达式中正确的是A)x.value+ x.getAmount() B)x.getData()-x.gctAmount()C)x.getData()-x.amount D)x.value+x.amount15.下列有关抽象类和纯虚函数的叙述中,错误的

23、是_。(涉及知识点:抽象类和纯虚函数,可参考教材13.1-13.2,P424)A)拥有纯虚函数的类是抽象类,不能用来定义对象B)抽象类的派生类若不实现纯虚函数,它也是抽象类C)纯虚函数的声明以“=0;”结束D)纯虚函数都不能有函数体16.有如下程序:_。(涉及知识点:运算符重载,可参考教材第8章,P252)#includeUsing namespace std;Class Amountint amount;public;Amount(int n=0): amount(n)Int getAmount()constreturn amount;Amount &operator +=(Amount a

24、)amount+=a.amount;return ;int main()Amount x(3),y(7);x+=y;coutx.getAmount()endl;return 0;已知程序的运行结果是10,则下划线处缺失的表达式是A)*this B)thisC)&amount D)amount17.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“left”,输出效果将发生变化的是_。(涉及知识点:输入输出语句,可参考教材2.5小节,P45)A)coutleftsetfill(*)357;B)coutleftsetw(5)357;C)coutleftsetw(5)ABCDE;D)cou

25、tleftABCDE;18.有如下程序:_。(涉及知识点:虚函数和继承,可参考教材第10章,P 327)#includeusing namespace std;class GApublic;virtual int f()retum l;class GB: public GApublic;virtual int f()return 2;void show(GA g)coutg.f();void display(GA &g)coutg.f();int main()GA a: show(a); display(a);GB b: show(b); display(b);retum 0;运行时的输出结果

26、是A)1111 B)1211C)1112 D)121219.下列有关类继承的叙述中,错误的是_。(涉及知识点:继承,可参考教材第10章,P327)A)继承可以实现软件复用B)虚基类可以解决由多继承产生的二义性问题C)派生类构造函数要负责调用基类的构造函数D)派生类没有继承基类的私有成员20.下列有关运算符重载的叙述中,正确的是_。(涉及知识点:运算符重载,可参考教材8.3小节,P262)A)运算符重载是多态性的一种表现B)C+中可以通过运算符重载创造新的运算符C)C+中所有运算符都可以作为非成员函数重载D)重载运算符时可以改变基结合性二、填空题(本大题共10小题,每小题 2分,共20 分)(1

27、)break语句用在循环语句for、while、do-while和_switch_中。(涉及知识点:break语句,可参考教材2.6小节,P51)(2)C+模板分为_类模板_和函数模板。(涉及知识点:模板,可参考教材第14章,P461)(3)含有纯虚函数的类称为_抽象类_。(涉及知识点:抽象类,可参考教材第13章,P424)(4)C+语言中的每条基本语句以_分号_作为结束符。(涉及知识点:C+编程流程,可参考教材第1.4小节,P8)(5)继承的方式有公有继承、私有继承和_保护继承_ _三种。(涉及知识点:访问控制,可参考教材10.4小节,P337)(6)在面向对象的程序设计中,将数据和处理数据

28、的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“_对象_”。(涉及知识点:对象,可参考教材第9章,P292)(7)指针数组是由_指针_构成的数组。(涉及知识点:指针与数组,可参考教材3.5和3.7,P83,P91)(8)如果使用数组名称为函数参数,形实结合时,传递的是_数组的首地址_。(涉及知识点:数组与指针,可参考教材第3.7小节,P91)(9)在类的对象被创建的时候,_构造函数_函数会被自动调用。(涉及知识点:构造函数,可参考教材9.1-9.4小节,P293)(10)在类中,_静态_成员为类的所有对象所共享。(涉及知识点:静态成员,可参考

29、教材8.6小节,P277)三、写出程序运行结果,(本大题共5 小题,共 30分)1(涉及知识点:const用法,可参考教材3.7小节,P91)有如下程序: #includeusing namespace std;class VACpublic;int f() const return 3; int f() return 5;Int main()VAC v1;const VAC v2;coutv1.f()v2.f();feturn 0;运行时的输出结果是什么? 532. (涉及知识点:继承,可参考教材第10章,P327)有如下程序: #include #include using namespa

30、ce std;class Base int x;public: Base() Base(int n) x=n; cout n; ;class Derived :public Base int y;public: Derived(int m, int n): y(m), Base(n)coutm; Derived(int m): y(m)coutm;int main() Derived dl(3), d2(5,7); system(PAUSE); return 0;运行时的输出结果是什么? 3753. (涉及知识点:switch语句,可参考教材2.2小节,P27)# include void SB(char ch) switch(ch) case A: case a: cout well!; break; case B: case b: cout good!; break; case C: case c: cout pass!; break; default: cout nad!; break; void main() char a1=b,a2=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论