C语言使用while循环遍历两个值 实现未来20年指定日期查询
问题根源
你当前代码的核心问题是将日期d和年份y放在同一层循环同时自增,每走1天就同步跳1年,所以每年只能输出1个日期,且d到24就直接终止整个循环,自然无法覆盖后续20年的所有目标日期。
修复方案
采用双层循环结构即可实现需求:
- 外层循环遍历从输入年份到
输入年+20的所有年份 - 内层循环遍历同一年中15日到24日的所有日期,每一年遍历完成后重置日期起始值,再进入下一年遍历
修复后的可运行代码如下:
#include <stdio.h> #define SIZE 1000 int main() { int d, m = 5, y, future, i = 0; char dates[SIZE]; printf("Enter a year: "); scanf("%d", &y); future = y + 20; // 外层遍历所有目标年份 while (y <= future) { // 每一年都从15号开始遍历 d = 15; // 内层遍历当年15-24号的所有日期 while (d <= 24) { printf("Day: %d and Year: %d\n", d, y); d++; } // 当年日期全部输出完成再进入下一年 y++; } return 0; }
输入2015运行时,会先输出2015年15日到24日的10条记录,再依次输出2016年到2035年每年的10条目标日期记录,完全符合预期输出要求。你后续要判断周一、筛选特定节日的逻辑,直接在内层循环里补充即可。
内容的提问来源于stack exchange,提问作者user17067764
相关产品推荐
相关产品推荐

