c - 输入负浮点值时重新提示用户
问题描述
所以我完全是 C 的新手,我正在为这门语言苦苦挣扎。我需要编写一个程序,如果他们输入一个负数,它将重新提示用户输入一个数字,直到他们产生一个正数。到目前为止,我有以下内容,没有显示错误消息,但是当我输入负浮点值时,它不会重新提示我,它只显示数字。有任何想法吗?
#include <cs50.h>
#include <stdio.h>
#include <math.h>
float get_positive_float(string prompt);
int main(void)
{
float f = get_float("Cash: ");
printf("%f\n", f);
}
float get_positive_float(string prompt)
{
float n;
do {
n = get_float("%s", prompt);
} while (n < 0);
return n;
}
解决方案
float get_positive_float(char const *prompt)
{
float result;
while (prompt && printf(prompt), scanf(" %f", &result) != 1 || result < 0.f) {
fputs("Please only enter positive values!\n\n", stderr);
for (int ch; (ch = getchar()) != '\n' && ch != EOF;); // clear the rest of the line
}
return result;
}
使用 thingies 的版本<cs50.h>
可能如下所示:
float get_positive_float(string prompt)
{
float result;
while ((result = get_float(prompt)), result < 0.f) {
fputs("Please only enter positive values!\n\n", stderr);
}
return result;
}
但问题是,浮点数不适合金额。使用整数类型并以美分计算。输出除以 100。