我应该得到用户输入,浮动,然后跟踪使用计数器可以从中减去0.25,0.10,0.05和0.01的次数。然后它应该打印计数的数量。但是当我尝试运行代码时,它会获得用户输入,但是当我尝试任何数字时,它会显示出来:
greedy.c:18:14:运行时错误:有符号整数溢出:2147483647 + 1不能>以'int'类型表示
请指出任何错误,这是我的代码:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main(void)
{
float b;
float a;
int count = 0;
printf("How much change is owed? ");
a = GetFloat();
do
{
b = a - 0.25;
count++;
}
while(a>0.25);
do
{
b = a - 0.10;
count++;
}
while(a>0.10);
do
{
b= a - 0.05;
count++;
}
while(a>0.05);
do
{
b= a- 0.01;
count++;
}
while(a>0.01);
printf("%d coins\n", count);
}
答案 0 :(得分:2)
而不是“b = a - 0.25;
”尝试“a = a - 0.25;
”。其他减法也是如此。变量a
现在在循环中保持不变。
答案 1 :(得分:1)
您永远不会实际更改a
的值,因此您的while
条件都不会出现错误。要按b = a - coinvalue
到a = a - coinvalue
修改此更改(这也意味着您可以删除b
。