return-l; )(1) (2) (3) 3.
Class A{ int a,b; public:
A(int aa=0,int bb=0) :a(aa),b(bb)——(1)——{}//分别用aa和bb对应初始化a和b
}; main(){
A x(5), y(x)——(2)——;//定义类A的对象x并用5初始化数据成员a,同时定义y并用x初始化数据成员a
A *p=&x—(3)——; //定义p指针,使之指向对象x }
(1) (2) (3)
四、写出程序运行结果(每小题6分,共18分) 1.#includeconst int N=5; void main() {
int i,p=l,s=0; for(i=l;icout<1 1 1 2 2 3 3 6 9 4 24 332.#include void main() {chars[3][5]={“1234”,“abcd”,“+-*/”}; char *p[3];
3
for(intI=0;I<3;I++)p[l]=s[I];
fOr(1=2:I>=0;1--)cout<
3.#include class Date {public:
void SetDate(int y,iht m,int d) {Year=y;Month=m;Day=d; }
void PrintDateO {eout<Date(int y,int m,int d) {SetDate(y,m,d); } protected:int Year,Month,Day; };
class Time {
public:
void SetTime(int h,int m,int s) {Houre=h;Minutes=miSeconds=s; } void PrintTirne() { cout<< Houre<<\" :\"<Time() (SetTime(0,0,0); }Time(int h,int m,int s) {SetTime(h,m,s);} protected:
iht Houre,Minutes,Seconds; };
class Date_Time: public Date, public Time {
public:
Date_Time ( ): Date (), Time () { }
Date_Time (int y,int mo,int d,int h,int mi,int s); Date(y,mo,d) ,Tirne(h,mi,s) { void PrintDate_Time() {PrintDateO;PrintTimeO;} void main() {
Date_Time dt_a,dt_b(2002, 10,1,6,0,0) dt_a. PrintDate_Time() dt_b. SetTime(23,59,59) dt_b. PrintDate_Time() dt_a. SetDate( 2002,12,31) dt_a. PrintDate Time() };
void main()
Date_Time dt_a, dt_b(2002,10,1,6,0,0)
4
dt_a. PrintDate_Time() dt_b. SetTime(23,59,59) dt_b. PrintDate_Time() dt_a. SetDate (2002,12,31 ) dt_a. PrintDate_Time() }
五、指出程序或函数的功能(每小题6分,共12分)
1. #includedouble fl(int n){
double sign=1,s=1; for(int i=2;i<=n;i++){ s+=sign/(i*i); sign*=-1; }
return S; }
void main( ) { int a; cin>>a
cout<2.void Output(IntNode*f) {if(! f)return; while(f){
cout<data<<‘’; f=f一>next; }cout<假定IntNode的类型定义为: struct IntNode{intdata; //结点值域 IntNode~next;//结点指针域 };
六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误 (6分)。
下面是一个类的定义,存在着3处语法错误(有的为单个字符),请指出错误行的行号并改正。
classCE{ //1行 private: //2行 int a,b; //3行
intgetminO{return(a5
public //5行 int c; //6行
void SetValue(int xl,int x2,int x3){ //7行 a=xl;b=x2;c=x3; //8行 }; //9行
int GetMin(); //10行 }; //11行
intGetMin(){ //12行
intd=getmin(); //13行 return(d错误行的行号为——、——和——。 分别改正为——、——和——。七、编程(每小题8分,共16分)
1.求满足不等式2’+42+...+nZ<1000的最大n值,假定分别用i和s作为取偶数值和累加值的变量,并限定使用d。循环编程。
6
2.根据下面类中Uion函数的原型和注释写出它的类外定义。
classStrings{
char*s; //指向动态分配的字符串数组空间 intn: //记录字符串长度 public:
Strings(char-*str): //构造函数,利用str字符串长度初始化n, //利用str字符串初始化s所指的字符串空间 Strings(Strings&str); //拷贝构造函数
Strings& Give(Strings& str); //实现str赋值给*this的功能并返回*this Strings Uion(Strings& str); //实现8this和str中的字符串连接的功能, //把连接结果存人临时对象并返回
intLenth(){returnn;} //返回字符串长度 voidPrint(){eout<7
中面向对象程序设计试题4答案及评分标准
(供参考)
一、单项选择(每小题1分,共13分)
1.B 2.A 3.B 4.B 5.A 6.C 7.D 8.B 9.D 10,B 11.B 12.D 12.A 二、填空(每空1分,共17分)
1. /* */ 8.pc=(Char*)pv: 2. 35 9.编译 运行 3. x 10.长度(或为队尾位置) 4. 0 19 11.变量 函数 5.strcpy 12. 2
13.Ostream& 6.文件
7.第一个 修改
三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分)
1.
(1)n<=99 //2分 (2)i<=temp //2分 (3)break //2分 2.
(1)(low十high) //2分 (2)return mid //2分 (3)low=mid+t //2分 3.
(a):a(aa),b(bb) //2分 (b)A*(5),y(x) //2分 (c)A。p=&x //2分
注:x(S)与x=5等效,y(x)与y=x等效
四、写出程序运行结果(每小题6分,共18分) 1.
1 1 l //1分 2 2 3 //1分 3 6 9 //2分 4 24 33 //2分 2.
+-*/abcdl234 //6分 3.
2000/1/l //1分 0:0;0 //1分 2002 10/l //1分 23:59:59 //1分
8
2002/12/31 //1分 0:0:0 //1分
五、指出程序或函数的功能(每小题6分,共12分) 评分标准:根据叙述情况酌情给分。 1.计算并输出
的值,其中a的值由键盘输入。
2.对于以表头指针为f的链表,依次显示出每个结点的data域的值。 六、程序改锗,请根据程序段或函数模块的功能改写个别地方的错误(6分)
评分标准:每个数据占1分。 错误行的行号为5 9 12
分别改正为public: }int CE::GelMin(){ 七、编程(每小题8分,共16分) 评分标准:根据编程情况酌情给分。 1.
#include void main() {int i=0; //用i作为依次取值偶数的变量 int s=0; //用s作为累加变量 do{
i十=2; S+=i*i;
}while(s<1000);
cout<<“n=”<Strings Strings::Uion(Strings& str){ SIrings r(“”); ln=n+str.n;
ls=newcha[r.n:n+1]; strcpy(r.s,s);
strcat(r. S,str.S); return r; }
9