改良一下上面的代码,使用include<stdio.h>
时间: 2024-11-13 10:24:28 浏览: 5
当然,我们可以将 `stdio.h` 包含进来,并对输入部分进行稍微的调整,使其更简洁易读。这里是一个包含 `<stdio.h>` 的版本:
```cpp
#include <iostream>
#include <string>
#include <cstdio>
// 判断是否为闰年的辅助函数
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算总天数的辅助函数
int days_since_1990(int year, int month, int day) {
int leap_days = 0, non_leap_days = 0;
for (int y = 1990; y <= year; ++y) {
leap_days += is_leap_year(y);
non_leap_days += !is_leap_year(y);
}
int total_days = leap_days * 366 + non_leap_days * 365; // 累加天数
for (int m = 1; m <= month - 1; ++m) {
if (m == 2 && is_leap_year(year)) {
total_days += 29; // 闰年的2月有29天
} else {
total_days += (m == 2 ? 28 : m == 4 || m == 6 || m == 9 || m == 11 ? 30 : 31);
}
}
return total_days + day;
}
std::string activity_on_date(int year, int month, int day) {
int total_days = days_since_1990(year, month, day);
// 循环模7,模拟一周七天的周期
int cycle = total_days % 7;
if (cycle <= 3) {
return "打鱼";
} else {
return "晒网";
}
}
int main() {
int target_year, target_month, target_day;
printf("请输入目标日期的年份、月份和日子:");
scanf("%d %d %d", &target_year, &target_month, &target_day);
std::string action = activity_on_date(target_year, target_month, target_day);
printf("在 %d 年 %d 月 %d 日,这个人是做 %s.\n", target_year, target_month, target_day, action.c_str());
return 0;
}
```
在这个版本中,我们使用了 `printf` 和 `scanf` 函数来进行输入数据的交互,`<cstdio>` 库包含了这两个函数。记得在运行之前检查输入数据的有效性,例如检查年份是否有效等。
阅读全文