生成一个C语言代码:某人从某天起三天打鱼两天晒网,这个人在以后的第N天是打鱼还是晒网
时间: 2024-12-13 13:24:40 浏览: 29
这是一个经典的模运算应用的问题,我们可以使用C语言来解决这个问题。假设第一天是打鱼,我们可以创建一个函数`is_fishing_day(int n, int days_in_cycle)`来判断在第N天这个人是打鱼还是晒网。这里`days_in_cycle`就是三天打鱼两天晒网的周期。
```c
#include <stdio.h>
int is_fishing_day(int n, int days_in_cycle) {
// 模运算将n对7取余,因为总共有5+2=7种情况(3天打鱼+2天晒网)
if (n % days_in_cycle == 0)
return 0; // 第0天是晒网,其余非0结果都是打鱼
else
return 1; // 非0结果都是打鱼
}
int main() {
int n, days_in_cycle = 5; // 三天打鱼两天晒网
printf("请输入你想知道的第N天:");
scanf("%d", &n);
if (is_fishing_day(n, days_in_cycle))
printf("在第%d天是打鱼。\n", n);
else
printf("在第%d天是晒网。\n", n);
return 0;
}
```
相关问题
编写一个C语言程序:三天打鱼两天晒网。题目描述 题目内容:中国有句俗语:“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”。问这个人在以后的某一天是在“打鱼”还是在“晒网”? 输入样例:1990-1-3 输出样例:他在打鱼
以下是一个简单的 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 取模,判断是在“打鱼”还是在“晒网”。注意在计算经过的天数时需要考虑闰年的情况,这里使用了一个简单的判断方法。
c语言 编程实现,中国有句俗语“三天打鱼两天晒网”。某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第n天中是“打鱼”还是“晒网”。
根据“三天打鱼两天晒网”的规律,可以发现每5天循环一次,其中3天打鱼,2天晒网。因此,如果知道某人开始“三天打鱼两天晒网”的那一天是循环中的第几天,就可以判断在以后的第n天中是“打鱼”还是“晒网”。
假设某人开始“三天打鱼两天晒网”的那一天是循环中的第x天,那么在以后的第n天中,如果 (n - x) % 5 <= 2,则是“打鱼”,否则是“晒网”。
因此,需要先计算出某人开始“三天打鱼两天晒网”的那一天是循环中的第几天。假设某人开始“三天打鱼两天晒网”的那一天是第1天,则:
- 第1天:打鱼
- 第2天:打鱼
- 第3天:打鱼
- 第4天:晒网
- 第5天:晒网
因此,某人开始“三天打鱼两天晒网”的那一天是循环中的第1天,即x=1。
现在可以根据上面的公式来判断在以后的第n天中是“打鱼”还是“晒网”。假设要判断的是第100天,则:
(n - x) % 5 = (100 - 1) % 5 = 4
因为4 <= 2,所以在第100天中是“打鱼”。
因此,答案是“打鱼”。
阅读全文