为什么我的计数器不工作?

Why doesn't my counter work?

我应该获得用户输入,一个浮点数,然后使用计数器跟踪可以从中减去多少次 0.25、0.10、0.05 和 0.01。然后它应该打印计数。但是当我尝试 运行 代码时,它会得到用户输入,但是当我尝试任何数字时,它会显示:

greedy.c:18:14: runtime error: signed integer overflow: 2147483647 + 1 cannot be >represented in type '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);
}

尝试使用“a = a - 0.25;”代替“b = a - 0.25;”。其他减法也一样。变量 a 现在在您的循环中保持不变。

您实际上从未更改 a 的值,因此您的 while 条件中的 none 永远为假。要修复此更改,每个 b = a - coinvaluea = a - coinvalue(这也意味着您可以消除 b