为什么我的计数器不起作用?

时间:2016-10-30 15:00:12

标签: c cs50

我应该得到用户输入,浮动,然后跟踪使用计数器可以从中减去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);
}

2 个答案:

答案 0 :(得分:2)

而不是“b = a - 0.25;”尝试“a = a - 0.25;”。其他减法也是如此。变量a现在在循环中保持不变。

答案 1 :(得分:1)

您永远不会实际更改a的值,因此您的while条件都不会出现错误。要按b = a - coinvaluea = a - coinvalue修改此更改(这也意味着您可以删除b