【发布时间】:2019-08-16 18:18:44
【问题描述】:
这是我试图为我的初学者编程课程解决的问题。我需要输入零钱并计算我需要返还多少硬币。
这是我的代码:
int main(void)
{
//prompts user for amount of change and check the value of the imput
int n = get_float("enter change owned: ");
//converts to p.
int change = n * 100;
if ( change > 0)
{
printf("total change is: %ip\n" , change );
}
else
{
printf(" ERROR: change given needs to be positive value!\n");
}
while(n < 0);
int i = 0;
//calculate quarters
while (change >= 250)
{
n = change - 250;
i++;
}
//calculate dimes
while (change >= 100)
{
n = change - 100;
i++;
}
//calculate nickels
while (change >= 50)
{
n = change - 50;
i++;
}
//calculate pennies
while (change >= 1)
{
n = change - 1;
i++;
}
printf("%d\n", i);
}
我不明白为什么当我输入 n = 2.50 并且程序需要将变化计算为 n = n *100 时,它输出结果为 200 :S。我的程序也编译了,但是当我运行它时,我得到以下消息:运行时错误:有符号整数溢出:2147483647 + 1 不能用“int”类型表示
谢谢!
【问题讨论】:
-
你没有更新 change 变量,所以你的循环是无限的。
标签: c