问题:
中国有句俗语叫“三天打鱼两天晒网”。
某人从2010年1月1日起开始“三天打鱼两天晒网”,
问这个人在以后的某一天中是“打鱼”还是“晒网”。
解题思路:
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
char c[20];
int year,month,day;
int m[13]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年每月天数
int i,d;
d=0;
FILE *fp,*fo;
fp=fopen("in.txt","w");
fo=fopen("out.txt","w");
if(fp==NULL)
{
printf("不能打开文件\n");
}
scanf("%d",&n);
itoa(n,c,10); // itoa()函数 将int型的变量转换为char型
fputs(c,fp);
year=n/10000; //年份
for(i=2010;i<year;i++)
{
if(i%400==0)
d+=366;
else
d+=365;
}
if((year%400==0)||(year%4==0&&year%100!=0)) //闰年二月29天
m[1]=29;
if(n>=20000101) //判断输入日期是否正确
{
month=n/100%100; //月份
day=n%100; //日
if(month<=12)
{
if(day>m[month-1])
{
printf("日期错误\n");
return 0;
}
}
else
{
printf("日期错误\n");
return 0;
}
}
else
{
printf("日期错误\n");
return 0;
}
for(i=0;i<month;i++)
d+=m[i];
d+=day;
if(d%5==1||d%5==2||d%5==3)
{
printf("打鱼\n");
fputs("打鱼",fo);
}
if(d%5==4||d%5==5)
{
printf("晒网\n");
fputs("晒网",fo);
}
fclose(fp);
fclose(fo);
return 0;
}
运行结果:
当日期输入错误时
当日期输入正确时