首页 > 解决方案 > 在 C 中循环数月

问题描述

目前我有 2 个变量在其中存储年月。

例子:

变量 1:201711

var2:201801

首先,我想找出变量中的两个月份是否都是连续的年份月份。如果没有,那么我想创建一个循环,以便我可以获得 var1&2 之间的月份。

if( MonthsDifference(var2,var1) = 1 )
{
    ....
}
else
{
     for ( a = 1 ; a <= MonthsDifference(var2 - var1) ; a++)
     {
           printf("Next month is:[%d]",addmonths(var1,1));
     }
}

我无法想象一种逻辑来获得月份差异并有效地增加月份。存储在 var1 和 2 中的值类型和数据(年月)是灵活的,并且可以以任何方式更可取。

提前致谢。

标签: c

解决方案


您的两个变量中多年和几个月的编码方案似乎是:

combined_value = year * 100 + month

所以低两位小数是月份,高位(通常为 4)是年份。好吧,我们知道如何在 C 中提取十进制数字:

lower_decimal_digit = num % 10
lower_2_decimal_digits = num % 100

依此类推(我们也可以使用可变位数来执行此操作,但这在这里不是必需的)。同样,我们只能保留较高的数字:

all_but_lower_decimal_digit = num / 10
all_but_lower_2_decimal_digits = num / 100

所以在你的情况下,这两个命令:

int year = combined / 100;
int month = combined % 100;

做的伎俩。我相信你可以从那里继续。


推荐阅读