我的代码旨在显示一个人需要一定金额的硬币的最少数量。我将这个值转换成分,然后用循环来测试每一个不同的硬币。您可能会看到printf中用于测试目的的变量,以查看它出错的位置。这些循环会一直持续下去,不会像循环重复一样多次减去C的值。恩。 c-25
保持在475美分,而不是每次循环重复25次(价值$ 5.00)。为什么我的程序中的循环没有终止?
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main(void)
{
float c=0;
int i=0;
int y=0;
printf("How much change do you owe?\n");
c=GetFloat();
c=c*100;
printf("%f\n", c);
do
{
c-25;
printf("%d\n", c-25);
if (c>25)
{
i++;
printf("%d\n", i);
}
}
while (c>=25);
printf("%d\n", i);
do
{
y=c-10;
if (y>0)
{
i++;
}
}
while (y>10);
if (y<=10)
{
printf("%d\n", i);
}
do
{
y=c-5;
if (y>0)
{
i++;
}
}
while (y>5);
if (y<=5)
{
printf("%d\n", i);
}
do
{
y=c-1;
if (y>0)
{
i++;
}
}
while (y>1);
if (y==0)
{
printf("%d\n", i);
}
}
注:这是 “时代变革” 方案,CS50
**如果您需要确切值,请勿使用'float'!** – Olaf