编程新手求解
问题:从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量(在人民币总数量最少的情况下,显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张)。这道题我在百度上搜到了答案,不过我想自己用if语句写出来,但不知道为什么出错了,求助各位大佬。
代码如下:
#include<stdio.h>
int main()
{
double x;
int a, b, c, d, e, f, g, h, i;
printf("请输入金额:");
scanf_s("%lf", &x);
if (x / 100 != 0)
{
a = x / 100;
if ((x - a * 100) > 50)
{
b = 1;
c = (x - a * 100 - 50) / 10;
}
else
{
b = 0;
c = (x - a * 100) / 10;
}
if ((x - a * 100 - b * 50 - c * 10) >= 5)
{
d = 1;
if ((x - a * 100 - b * 50 - c * 10 - 5) == 4)
e = 2;
else
if ((x - a * 100 - b * 50 - c * 10 - 5) >= 2)
e = 1;
else
e = 0;
}
else
{
d = 0;
if ((x - a * 100 - b * 50 - c * 10) == 4)
e = 2;
else
if ((x - a * 100 - b * 50 - c * 10) >= 2)
e = 1;
else
e = 0;
}
if ((x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2) == 1)
f = 1;
else
f = 0;
g = (x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f) / 0.1;
if ((x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f - g * 0.1) >= 0.05)
{
h = 1;
i = (x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f - g * 0.1 - h * 0.05) /0.01;
}
else
{
h = 0;
i = (x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f - g * 0.1) / 0.01;
}
}
else
printf("error");
printf("%2d%2d%2d%2d%2d%2d%2d%2d%2d", a, b, c, d, e, f, g, h, i);
return 0;
}
最后一个数字答案是3