我已经根据自己的能力完成了程序中的所有操作,但我无法让它告诉我正确的找零金额,对于所有硬币值,它都保持为 0。
当输入的项目数量为0时,我该如何打破无限循环,
#include <stdio.h>
#include <math.h>
int main(void)
{
//variables used
int penny = 0;
int nickel = 0;
int dime = 0;
int quarter = 0;
int items = 0.0;
double paid= 0.0;
double total = 0.0;
double price =0.0;
double change = 0.0;
int counter =0;
for (;;)
{
printf("Please enter the number of grocery items:");
scanf("%d", &items);
for (counter = 1; counter <= items; counter++)
{
printf("Please enter the price for item #%d:", counter);
scanf("%f", &price);
total += price;
}
printf("Please enter amount payed:");
scanf("%f", &paid);
change = paid - total;
while (change > 0)
{
if (change >= .25)
{
change = change - .25;
quarter = quarter + 1;
}
else if (change >= .1)
{
change = change - .1;
dime = dime + 1;
}
else if (change >= .05)
{
change = change - .05;
nickel = nickel + 1;
}
else if (change >= .01)
{
change = change - .01;
penny = penny + 1;
}
}
printf("this is your change %d quarters, %d dimes, %d nickels, %d pennies.\n", quarter, dime, nickel, penny);
}
}
最佳答案
使用 float 而不是 double 。
检查 items == 0 后,Tp 跳出循环。
for (;;) {
printf("Please enter the number of grocery items:");
scanf("%d", &items);
if (items == 0) {
break;
}
for (counter = 1; counter <= items; counter++) {
printf("Please enter the price for item #%d:", counter);
scanf("%f", &price);
total += price;
}
etc...
}
关于具有无限循环和找零计数器 c 的收银机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638926/