三天打鱼两天晒网。(30分)
题目内容:中国有句俗语:“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天是在“打鱼”还是在“晒网”?
输入样例:1990-1-3
输出样例:他在打鱼
输入样例:2018-11-13
输出样例:他在晒网
#include<stdio.h>
int main()
{
typedef struct time
{
int year;
int month;
int day;
};
time a;
scanf("%d-%d-%d", &a.year, &a.month, &a.day);
int n;
if (a.year % 4 != 0)//计算输入的日期到1990-1-1的天数来计算
{
n = (a.year - 1990) * 365 + (a.year - 1990) / 4 ;
for (int i = 1; i <= a.month; i++)
{
if ( i== 2 || i == 4 || i == 6 || i == 8 || i == 9 || i == 11||i==13)
{
n += 31;
}
else if(i==3)
{
n += 28;
}
else if (i == 1)
{
n += 0;
}
else
{
n += 30;
}
}
n += a.day;
}
else
{
n = (a.year - 1990) * 365+(a.year-1990)/4;//年的天数
for (int i = 1; i <= a.month; i++)//月份的天数
{
if (i == 2 || i == 4 || i == 6 || i == 8 || i == 9 || i == 11 || i == 13)
{
n += 31;
}
else if (i == 3)
{
n += 29;
}
else if (i == 1)
{
n += 0;
}
else
{
n += 30;
}
}
n += a.day;//天数
}
if (n % 5 > 3)//三天打鱼两天晒网
{
printf("他在晒网。");
}
else
{
printf("他在打鱼。");
}
return 0;
}
问题总结
月份计算时记得+1。
例如 2月说明1月全过了+31天。