编写一个C语言程序:三天打鱼两天晒网。题目描述 题目内容:中国有句俗语:“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天是在“打鱼”还是在“晒网”? 输入样例:1990-1-3 输出样例:他在打鱼
时间: 2023-09-20 22:04:35 浏览: 196
三天打鱼两天晒网(C语言代码实现)
以下是一个简单的 C 语言程序,可以实现上述题目的要求:
```c
#include <stdio.h>
int main()
{
int year, month, day;
int days_since_1990_01_01;
int remainder;
// 读入日期
printf("请输入日期(格式为 yyyy-mm-dd):");
scanf("%d-%d-%d", &year, &month, &day);
// 计算从 1990 年 1 月 1 日到目标日期共经过了多少天
days_since_1990_01_01 = (year - 1990) * 365 + (year - 1990) / 4;
switch (month - 1) {
case 11: days_since_1990_01_01 += 30;
case 10: days_since_1990_01_01 += 31;
case 9: days_since_1990_01_01 += 30;
case 8: days_since_1990_01_01 += 31;
case 7: days_since_1990_01_01 += 31;
case 6: days_since_1990_01_01 += 30;
case 5: days_since_1990_01_01 += 31;
case 4: days_since_1990_01_01 += 30;
case 3: days_since_1990_01_01 += 31;
case 2: days_since_1990_01_01 += 28;
case 1: days_since_1990_01_01 += 31;
}
days_since_1990_01_01 += day - 1;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
// 闰年 2 月有 29 天
if (month > 2) {
days_since_1990_01_01++;
}
}
// 对 5 取模,判断是在“打鱼”还是在“晒网”
remainder = days_since_1990_01_01 % 5;
if (remainder == 1 || remainder == 2 || remainder == 3) {
printf("他在打鱼\n");
} else {
printf("他在晒网\n");
}
return 0;
}
```
在这个程序中,我们先通过 `scanf()` 函数读入了目标日期,然后计算从 1990 年 1 月 1 日到目标日期共经过了多少天,最后对 5 取模,判断是在“打鱼”还是在“晒网”。注意在计算经过的天数时需要考虑闰年的情况,这里使用了一个简单的判断方法。
阅读全文