首页 文章

Printf:在break语句后弹出

提问于
浏览
0

特别是在学习编程的最开始,我正在努力解决如何将printf仅限制为有效输出,即确保printf不会出现在“break”语句之后 .

据我所知,我对scanf的测试是在for循环中,当我达到3时,for循环停止并出现printf . 我希望找到测试scanf的正确方法,并确保在break语句之后不出现printf(如果用户输入整数) .

// 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 回答

  • 1

    如果您希望程序在此行之后直接退出:

    printf ("Sorry, invalid input\n");
    

    那么你必须用 printf 行直接替换 break 语句,如下所示:

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

相关问题