gpt4 book ai didi

c - While-循环中的错误使计数超出条件

转载 作者:行者123 更新时间:2023-11-30 16:31:52 24 4
gpt4 key购买 nike

对于学校,我要编写一个 C 程序,该程序需要一定数量的现金并返回达到该金额所需的最少数量的硬币。我不知道我做错了什么。我一直在调整和尝试各种不同的事情,但我似乎无法完全调试该程序。

该程序对某些输入给出了正确答案,但夸大了许多输入所需的硬币数量。

这是我到目前为止所拥有的。

#include <stdio.h>

int main()
{
float cash;
int n;
int counter=0;
int quarters=0;
int dimes=0;
int nickels=0;
int pennies=0;

for (;;)
{
printf("Enter change amount: ");
scanf("%f",&cash);

if (cash > 0)
{
break;
}
}

n = cash * 100;
counter = 0;

while (n > 0)
{
while (n >= 25)
{
counter ++;
n = n - 25;
quarters ++;
printf("%i\n",n);
}

while (n >= 10 && n < 25)
{
counter ++;
n = n - 10;
dimes ++;
printf("%i\n",n);
}

while (n >= 5 && n < 10)
{
counter ++;
n = n - 1;
nickels++;
printf("%i\n",n);
}

while (n > 0 && n < 5)
{
counter ++;
n = n - 1;
pennies ++;
printf("%i\n",n);
}
}
printf("%d\n",counter + n);
printf("%i quarters, %i dimes, %i nickels, %i pennies\n",
quarters, dimes, nickels, pennies);

return 0;
}

最佳答案

我有点惊讶他们希望你使用break来退出循环,因为你通常希望循环“自然”地结束(并且你通常为switch语句保存break)。像这样的东西应该可以工作,使用整数除法和模运算符(编辑注释:我使用两个整数而不是单个 float ,因为后者不准确。如果更有知识的人想要展示如何使用 float 来做到这一点,那么有趣。):

#include <stdio.h>

int main() {
int dollar, cent;

int q = 0;
int d = 0;
int n = 0;
int p = 0;

int re;

printf("Enter amount: ");
scanf(" %d.%d", &dollar, &cent);

q = dollar * 4;
re = cent;

q = q + (re / 25);
re = re % 25;

d = re / 10;
re = re % 10;

n = re / 5;
re = re % 5;

p = re;

printf("q %d d %d n %d p %d\n", q, d, n, p);

return 0;
}

例如,如果您获得了秒数并希望从中找到分钟:秒,则此方法也适用。如果给你 65 秒,则分钟部分为 65/60(即 1),而秒部分就是除以 60 后的余数,即 65 % 60(即 5)。

关于c - While-循环中的错误使计数超出条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com