输入是月数,两个输出是年和月。如果我输入 18 个月应该给我 1 年 6 个月
#include <stdio.h>
int main()
{
int y, m;
printf("Input number of months: ");
scanf_s("%i", &y);
y = (int) y / 12
m = (int)y %;
printf(" %i Year(s) \n %i Month(s)", y, m);
return 0;
}
最佳答案
有很多方法可以做到这一点,这是最接近您自己的代码的一种:
#include <stdio.h>
int main() {
int y, m;
printf("Input number of months: ");
fflush(stdout);
scanf("%d", &y);
m = y % 12;
y = y / 12;
printf(" %i Year(s) \n %i Month(s)" , y, m);
return 0;
}
关键问题是您在 m
有机会查看y
的值之前就更新了它。请注意 y=...
和 m=...
的顺序。如果您首先执行y=y/12
,则会将y
的值更新为年数,并且剩余信息将在此步骤中丢失,并且m
始终为 0。通过首先从用户输入的 y
中获取 m
,可以避免该问题。
另一个小问题是,无需将值从 y/12
转换为 int
,因为您将该值分配给 y
code> 首先是 int
类型。这同样适用于计算 m
时,也存在拼写错误。
至于fflush
的使用,可以引用this question了解详情。使用/不使用此行编译代码以查看差异。
关于c - 为什么我没有得到 “m” 的余数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59777488/