三天打鱼两天晒网问题C++版本

来源:互联网 发布:淘宝收藏大师怎么设置 编辑:程序博客网 时间:2024/05/18 01:25
本人小白接触C\C++时间不长,对于三天打鱼两天晒网问题解决的方法比较片面,不对的地方请高手大牛们指教小弟一二,感激不敬,接下来就是问题的解决思路,

1、先判断输入的日期是否正确(因为年没有<=0,月份没有≤0并且没有大于12的,日期没有≤0并且最大不能超过31)。

2、输入的日期判断是否为闰年。

3、计算出总天数(年差天数+月差天数+天数)。

4、总天数%5求余数(余数为1,2,3代表今天打鱼,4,5代表今天晒网)。

接下来直接上干活,源代码:

#include<iostream>
using namespace std;
class Judge
{
public:
int year;   //年份
int month;  //月份
int day;   //日期
void judge();  //判断是打鱼还是晒网
};


int main()
{
FILE *p1,*p2;
Judge M;
p1=fopen("input.txt","rb");
p2=fopen("output.txt","wb");
fscanf(p1,"&d&d&d",M.year,M.month,M.day);
cout<<"从input.txt当中读取的日期为:"<<M.year<<M.month<<M.day<<endl;
fprintf(p2,"从input.txt当中读取的日期为:%d-%d-%d\n",M.year,M.month,M.day);

M.judge();//调用judge函数
return 0;


}




void Judge::judge()
{
int n=0;   //闰年个数
int Month_minus;  //月数之差
int Year_minus;  //年差换算成天数差
int Month,Day;  
int Sum;   //2010年1月1日之后的天数
int Q;    //0,1,2代表打鱼,3,4代表晒网
int M;   //计算闰年使用的参数 
int J1,J2,J3;
FILE *p1,*p2;


cout<<"请输入年份:(只输入年份)\n";
cin>>year;
if(year<1)
cout<<"请输入正确的年份"<<endl;
else
cout<<"请输入月份:(只输入月份)\n";
cin>>month;
if(month<1||month>12)
cout<<"请输入正确的月份"<<endl;
else
cout<<"请输入日期:(只输入日期)\n";
cin>>day;
if(day<1||day>31)
cout<<"请输入正确的日期"<<endl;
else
{


//判断是否为闰年
    for(M=1;M<=year;M++)
{
J1=((M%4)==0);
J2=((M%100)==0);
J3=((M%400)==0);
if( J1 && (!J2) || J2 && J3)
n++;
}
cout<<"n:"<<n<<endl;   //输出闰年个数
Year_minus=(year-2010)*365+n-487;//487代表2010年之前的润年数
Month_minus=month-1;   //计算月份差
switch(Month_minus)
{
case 0:
Month=0;
break;
case 1:
Month=31;
break;
case 2:
Month=59;
break;
case 3:
Month=90;
break;
case 4:
Month=120;
break;
case 5:
Month=151;
break;
case 6:
Month=181;
break;
case 7:
Month=212;
break;
case 8:
   Month=243;
break;
case 9:
Month=273;
break;
case 10:
Month=304;
break;
case 11:
Month=334;
break;
}


Day=day-1;//计算天数差


Sum=Year_minus+Month+Day;//年份差,月份差,天份差之和


cout<<"year:"<<Year_minus<<endl;  //输出年数的天数差
cout<<"month:"<<Month<<endl;  //输出月数差
cout<<"day:"<<Day<<endl;  //输出天数差
cout<<"sum:"<<Sum<<endl;  //输出年数的天数差,月数差,天数差之和


Q=Sum%5;  //0,1,2代表去打鱼,3,4代表晒网
cout<<Q<<endl;  //输出是打鱼还是晒网
switch(Q)
{
case 0:
printf("今天打鱼\n");
fprintf(p2,"今天打鱼\n");
break;
case 1:
printf("今天打鱼\n");
fprintf(p2,"今天打鱼\n");
break;
case 2:
printf("今天打鱼\n");
fprintf(p2,"今天打鱼\n");
break;
case 3:
printf("今天晒网\n");
fprintf(p2,"今天晒网\n");
break;
case 4:
printf("今天晒网\n");
fprintf(p2,"今天晒网\n");
break;
}
}
}

0 0
原创粉丝点击