You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:02