三天打鱼 两天晒网,第n天是打鱼还是晒网的代码
时间: 2024-10-17 22:14:21 浏览: 1
这个问题可以用取余运算符%来解决。因为三天打鱼两天晒网,所以一共是5天一个循环。如果我们从某个起始日期开始计算,那么第n天是打鱼还是晒网,只需要计算从起始日期到第n天一共经过了多少个5天的循环,然后判断最后一个循环的状态即可。如果最后一个循环是打鱼,则第n天也是打鱼;如果最后一个循环是晒网,则第n天也是晒网。
下面是c++代码实现:
```
#include <iostream>
using namespace std;
int main() {
int start_year = 1990;
int start_month = 1;
int start_day = 1;
int n_year, n_month, n_day;
cout << "请输入要查询的日期(年 月 日,用空格隔开):" << endl;
cin >> n_year >> n_month >> n_day;
int days = 0;
for (int year = start_year; year < n_year; year++) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days += 366;
} else {
days += 365;
}
}
for (int month = 1; month < n_month; month++) {
if (month == 2) {
if ((n_year % 4 == 0 && n_year % 100 != 0) || n_year % 400 == 0) {
days += 29;
} else {
days += 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days += 30;
} else {
days += 31;
}
}
days += n_day - start_day;
int status = days % 5;
if (status < 3) {
cout << "在打鱼" << endl;
} else {
cout << "在晒网" << endl;
}
return 0;
}
```
阅读全文