#define _CRT_SECURE_NO_WARNINGS //关闭安全检查
#include <stdio.h>
#include <stdlib.h>
#define begyear 2011
#define begmonth 1
#define begday 1
/*
如果一个渔夫从2011年1月1日开始每三天打一次渔两天晒一次网,编程实现当输入2011年1月1日以后的任意一天
输出该渔夫是在打渔还是在晒网?
*/
//判断润年
int leap(int year)
{
int ret = 0;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
ret = 1;
}
return ret;
}
//统计天数
int days(int year, int month, int day)
{
int temp = 0;
int date[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
year -= begyear;
while (year) //统计年的天数
{
if (leap(year + begyear))
{
temp += 366;
}
else
{
temp += 365;
}
year--;
}
for (int i = 1; i < month; i++) //统计月的天数
{
temp += date[i - 1];
}
temp += day; //加上当月的天数
return temp;
}
int main()
{
int year, month, day;
int temp = 0;
AAA: printf("请输入年月日:");
scanf("%d %d %d", &year, &month, &day);
if (month > 12 || day > 31 || year < begyear)
{
printf("你真笨?日期都能输错?,赶紧重新输入\n");
goto AAA;
}
temp = days(year, month, day);
if ((temp % 5) <= 3 && temp % 5 > 0) //取5的余,1 - 3 就是打渔 其他都是晒网;
{
printf("打渔\n");
}
else
{
printf("晒网\n");
}
printf("距离天数有%d天\n", temp); //打印天数
system("pause");
return 0;
}
C语言 打渔晒网问题 017
最新推荐文章于 2024-01-05 10:03:20 发布