中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。现用C++语言程序解决问题。
#include<iostream>
#include<fstream>
using namespace std;
class Time//时间类
{
private:
int year;
int month;
int day;
public:
Time(int,int,int);
void set();//输入函数
int judge();//判断函数
void count();//计算函数
};
//构造函数
Time::Time(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
//输入函数
void Time::set()
{
cin>>year>>month>>day;
}
//判断函数
int Time::judge()
{
int ju1,ju2,ju3,ju4;
//判断输入的年份是否正确
if(year>=2010)
{
ju1=1;
}
else
{
ju1=0;
printf("您输入的年份有误!年份要大于2010年!");
}
//判断输入的月份是否正确
if(month>=1 && month<=12)
ju2=1;
else
{
ju2=0;
printf("您输入的月份有误!月份不能超过12月,不能小于1月!");
}
//判断输入的日期是否在对应月份的范围内
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day>31)
{
ju4=0;
printf("您输入的日期有误!%d月不能超过31天!",month);
}
else
ju4=1;
}
else if(month!=2)
if(day>30)
{
ju4=0;
printf("您输入的日期有误!%d月不能超过30天!",month);
}
else
ju4=1;
else if(((year%4==0 && year%100!=0 )|| year%400==0))//当输入2月份时,平年与闰年天数不同,借此判断输入的数据是否正确
{
if(day>29)
{
ju3=0;
printf("您输入的日期有误!当前年份为闰年,二月不能超过29天!");
}
else
ju3=1;
}
else
{
if(day>28)
{
ju3=0;
printf("您入的日期有误!当前年份为平年,二月不能超过28天!");
}
else
ju3=1;
}
return 0;
}
//计算函数
void Time::count()
{
int day1=0;//2010年开始,今年为止。多少年
int day2=0;//今年开始,今天到此为止。多少天
int day3=0;//今天为止,当前月份过了多少天
int Day=0;
int i=year-2010;
int k=month-1;
int d;
int monthday1[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int monthday2[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//计算2010年开始,今年为止,过了多少天
for(int j=0;j<i;j++)
{
if(((2010+j)%4==0 && (2010+j)%100!=0 )|| (2010+j)%400==0)//判断是闰年还是平年(闰年366天,平年365天)
day1+=366;
else
day1+=365;
}
//计算今年开始,今天为止,过了多少天
for(int p=0;p<k;p++)
{
if((year%4==0 && year%100!=0 )|| year%400==0)
day2+=monthday1[p];//如果是闰年,月份采用第一个月份数组
else
day2+=monthday2[p];//如果是平年,月份采用第二个月份数组
}
day3=day;
Day=day1+day2+day3;//计算总天数
d=Day%5;//总天数取余,余数为1,2,3当天在打渔,为4,0当天在晒网
if(d<=3 && d>=1)
cout<<"今天打渔"<<endl;
else
cout<<"今天晒网"<<endl;
}
//主函数
int main()
{
int i;//判断次数
cout<<"请输入需要测试日期的个数:"<<endl;
cin>>i;
for(int n=1;n<=i;n++)
{
cout<<"第"<<n<<"个:"<<endl;
for(int j=0;j<n;j++ )
{
cout<<"请输入年 月 日\n注意:起始时间2010年1月1日\n格式: 2010 1 1\n"<<endl;
Time t1(0,0,0);
t1.set();//输入
t1.judge();//判断
t1.count();//计算总天数
}
}
return 0;
}
如图,输入数据错误后会有具体提示