c - 在 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 中的值类型和数据(年月)是灵活的,并且可以以任何方式更可取。
提前致谢。
解决方案
您的两个变量中多年和几个月的编码方案似乎是:
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;
做的伎俩。我相信你可以从那里继续。
推荐阅读
- python - 将文本文件转换为 Excel 表格
- mediawiki - 如何通过 AnyDesk VPN 访问内部服务器
- typo3 - TYPO3 呈现所选安装点的正确规范
- javascript - 将阿拉伯日期值格式化为字符串:new Date().toLocaleDateString('ar'); => 'ddyyyy/m/'
- java - 如何使用spring boot在mongodb中获取包含某些(字符串)值的集合的所有键
- regex - Azure AD 外部用户电子邮件 ID 字符验证正则表达式 C#
- arrays - 如何将新行串行读取和打印存储或保存为字符串
- javascript - 这相当于关于 React 生命周期的类中的 useEffect
- python - 计算球坐标中两点之间的距离
- python - 使用 Python.h 将 uint32_t 数组传递给 Python