为什么我的计数器不工作?
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 - coinvalue
到 a = a - coinvalue
(这也意味着您可以消除 b
。
我应该获得用户输入,一个浮点数,然后使用计数器跟踪可以从中减去多少次 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 - coinvalue
到 a = a - coinvalue
(这也意味着您可以消除 b
。