1.三天打渔两天晒网
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在
in.txt文 件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
2.代码部分
#include<iostream>
using namespace std;
class Time
{
public:
int year,mouth,day;
};
int main()
{
int sum1 = 0,sum2 = 0, sum3 = 0,sum = 0;
Time time;
char da[2000];
FILE *fp1 = fopen("in.txt","w"), *fp2 = fopen("out.txt","w"); //创建in.txt文件和out.txt文件
int days[]= {31,28,31,30,31,30,31,31,30,31,30,31};
cout<<"输入年月日查询:"<<endl;
cin>>time.year>>time.mouth>>time.day;
sprintf(da,"%d %d %d\n",time.year,time.mouth,time.day); //将int型日期转换为字符型
fprintf(fp1,da); //在文件中写入字符型日期
if(time.year < 2010 || time.mouth > 12 || time.day > 31) //判断日期格式
{
cout<<"erase!"<<endl;
fprintf(fp2,"erase!");
return 0;
}
//计算年份总天数
if ((time.year % 4 == 0 && time.year % 100 != 0 || time.year % 400 == 0) && time.mouth > 2)
sum1 = (time.year-2010) * 365 + ((time.year - 2008)/4)+1;
else
sum1 = (time.year-2010) * 365 + ((time.year - 2008)/4);
for(int i=0; i < time.mouth - 1; i++)
{
sum2 = sum2 + days[i];
}
if(time.day>1)
{
sum3 = time.day;
}
sum = sum1 + sum2 + sum3;
cout<<"总天数为:"<<sum<<endl;
if(sum % 5 >=1 && sum % 5 < 4) //除以5取余判断
{ printf("打渔\n");
fprintf(fp2, "打渔"); //结果写入out.txt文件
}
else
{ printf("晒网\n");
fprintf(fp2, "晒网"); //结果写入out.txt文件
}
fclose(fp1);
fclose(fp2);
return 0;
}
3.声明
本代码参考于 https://blog.csdn.net/weixin_44705662/article/details/88072540
https://blog.csdn.net/qq_43934014/article/details/88072157