三天打渔两天晒网c++程序

#include <iostream>
using namespace std;
class Data{        //日期类
private:
int years;
int month;
int day;
public:
Data(int year,int mont,int da)
{
years=year;
month=mont;
day=da;
}
Data()
{
years=2010;
month=1;
day=1;
}
//设置数据值
void set(int year,int mont,int da)
{
years=year;
   month=mont;
day=da;
}
//获取数据值
void get()
{
cout<<years<<"年"<<month;cout<<"月"<<day<<"日";
}
//计算并返回天数
int Days()
{
int i,days=0,j=1;//j是判断月日是否出错的标志变量
if(years<2010)
{
cout<<"年份要在2010年或以后"<<endl;
return 0;
}
for(i=2010;i<years;i++)//给所要求的天数加上当年的1月1号之前到2010年1月1号的天数
{
days+=365;
if(i%400==0||(i%4==0&&i%100!=0))
{
days++;
}
}
switch(month)//给所要求的天数加上当年的天数
{
case 1:days=days+0;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
case 2:days=days+31;break;
case 3:days=days+59;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
case 4:days=days+90;
if(day>30)
{
                printf("日错误\n");
j=0;
}
break;
case 5:days=days+120;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
case 6:days=days+151;
if(day>30)
{
                printf("日错误\n");
j=0;
}
break;
case 7:days=days+181;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
case 8:days=days+212;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
case 9:days=days+243;
if(day>30)
{
                printf("日错误\n");
j=0;
}
break;
case 10:days=days+273;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
case 11:days=days+304;
if(day>30)
{
                printf("日错误\n");
j=0;
}
break;
case 12:days=days+334;
if(day>31)
{
                printf("日错误\n");
j=0;
}
break;
default:
printf("月份错误\n");j=0;break;
}
days+=day;
if(years%400==0||(years%4==0&&years%100!=0))
{
   days++;
if(day>29)
{
                printf("日错误\n");
j=0;
}
}
else
{
if(day>28)
{
                printf("日错误\n");
j=0;
}
}
if(!j)
days=0;
return days;
}
//判断这天是打鱼还是晒网
void yuORwang(int days)
{
//判断数据是否出错
if(days)
{
int i=days%5;
get();
if(i==0||i==4)
cout<<"这天晒网!"<<endl;
else
cout<<"这天打鱼!"<<endl;


}


}
};


int main(void)
{
Data s;
int a,b,c;
int choose=1;
while(choose)
{
  cout<<"请输入年月日:";
  cin>>a>>b>>c;
  s.set(a,b,c);
  s.yuORwang(s.Days());
  cout<<"继续输入1结束请输入0:";
  cin>>choose;


}


return 0;

}

关于判断输入月的天数的代码繁琐了

/*

int  p[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年的每月天数

int  r[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年的每月天数

int *d=p

if(years%400==0||(years%4==0&&years%100!=0))

{

d=r;

}

if(day<0||day>d[month])

{

cout>>"输入月的天数错误">>endl;

}

else{

继续进行所有天数的计算

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值