C语言某渔人从y年a月b日起,实行“三天打鱼两天晒网”,判断同年c月d日(c>=a,若c==a,则d>=b)他在打鱼(输出1)还是在晒网(输出0)。y、a、b和c、d从键盘输入,格式为y-m-d和m-d。要求编写函数: ⑴ int leap( int y ); y年为闰年,则返回1,否则返回0。 ⑵ int days( int y, int m, int d ); 返回y年m月d日是该年的第几天。
时间: 2024-03-25 15:41:46 浏览: 138
三天打鱼两天晒网c语言实现判断
好的,下面是 C 语言的实现:
```c
#include <stdio.h>
// 判断是否为闰年
int leap(int y) {
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
return 1;
} else {
return 0;
}
}
// 计算某一天是该年的第几天
int days(int y, int m, int d) {
int month_days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (leap(y)) {
month_days[1] = 29;
}
int res = 0;
for (int i = 0; i < m-1; i++) {
res += month_days[i];
}
res += d;
return res;
}
// 判断打鱼还是晒网
int fish_or_not(int y, int a, int b, int c, int d) {
int total_days = days(y, 12, 31); // 计算该年总共有多少天
int start_day = days(y, a, b); // 计算渔人开始打鱼的那一天是该年的第几天
int end_day = days(y, c, d); // 计算要判断的那一天是该年的第几天
int interval = (end_day - start_day) % 5; // 计算打鱼和晒网的间隔
if (interval < 3) {
return 1; // 打鱼
} else {
return 0; // 晒网
}
}
int main() {
int y, a, b, c, d;
printf("请输入开始打鱼的日期(格式为y-m-d):");
scanf("%d-%d-%d", &y, &a, &b);
printf("请输入要判断的日期(格式为m-d):");
scanf("%d-%d", &c, &d);
int result = fish_or_not(y, a, b, c, d);
if (result == 1) {
printf("在打鱼\n");
} else {
printf("在晒网\n");
}
return 0;
}
```
注意:C 语言中的数组下标是从 0 开始的,因此在 `days` 函数中,月份需要减 1。另外,C 语言中的数组初始化需要用大括号 `{}`,而不是中括号 `[]`。
阅读全文