中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
#include<iostream>
using namespace std;
#include<fstream>
void main()
{
ofstream outfile("out.txt",ios::out);//以输出的方式打开out.txt
ifstream infile("in.txt",ios::in);//以输入的方式打开in.txt
int year,month,day,x,y,allday=0;
int array[2][13]=
{
{0,31,28,31,30,31,30,31,31,30,31,30,31,},
{0,31,29,31,30,31,30,31,31,30,31,30,31,},//平均每月的天数
};
infile>>year>>month>>day;
infile.close();//关闭in.txt
ofstream out1file("in.txt",ios::out);//以输出的方式打开in.txt
while(year<2010)
{
cout<<"年份错误,请输入大于等于2010的年份\n";
cin>>year>>month>>day;
out1file<<year<<" "<<month<<" "<<day;
out1file.close();//关闭in.txt
}
for(x=2010;x<year;x++)
{ if(year%4==0&&x%100!=0||year%400==0)//判断输入年份是否为闰年
allday+=365;
else
allday+=366;
} //计算到输入年份1月1日共多少天
y=year%4==0&&x%100!=0||year%400==0;
for(x=1;x<month;x++)
{ allday+=array[y][x];}
allday+=day; //计算本年中自1月1日起的天数
outfile<<"从2010年1月1日到"<<year<<"年"<<month<<"月"<<day<<"日 共进行了"<<allday<<"天\n";
cout<<"从2010年1月1日到"<<year<<"年"<<month<<"月"<<day<<"日 共进行了"<<allday<<"天\n";
allday=allday%5;
if(allday>0&&allday<4)//用计算出的总天数除以5,判断正在打鱼还是晒网
{
outfile<<"今天小迪正在打鱼\n";
cout<<"今天小迪正在打鱼\n";
}
else
{
outfile<<"今天小迪正在晒网\n";
cout<<"今天小迪正在晒网\n";
}
outfile.close();//关闭out.txt
}