使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整

题目
问答题
使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。  1.定义私有成员变量year、month、day,分别表示年、月、日,类型为int。请在注释∥********1********后添加适当的语句。  2.完成构造函数,分别给year、month、day赋值,请在注释∥********2********后添加适当的语句。  3.完成重载符号“+=”的定义,请在注释∥********3********后添加适当的语句。  4.完成print()打印函数,如2008年8月8日到屏幕和文件modi3.txt格式相同,请在注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义私有成员变量year、month、day。分别表示年、月、日,类型为int。请在注释1后添加适当的语句。 (2)完成构造函数,分别给year、month、day赋值,请在注释2后添加适当的语句。 (3)完成重载符号“十=”的定义,请在注释3后添加适当的语句。 (4)完成print打印函数,输出到屏幕和文件的格式相同,请在注释4后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。 程序正常运行,输出的结果为2008年11月813。 试题程序: include(iostream.h) include(fstream) include(iomanip) include<cmath) usingnamespacestd; voidWriteFile(intc) { ofstreamout1; out1.open("3.txt",ios_base::app); out1<<C<<; out1.close; } voidWriteFile(char*str) { ofstreamoutl; out1.open("3.txt",ios_base::app); out1<<str; out1.close; } voidClearFile { ofstreamout1; out1.open("3.txt"); out1.close; } classDate { public: Date(inty,intm,intd) { //********1******** } voidprint; //********2******** { month+=m; inti=month/12: intj=month%12; if(j==0) {year+=(i-1); month=12; } else { year+=i: month=j; } return*this; } private: //********3******** }; voidDate::print { //********4******** WriteFile(year): WriteFile("年"); WriteFile(month); WriteFile("月"); WriteFile(day); WriteFile("日"); } intmain { ClearFile; DateOly_day(2008,8,8); Olyday+=3: Oly_day.print; return0; }


正确答案:
(1)应添加“year=y;month=m;day=d;”。
(2)应添加“Date&operator+=(intm)”。
(3)应添加“intyear,month,day;”。
(4)应添加“cout<<year<<"年"<<month<<"月"<<day<<"日”<<endl;”。
【解析】本题中第1处要求“完成构造函数,分别给year、month、day赋值”。在程序中“Date(inty,intm,intd)”的构造函数中添加给year、month、day赋值的语句,即在第1处添加“year=y;month=m;day=d;”。第2处要求“完成重载符号‘+=’的定义”。在C++中,运算符重栽的定义方法是定义一个重载运算符的函数,格式为函数operator+重载运算符号+,所以这里补全“Date&operator+=(intm)”。第3处要求“定义私有成员变量year、month、day”。在C++程序的private区域中添加变量year、month、day的定义,即在第3处添加“intyear,month,day;”。第4处要求“完成函数print打印函数”。在C++中的print函数中补全其打印功能,即在第四个标识下添加“eout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;”。

第2题:

使用VC6打开考生文件夹下的工程test19_3,此工程包含一个源程序文件test19_3.cpp,其中定义了用于表示向量的类 vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。

(1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。

(2)完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。

(3)完成类vector的友元函数friend double Multiply (vector &x,vector &y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:

(10,20)

(2, 3)

80

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test19_3.cpp清单如下:

include <iostream.h>

class vector

{

int a;

int b;

public:

//**1**

void input(int x, int y)

{

//**2**

}

void output ()

{

cout<<'('<<a<<','<<b<<")"<<end1;

}

friend double Multiply(vector &x,vector &y);

}

double Multiply (vector &x,vector &y)

{

//**3**

c=x.a*y.a+x.b*y.b;

return c;

}

void main()

{

vector x(10,20),y;

double d;

y.input (2,3);

d=Multiply (x,y);

x. output ( );

y. output ( );

cout<<d<<end1;

}


正确答案:(1) vector(int x=0int y=0):a(x)b(y){} (2) a=x; b=y; (3) double c;
(1) vector(int x=0,int y=0):a(x),b(y){} (2) a=x; b=y; (3) double c; 解析:本题主要考查考生对于类的定义和友元函数定义的理解,请注意(1)中的参数列表形式和(3)中对象访问成员使用“.”操作符。

第3题:

使用VC6打开考生文件夹下的工程MyProj11。此工程包含一个源程序文件 MyMain11.cpp。程序中定义了3个类A、B和C,但类C的定义并不完整。

请按要求完成下列操作,将类的定义补充完成:

①类C是基类A和B公有派生来的。请在注释“//* *1* *”之后添加适当的语句。

②完成构造函数C(int k)定义,采用初始化列表的方式使基类A私有成员a初始化为k-2,基类B的私有成员b初始化为k+2,类C的私有成员c初始化为k。请在注释“//* *2* *”之后添加适当的语句。

③完成类Derived的成员函数disp()的类体外的定义。函数disp()中要分别显式调用基类A、B的disp()函数,然后要输出私有成员c的值。请在注释“//* *3* *”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件MyMain11.cpp清单如下;

//MyMain11.cpp

include <iostream>

using namespace std;

class A

{

private:

int a;

public:

A(int i) { a=i;}

void disp()

{

cout<<a<<" , "

}

};

class B

{

private:

int b;

public:

B(int j){ b=j;}

disp ( )

{

cout<<b<<", ";

}

};

//* * *1* * *

{

private:

int c;

public:

//* * *2* * *

void disp();

};

void c::disp()

{

//* * *3* * *

}

int main ( )

{

C obj(10);

obj.disp();

return 0;

}


正确答案:

第4题:

使用VC6打开考生文件夹下的工程test4_1,此工程包含一个源程序文件test4_1.cpp,但该程序在类的定义中存在问题,请改正类定义中的错误,使程序的输出结果如下:

a=3 b=13

a=5 b=13

注意:请勿修改主函数main中的任何内容。

源程序文件rcst4_1.cpp清单如下:

include<iostream.h>

class T

{

public:

/*********found***+******/

T(int x){a=x; b+=x;)

/+********found**********/

void display(T c)

{ cout<<"a="<<c.a<<"\t"<<"b="<<c.b<<endl;)

private:

const int a;

static int b;

};

/**********found*********/

int b=5;

void main()

{

T A(3),B(5);

T::display(A);

T::display(B);

}


正确答案:(1)错误:T(int x){a=x;b+=x;) 正确:T(int x):a(x){b+=x;) (2)错误:void display(T c) 正确:static void display(T c) (3)错误:int b=5; 正确:int T::b=5;
(1)错误:T(int x){a=x;b+=x;) 正确:T(int x):a(x){b+=x;) (2)错误:void display(T c) 正确:static void display(T c) (3)错误:int b=5; 正确:int T::b=5; 解析:(1)主要考查考生对常量数据成员初始化方法的掌握,常量数据成员的初始化只能通过构造函数的成员初始化列表进行,常量数据成员使用关键字const修饰;
(2)主要考查考生对静态成员函数的理解,由主函数中的T::display(A)与T::display(B)可知display应定义为静态成员函数,因为调用类的静态成员必须使用作用域“::”符号;
(3)主要考查考生对静态数据成员初始化方法的掌握,由static int b可知b为静态成员数据,其初始化必须在类外使用作用域运算符(::)限定它所属的类。

第5题:

使用VC6打开考生文件夹下的工程test17_3,此工程包含一个源程序文件test17_3.cpp,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。

(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。请在注释“//**1**。”之后添加适当的语句。

(2)完成类Text的构造函数Text(char *str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“//**2**”之后添加适当的语句。

(3)定义类CircleWithText的构造函数CircleWithText(int cx,int cy,char *msg),int型的cx和cy用于赋值给x和y,char型的指针*msg用于赋值给text,请在注释“//**3**”之后添加适当的语句。

输出结果如下:

Point:3 4

hello

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test17_3.cpp清单如下:

include <iostream.h>

include <string.h>

class Point

{

int x,y;

public:

//**1**

{

cout<<"Point:"<<x<<' '<<y<<'\n';

}

~Point(){}

};

class Text

{

char text[100];

public:

Text(char *str)

{

//**2**

}

~Text () { }

};

class CircleWithText:public Point,public Text

{

public:

//**3**

{}

~CircleWithText() {}

};

void main()

{

CircleWithText cm(3,4,"hello");

}


正确答案:(1) Point(int×1=0int y1=0):x(x1)y(y1) (2) strcpy(textstr); coutstr"\n"; (3) CircleWithText(int cxint cychar * msg):Point(cxcy)Text(msg)
(1) Point(int×1=0,int y1=0):x(x1),y(y1) (2) strcpy(text,str); coutstr"\n"; (3) CircleWithText(int cx,int cy,char * msg):Point(cx,cy),Text(msg) 解析:本题主要考查考生对于多继承中类的定义和派生类构造函数的定义的掌握。注意学会使用参数列表的形式定义派生类的构造函数,在列表中的格式是基类名1(向基类传递的参数列表),基类名2(向基类传递的参数列表)。

第6题:

使用VC6打开考生文件夹下的工程MyProj7。此工程包含一个源程序文件MyMain7.cpp。其中定义了类Sample,但类Sample的定义并不完整。

请按要求完成下列操作,将类Sample的定义补充完成:

①定义私有数据成员n,它是int型的数据。请在注释“//* *1**”之后添加适当的语句。

②完成重载构造函数Sample()的定义,使Sample对象的默认值:n=0。请在注释“//* *2* *”之后添加适当的语句。

③完成成员函数add()的类体内的定义,使成员函数返回的Sample对象的值n为两类Sample对象s1和s2的私有成员n的和。请在注释“//* *3* *”之后添加适当的语句。

④完成成员函数disp()的类外定义,使其以“n=”的格式将Sample对象的值输出到屏幕上。请在注释“* *4* *”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件MyMain7.cpp清单如下:

//MyMain7.cpp

include<iostream>

using namespace std;

class Sample

{

private:

//* * 1* *

public:

Sample(){}

//* *2* *

Sample add(Sample s1,Sample s2)

{

//* *3* *

}

void disp();

};

void Sample: :disp()

{

//* * 4 * *

}

int main()

{

Sample s1(10),s2(5),s3;

cout<<"s1:";

s1.disp();

cout<<"\n S2:";

s2,disp();

s3.add(s1,S2);

cout<<"\n s3.add(s1,s2)\n s3:";

s3.disp();

return 0;

}


正确答案:

第7题:

使用VC6打开考生文件夹下的工程test42_3。此工程包含—个test42_3.cpp,其中定义了类Cpolygon、COutput和CTriangle,其中CTriangle类由Cpolygon和COutput类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类CPolygon的保护数据成员width和height,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

(2)完成类CPolygon的成员函数set_values(int a,int b),使参数a和b分别赋值给保护数据成员width和height,请在注释“//**2**”之后添加适当的语句。

(3)完成类Coutput的成员函数output(int)的定义,将传入的参数为血型的i输出到屏幕并换行,请在注释“//**3**”之后添加适当的语句。

(4)完成派生类CTriangle的声明,它由Cpolygon和COutput类public派生,请在注释“//**4**”之后添加适当的语句。

源程序文件test42_3.cpp清单如下:

include <iostream.h>

class CPolygon

{

protected:

// ** 1 **

public:

void set_values(int a, int b)

{

// ** 2 **

}

};

class COutput

{

public:

void output(int i);

};

void COutput::output(int i)

{

// ** 3 **

}

// ** 4 **

{

public:

int area (void)

{

return (width * height / 2);

}

}

int main ()

{

CTriangle trgl;

trgl.set_values (4,5);

trgl.output (trgl.area());

return 0;

}


正确答案:(1) int width height; (2) width=a; height=b; (3) cout i endl; (4) class CTriangle:public CPolygon public Coutput
(1) int width, height; (2) width=a; height=b; (3) cout i endl; (4) class CTriangle:public CPolygon, public Coutput 解析:主要考查考生对于类的定义和派生类声明的掌握,其中(4)中对于多继承的声明按照如下的格式:关键字class派生类名:继承方式继承类名,继承方式继承类名,在多继承中,一定要注意防止程序的二义性,同时要善于利用基类中已经定义的方式,才能达到代码复用的作用。

第8题:

使用VC6打开考生文件夹下的工程test40_3。此工程包含一个test40_3.cpp,其中定义了类CVector,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)完成类CVector构造函数的定义,把传入的int型参数a和b分别赋值给类的成员变量x和y。请在注释“//**1**”之后添加适当的语句。

(2)完成类CVector的“+”运算符重载函数的定义,使Cvector类的两个对象相加时可以直接使用符号“+”,并且结果仍然为类Cvector的对象,请在注释“//**2**”之后添加适当的语句。

(3)在主函数中添加适当的语句,把类Cvector的对象a和b相加,并且把结果保存在对象c中,最后以“x,y”的形式输出在屏幕上,请在注释“//**3**”之后添加适当的语句。

源程序文件test40_3.cpp清单如下:

include <iostream.h>

class CVector

{

public:

int x,y;

CVector () {};

CVector (int,int);

CVector operator + (CVector);

};

CVector::CVector (int a, int b)

{

//**1**

}

CVector CVector::operator+ (CVector param)

{

//**2**

temp.y = y + param.y;

return (temp);

}

int main ()

{

CVector a (3,1);

CVector b (1,2);

CVector c;

//**3**

return 0;

}


正确答案:(1) x=a; y=b; (2) CVector temp; temp.x=x+param.x; (3) c=a+b; toutc.x""c.y;
(1) x=a; y=b; (2) CVector temp; temp.x=x+param.x; (3) c=a+b; toutc.x","c.y; 解析:主要考查考生对于类的数据成员赋值与定义重载为成员函数的运算符函数的掌握,其中(2)就是运算符函数的实现,实际上就是通过已有的函数和符号实现复杂的运算功能,并最终返回该类的对象,注意最后的返回值必须是对象才能满足要求,(4)中使用对象调用类的数据成员用符号“.”。

第9题:

使用VC6打开考生文件夹下的工程MyProj13。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。

请按要求完成下列操作,将类的定义补充完成:

①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。

②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。

③完成类shapes的成员函数setvalue(int d,int w)的定义,shapes类的数据成员x和y分别被设置成d和w。请在注释“//* *3* *”之后添加适当的语句。

④将类shapes的成员函数void disp()设置成纯虚函数。请在注释“//* *4* *”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件MyMain13.cpp清单如下:

//MyMain13.cpp

include<iostream>

using namespace std;

class shapes

{

//* * *1* * *

public:

//* * *2* * *

void setvalue(int d,int w)

{

//* * *3* * *

}

//* * * 4 * * *

};

class square : public Shapes

{

public:

void disp()

{

cout<<x*y<<end1;

}

};

int main()

{

shapes*ptr;

square s1;

ptr=&s1;

ptr->setvalue(10,5);

ptr->disp();

return 0;

}


正确答案:

第10题:

使用VC6打开考生文件夹下的工程test20_3,此工程包含一个源程序文件tes00_3.cpp,其中定义了用于表示复数的类comp,但类comp的定义并不完整。请按要求完成下列操作,将类comp的定义补充完整。

(1)定义comp的构造函数,函数含参数x和y,它们都是in,型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。请在注释“//**1**”之后添加适当的语句。

(2)完成类comp的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员s和b,请在注释“//**2**”之后添加适当的语句;

(3)完成类comp的友元函数friend compplus(comp &x,comp &y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。输出结果如下:

10+20i

2+3i

result:12+23i

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test20_3.cpp清单如下:

include <iostream.h>

class comp

{

int a;

int b;

public:

//**1**

friend comp plus(comp &x, comp &y);

void input(int x,int y)

{

//**2**

}

void output ( )

{

cout<<a<<'+'<<b<<"i"<<end1;

}

};

comp plus(comp &x, comp &y)

{

//**3**

c.b=x.b+y.b;

return c;

}

void main()

{

comp x(10,20),y,z;

y.input(2,3);

z=plus(x,y);

x.output();

y.output();

cout<<"result:";

z.output();

}


正确答案:(1) comp(int x=0int y=0):a(x)b(y){} (2) a=x; b=y; (3) comp c; c.a=x.a+y.a;
(1) comp(int x=0,int y=0):a(x),b(y){} (2) a=x; b=y; (3) comp c; c.a=x.a+y.a; 解析:本题考查考生对于类的定义和友元函数定义的掌握,请注意(1)中的参数列表形式和(3)中对象使用“.”访问它的数据成员。

更多相关问题