C++期末考试题545.pdf
C+期末考试题 一、填空题(25 小题,共 50 分)(以下每小题 1 分,共 10 分)1 在 C+中,函数的参数有两种传递方式,它们是值传递和_。2 当一个成员函数被调用时,该成员函数的 _指向调用它的对象。3 在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 _,对此数据成员的访问将出现歧义。4 拷贝构造函数使用 _作为参数初始化创建中的对象。5 在公有继承的情况下,基类数据成员在派生类中的访问权限 _。6 描述命题A 小于 B 或小于 C的表达式为 _。7 用 new 申请某一个类的动态对象数组时,在该类中必须能够匹配到 _构造函数,否则应用程序会产生一个编译错误。8 静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 _。9 为了避免可能出现的歧义,C+对ifelse语句配对规则规定为:else总是与 _配对。10 设int a=3,b=4,c=5;,表达式(a+b)c&b=c的值是 _。(以下每小题 2 分,共 20 分)11 面向对象的程序设计有四大特征,它们是抽象、封装、_、_。12 在 C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型 _;在基类和派生类中,成员函数的覆盖是指 _。13 构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、_、_。14 动态联编要满足两个条件,它们是 _、_。15 在 C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 _,定义该类至少具有一个 _。16 在 C+类中,const 关键字可以修饰对象和成员函数,const 对象不能 _,const 成员函数不能 _。17 举出 C+中两种用户自定义的数据类型:_、_。18 C+中没有字符串类型,字符串是通过 _来表示的,每一个字符串都有一个结尾字符 _。19 C+中没有输入输出语句,输入输出是通过 _实现的,写出一条打印整型变量 n 的输出语句:_。20 举出 C+中两种代码复用的方式:_、_。(以下每小题 4 分,共 20 分)21 下面程序的运行结果是 _。#include void main()char a=a,b=j;float x;x=(b-a)/(F-A);printf(%dn,(int)(3.14*x);22 下面程序的运行结果是 _。#include iostream.h void main()int i=1;while(i=15)i+;if(i%3!=2)continue;else cout i=iendl;23 下面程序的运行结果是 _。#include iostream.h class test private:int num;float fl;public:test();int getint()return num;float getfloat()return fl;test();test:test()cout Initalizing default endl;num=0;fl=0.0;test:test()cout Desdtructor is active endl;void main()test array2;cout array1.getint()array1.getfloat()endl;24 下面程序的运行结果是 _。#include class A public:A()coutA:A()called.n;virtual A()coutA:A()called.n;class B:public A public:B(int i)coutB:B()called.n;buf=new chari;virtual B()delete buf;coutB:B()called.n;private:char*buf;void fun(A*a)delete a;void main()A*a=new B(15);fun(a);25 下面程序的运行结果是 _。#include int a=1,3,5,7,9;int*p=a,a+1,a+2,a+3,a+4;void main()printf(%dt%dt%dn,a4,*(a+2),*p1);printf(%dt%dt%dn,*(p+1)+a2,*(p+4)-*(p+0),*(a+3)%a4);二、问答题(每小题 5 分,共 20 分)1 若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?2 简述成员函数、全局函数和友元函数的差别。3 简述结构化的程序设计、面向对象的程序设计的基本思想。4 结构 struct 和类 class 有什么异同?三、找出下面程序(或程序段)中的语法错误,并予以纠正(每小题 4 分,共 8 分)(1)程序功能是倒序输出各给定的字符串。#include void main()char str5=First,Second,Third,Forth,Fifth;char*cp=str4,str3,str2,str1,str0;int i;while(i=5)printf(%c,*(cp+i);i+;(2)程序功能是将各个平方根值放入数组中。#include void main()int max,a,i;scanf(%d%d,max,a);double xmax;for(i=0;imax;i+)xi=sqrt(a*i);四、(8 分)下列 shape 类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。请从 shape 类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数。class shape public:virtual float area()=0;float total(shape*s,int n)float sum=0.0;for(int i=0;iarea();return sum;五、(6 分)完成顺序查找函数 f_seq()。其过程是:从表头开始,根据给定的模式,逐项与表中元素比较。如果找到所需元素,则查找成功,并打印出它在表中的顺序号。如果查找整个表仍未找到所需对象,则查找失败#include void f_seq(char*list,char*object,int len)/list 指针数组,指向字符串 /object 模式串 /len 表的长度 char*p;int strcmp(char*s,char*t);p=list;while(_)if(strcmp(*p,object)=0)break;else _;if(pnext;head-next=NULL;while(_)temp1=head;_;temp2=p;p=p-next;_;/Match while statenment return head;/返回逆置后的链表的头结点