首页 > 解决方案 > 循环中数字的平均值

问题描述

在我的 C 程序中,我想获得输入数字总和的平均值,直到程序停止。我应该添加什么来检查平均值?谢谢!

#include <stdio.h>
int main (void)
{
    int x;
    int sum = 0;
    int average;
    int testEOF;

    //Statements
    printf("Enter your numbers: <EOF> to stop.\n");
    do
    {
        testEOF = scanf("%d", &x);
        if (testEOF !=EOF)
            sum +=x;

    } while (testEOF !=EOF);

    printf ("\nTotal: %d\n", sum);
    printf ("\nAverage: %d\n", average);
    return 0;
    //main
}

标签: cloopsif-statementwhile-loopdo-while

解决方案


  1. 正如其他人解释的那样,您必须初始化sumand count,它们永远不会被赋予初始值。无需初始化averagex因为您分配sum/countaverage并且用户将分配任何值给x.
  2. 你必须把你想让你的if声明做的所有事情都放在{...}. 但你没有。您的 if 语句仅适用于并且sum +=x不适用于count++and average = sum / count。所以你的程序增加了counteven after的值EOF。所以你发现14/6而不是14/5.
  3. 你检查了testEOF != EOF两次。一个在if声明中,另一个在do-while.

我把代码放在下面:

#include <stdio.h>

int main (void){
    float x;
    float sum = 0;
    float count = 0;
    float average;
    float testEOF;
    printf("Enter your numbers: <EOF> to stop.\n");
    while(1){
        testEOF = scanf("%f", &x);
        if (testEOF ==EOF){
            break;
        }
        sum +=x;
        count++;
        average = sum / count;
    }

    printf ("\nTotal: %f\n", sum);
    printf ("\nAverage: %.2f\n", average);
    return 0;
}

推荐阅读