怎么在for循环中使得m在1-12循环?

img

一个计算天数的代码,然后有个问题就是m每一次循环增1,增到12再增从1开始,要怎么完成?

求余12后再加1就可以啦

m%12 == 0?12 : m%12

你这个是筛选闰年天数的吧,可以两层循环,外边年份(1-2021),里边月份(1-12)

供参考:

#include <stdio.h>
int main()
{
    int M[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    int y, m, d, s, year, month, flg;
    printf("Input yyyy mm dd:");
    scanf("%d%d%d", &y, &m, &d);
    for (month = 1, year = 1, s = 0; ; ++month > 12 ? (month = 1, year++) : month)
    {
        if (year == y && month == m) break;
        flg = 0;
        if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
            flg = 1;
        s += M[month - 1];
        if (flg==1)s += 1;
    }
    s += d;
    printf("%d", s);
    return 0;
}