一个c++编程题目

2025-01-03 18:08:13
推荐回答(2个)
回答1:

#include
//定义日期类
class Date
{
//定义友元重载输入运算符函数
friend istream& operator >> (istream& input,Date& dt );
//定义友元重载输出运算符函数
friend ostream& operator<< (ostream& output,Date& dt );
int mo, da, yr;
public:
Date(void){ //无参数构造函数
yr = 0;
mo = 0;
da = 0;
}
Date( int y, int m, int d ) //带参数构造函数
{
yr = y;
mo = m;
da = d;
}
};
//定义">>"运算符重载函数
istream& operator >> ( istream& input, Date& dt )
{
cout<<"Year:";
input>>dt.yr;
cout<<"Month:";
input>>dt.mo;
cout<<"Day:";
input>>dt.da;
return input;
}
//定义"<<"运算符重载函数
ostream& operator<< ( ostream& output, Date& dt )
{
output<< dt.yr << '/' << dt.mo << '/' << dt.da< return output;
}
//在main()函数中测试Date类的插入(<<)和提取(>>)运算符
void main()
{
//声明对象
Date dt1(2002,5,1),dt2;
//显示dt1对象
cout< //对dt2对象进行输入和输出
cin>>dt2;
cout<}

回答2:

#include
using namespace std;
class Complex{
double Real,Image;
public:
Complex(double r=0.0, double i=0.0):Real(r),Image(i){ }
friend ostream&operator<<(ostream&s,
const Complex&z);
friend istream&operator>>(istream&s,Complex&a);
//流类作为形式参数必须是引用
};
ostream&operator<<(ostream&s,const Complex &z){
return s<<'('<}

istream&operator>>(istream&s,Complex &a){
double re=0,im=0;
char c=0;
s>>c;
if(c=='('){ //是否由括号开始
s>>re>>c; //实部
if(c==',') s>>im>>c; //虚部
if(c!=')')
s.clear(ios::failbit); //漏了括号给一个操作失败标志
}
else{ //无括号
s>>re; //实数 }
if(s) a=Complex(re,im); //流s正常时,则复制
return s;
}
}
int main()
{
Complex a,b,c;
cout<<"输入一个实数"< cin>>a;
cout<<"输入一个用括号括起来的实数"< cin>>b;
cout<<"输入一个用括号括起来复数"< cin>>c;
cout<<"a="< << "c="< return 0; }