第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;
}本回答被提问者采纳