c语言 编程实现,中国有句俗语“三天打鱼两天晒网”。某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第n天中是“打鱼”还是“晒网”。
时间: 2023-04-10 17:03:23 浏览: 335
根据“三天打鱼两天晒网”的规律,可以发现每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天中是“打鱼”。
因此,答案是“打鱼”。
相关问题
c语言 编程实现,中国有句俗语“三天打鱼两天晒网”。某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第n天中是“打鱼”还是“晒网”。 第一次运行程序 输入测试数据:15 程序运行结果:晒网 第二次运行程序 输入测试数据:16 程序运行结果:打鱼
这是一个简单的数学问题,可以用取余运算来解决。假设这个人从第一天开始打鱼,那么第n天中他是“打鱼”还是“晒网”取决于n%5的余数是多少。如果余数为1、2、3,则是“打鱼”,如果余数为4或0,则是“晒网”。
以下是实现这个功能的C语言代码:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入天数:");
scanf("%d", &n);
if (n % 5 == 4 || n % 5 == 0) {
printf("晒网\n");
} else {
printf("打鱼\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 取模,判断是在“打鱼”还是在“晒网”。注意在计算经过的天数时需要考虑闰年的情况,这里使用了一个简单的判断方法。
阅读全文