刚刚开始学习编程, 特别是C,我正在努力克制 printf只对有效输出,即确保 在" break"之后不会出现printf声明。
我明白我对scanf的测试是在for 循环,当我达到3时,for循环停止并且printf 出现。我希望找到两种测试的正确方法 scanf,并确保printf不会出现 break语句(如果用户输入整数)。
// a program that calculates the average of an array
of 3 floating-point values and check if correct inputs
are types in scans (only floating values)
#include <stdio.h>
#include <stdbool.h>
int main (void)
{
float values[3];
float element, average;
float sum = 0;
int i, n;
bool is_float;
printf ("Please, enter 3 floating values: \n");
for ( i = 0; i < 3; i++)
{
scanf ("%f", &element);
is_float = 1;
n = (int) element;
if (n - element == 0 || element == 0 )
{
is_float = 0;
printf ("Sorry, invalid input\n");
break;
}
else
{
values[i] = element;
sum += values[i];
}
}
printf ("The average of 3 values is %.2f\n", sum / 3);
return 0;
}
谢谢!
答案 0 :(得分:1)
如果您希望程序在此行之后直接退出:
printf ("Sorry, invalid input\n");
然后您必须使用以下内容直接替换break
行下方的printf
语句:
return 1;
另一方面,如果要打印错误消息,则应使用fprintf()
代替printf()
。整个for
循环看起来像这样:
for (i = 0; i < 3; i++)
{
scanf ("%f", &element);
is_float = 1;
n = (int) element;
if (n - element == 0 || element == 0 )
{
is_float = 0;
fprintf (stderr, "Sorry, invalid input\n");
return 1;
} else {
values[i] = element;
sum += values[i];
}
}