2、编写一个日期类,要求按 xxxx-xx-xx 的格式输出日期,实现加一天的操作,不考虑闰年问题,所有月份设为 30 天。本题黑盒测试时,输入 2004 年 3 月 20日,得到加一天后时间为 2004-3-21 ,能得一部分分数。输入 2004 年 3 月 30 日,得到加一天后时间为2004-4-1,能得一部分分数。输入 2004 年 12 月 30日,得到加一天后时间为 2005-1-1 ,且有时间越界处理,能得全部分数。本题满分 30。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int year,month,day;
while(1)
{
scanf("%d-%d-%d",&year,&month,&day);
if(year==0)
break;
if(year<0 || month<0||day<0 ||day>30 ||month>12)
{
printf("输入有误,请重新输入\n");
continue;
}
day++;
if(day>30)
{
day=1;
month++;
}
if(month>12)
{
month=1;
year++;
}
printf("%d-%d-%d",year,month,day);
}
return 0;
}
3.编写一个复数类,要求有 4 条。一是有构造函数能对复数初始化。二是对复数 c1 ,c2 ,c3..... 能实现连加运算,令c=c1+c2+c3+..... 此处可以重载加法操作符。三是有函数实现两个复数相加,并按照 a+ib的形式输出。四是能实现对一个复数 c=a+ib,定义 double x=c 有效,使 x 的值为实部和虚部之和。本题满分 50。
#include <iostream>
#include <cstdio>
using namespace std;
class CFushu
{
public:
double shi;
double xu;
CFushu()
{
}
CFushu(double s,double x):shi(s),xu(x)
{
}
CFushu operator +(CFushu b)
{
CFushu c;
c.shi=shi+b.shi;
c.xu=xu+b.xu;
// shi+=b.shi;
// xu+=b.xu;
return c;
}
double Getx()
{
return xu+shi;
}
void Print()
{
if(shi!=0)
printf("%g+",shi);
if(xu!=0 )
{
printf("i*");
if(xu<0)
printf("(");
printf("%g",xu);
if(xu<0)
printf(")");
printf("\n");
}
}
};
void Add(CFushu a,CFushu b)
{
CFushu c;
c=a+b;
c.Print();
}
int main()
{
float s,x;
printf("请输入c1的实部和虚部\n");
scanf("%f%f",&s,&x);
CFushu c1(s,x);
printf("请输入c2的实部和虚部\n");
scanf("%f%f",&s,&x);
CFushu c2(s,x);
printf("请输入c3的实部和虚部\n");
scanf("%f%f",&s,&x);
CFushu c3(s,x);
printf("请输入c4的实部和虚部\n");
scanf("%f%f",&s,&x);
CFushu c4(s,x);
CFushu c5=c1+c2+c3+c4;
printf("c5的值为: ");
c5.Print();
printf("c1+c2为:");
Add(c1,c2);
printf("c3的x值为:%g\n",c3.Getx());
return 0;
}