急求!!!!!!!用c++解决该题 !!!高手帮忙!!!!

设置日期
用日/月/年格式输出日期
可实现日期增加一天
考虑闰年
这是一条编程题 用c++解决上问题 拜托别来充数 OK????谢谢 闰年二月份要考虑 有的月30天 有的月31天也要考虑 当输入有误时有提示输入错误 如:非闰年时输入的二月是29天 提示错误

第1个回答  2009-05-20
呵呵 太久没用switch 今天修改过嘞`` 请参考

#include <iostream>
#include <iomanip.h>
using namespace std;

class Data
{
private:
int day,month,year,isleap;

void plus(int i)
{
if(day>31)
{
++month;
day=1;
}
}

void plus2(int i)
{
if (day>30)
{
++month;
day=1;
}
}

public:
Data():isleap(0),day(1),month(1),year(2009){}
Data(int d,int m,int y):isleap(0),day(d),month(m),year(y){}

void set(int d,int m,int y)
{
day = d;
month = m;
year = y;
}

void leap(int y)
{

if (y%400==0||(y%100!=0&&y%4==0))
cout<<y<<"是闰年"<<endl;
else
cout<<y<<"不是闰年"<<endl;
}
void leap()
{
if (year%400==0||(year%100!=0&&year%4==0))
isleap = 1;
else
isleap = 0;
}

void plusday(int i)
{
leap();
day+=i;
if (isleap) //闰年
{
if (month ==2)
{
if (day >29)
{
++month;
day=1;
}
}
}
else
{
if(month==2)
{
if (day >28)
{
++month;
day=1;
}
}
}

switch(month)
{
case 1:
plus(i);
break;
case 3:
plus(i);
break;
case 4:
plus2(i);
break;
case 5 :
plus(i);
break;
case 6:
plus2(i);
break;
case 7:
plus(i);
break;

case 8:
plus(i);
break;

case 9:
plus2(i);
break;

case 10:
plus(i);
break;

case 11:
plus2(i);
break;

case 12:
plus(i);
break;

}
if(month>12)
++year;
}

void plusmonth (int m)
{
month+=m;
if (month>12)
++year;
month = 1;

}

void plusyear (int y)
{
year+=y;
}

void print()
{
// cout.setfill('0');
cout<<setw(2)<<day<<"-"<<setw(2)<<month<<"-"<<setw(4)<<year<<endl;
}

};

int main()
{
Data day(4,5,1980);
day.leap(2008);
day.leap(2009);
// day.leap();
cout<<"加天前:"<<endl;
day.print();
day.plusday(28);
cout<<"加天后:"<<endl;
day.print();
cout<<"加月前:"<<endl;
day.print();
cout<<"加月后:"<<endl;
day.plusmonth(7);
day.print();
cout<<"加年前:"<<endl;
day.print();
cout<<"加年后:"<<endl;
day.plusyear(2);
day.print();
cout<<"---------"<<endl;
day.set(3,4,1988);
day.print();
return 0;
}
第2个回答  2009-05-19
#include <stdio.h>

int main()
{
int year,month,day;
int flag;
printf("input day month year:\n");
scanf("%d%d%d",&day,&month,&year);
printf("%d day %d month %d year!\n",day,month,year);

if(((year%4==0)&&(year%100!=0)) || (year%400==0))
flag=1;
else
flag=0;

switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
day=(day+1)%31;
if(day==0)
{
day=31;
}
if(day==1)
{
month++;
if(month==13)
{
month=1;
year++;
}
}
break;
}
case 4:
case 6:
case 9:
case 11:
{
day=(day+1)%31;
if(day==0)
{
day=31;
}
if(day==1)
{
month++;
}
break;
}
case 2:
{
if(flag)
{
day=(day+1)%29;
if(day==0)
{
day=29;
}
if(day==1)
{
month++;
}
}
else
{
day=(day+1)%28;
if(day==0)
{
day=28;
}
if(day==1)
{
month++;
}
break;
}
}
}

printf("The next day is:%d day %d month %d year!\n",day,month,year);

return 0;
}本回答被提问者采纳
第3个回答  2009-05-19
你直接点那个时间那里就可以设置了
相似回答
大家正在搜