Printf:在break语句后弹出

时间:2015-08-22 18:29:21

标签: c

刚刚开始学习编程, 特别是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;
}

谢谢!

1 个答案:

答案 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];
        }
}