c - 如果用户输入负数,则再次提示

标签 c if-statement while-loop cs50

所以,如果用户的输入是0.41,我正在计算货币变化。结果将是:1 quarter, 1 dime, 1 nickel, 1 penny .

代码工作正常,直到您提供负值。 我添加了一个 if 语句来检查这一点,我所能做的就是 exit(0)然后。我想一次又一次地重新提示用户输入正值,我该怎么做?

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

int main (void) {

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

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

    if (amount < 0) {
        printf("Please provide a positive value.");
        exit(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;
        }
    }
    printf("%f quarters, %f dimes, %f nickels, %f pennies, Total of %f coins.\n", quarter, dime, nickel, penny, quarter + dime + nickel + penny);
}

最佳答案

作为新手,弄清楚在哪里放置声明可能有点尴尬,所以这里是:

float amount;

for (;;)
{
    amount = GetFloat();

    if ( amount >= 0 ) 
        break;

    printf("Please provide a positive value.\n");
}

float cents = 100.0 * amount;
float quarter = 0;
// etc.

您不能将 float amount 放入 { } 内,否则该变量的作用域将限定在该范围内,并且在 } 之后无法访问>.

编写相同循环的更紧凑的方法是:

while( (amount = GetFloat()) < 0 )
    printf("Please provide a positive value.");

但您可以使用您认为更合理的版本。

关于c - 如果用户输入负数,则再次提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575779/

相关文章:

JavaScript:是否允许在 `ternary` 语句中使用 `if` 语句?

java - 多个 IF 语句为真会导致问题

c - do while 语句只执行两次 code::block 和 dev c++

c - 在 C 中使用 ioctl() 设置不可变标志

c - 如何从 C 获取 Linux 中当前文件 (pwd) 的路径?

c - 以下语句在 C 语言中等效吗?

c - 我怎样才能算出一个数字中有多少个字符?

python - 虽然循环在 Python 中无法正常工作

C 程序没有进入任何 for 循环?

c - 返回数组中最大的元素