gpt4 book ai didi

c - 程序将计算大多数提供的值,除了一些

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:46 25 4
gpt4 key购买 nike

这是一个简单的 C 语言货币更改计算器,适用于我正在学习的类(class) (CS50)。

它运行良好,直到您提交值 0.154.24.3(这些是我目前捕获的值),程序卡住,不输出任何结果。我必须 CTRL + C 强制退出。

如果我尝试另一个数字,说 0.41 我会得到正确答案。

为什么会这样?

#include <cs50.h>
#include <stdio.h>

int main (void) {

printf("How much change do you owe: ");

float amount;

// (;;) represents an infinite loop
for (;;)
{
amount = GetFloat();

// if user's input is negative, the script will break and prompt the user to enter a positive value.
if (amount >= 0) {
break;
}

printf("Please provide a positive value: ");
}

float cents = 100.0 * amount;
float quarter = 0;
float dime = 0;
float nickel = 0;
float penny = 0;


// I used the shortcut to represent (cents = cents + 25.0)
while (cents > 0) {
if (cents >= 25.0) {
cents -= 25.0;
quarter += 1;
} else if (cents >= 10.0) {
cents -= 10.0;
dime += 1;
} else if (cents >= 5.0) {
cents -= 5.0;
nickel += 1;
} else if (cents >= 1.0) {
cents -= 1.0;
penny += 1;
}
}

float coins = quarter + dime + nickel + penny;

printf("%f\n", coins);
}

最佳答案

您可能应该将具有离散值的项目表示为整数而不是 float 。如果 cents 是非整数(例如 10.1),则该循环将永远不会结束。

由于浮点错误,我尝试了这个并输入 0.15 分派(dispatch)给 15.0000010。

关于c - 程序将计算大多数提供的值,除了一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593338/

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