任意数量的平均值

时间:2019-10-14 02:16:14

标签: c average

我目前正在尝试为课程分配创建一个C程序,该程序采用任意数量的测试分数的平均值。但是,我遇到了一些问题。

我的教授提供了一个大纲以帮助入门。我也只能在指示的地方添加代码,因此没有多余的变量。

这是我到目前为止所拥有的:

#include <stdio.h>

void calculateAverage()
{
    int grade, count, sum;
    double average;

/*     add code to input grades, calculate average, and print it */
/* --> between here */

printf("Enter the amount of test scores.\n");
scanf("%d", &count);

grade = 0;
sum = 0;

while (grade != -1 && grade <= 100 && grade >= 0)
{
    printf("Enter the grade. Enter -1 when you are done entering grades.\n");
    scanf("%d", &grade);

    if (grade != -1 && grade <= 100 && grade >= 0)
    {           
        sum = sum + grade;      
    }

    else
    {
        average = (sum / count);

        printf("average is %.2lf \n", &average);
    }

}
/* --> and here */
}

int main(void)
{
    while (1)
        calculateAverage();
return 0;
}

所以我遇到的问题是,到目前为止,平均值总是被计算为0。为什么会这样呢?我将如何解决它,以便为我提供正确的平均值? / p>

更新 因此,我尝试将平均值强制转换为两倍,以便避免类型不匹配,这确实摆脱了我的编译器警告,但对于所有输入值,平均值仍为0。

#include <stdio.h>

void calculateAverage()
{
    int grade, count, sum;
    double average;

/*     add code to input grades, calculate average, and print it */
/* --> between here */

printf("Enter the amount of test scores.\n");
scanf("%d", &count);

grade = 0;
sum = 0;

while (grade != -1 && grade <= 100 && grade >= 0)
{
    printf("Enter the grade. Enter -1 when you are done entering grades.\n");
    scanf("%d", &grade);

    if (grade != -1 && grade <= 100 && grade >= 0)
    {           
        sum = sum + grade;      
    }

    else
    {

        average = (double)(sum / count);

        printf("average is %.2f \n", &average);
    }

}
/* --> and here */
}

int main(void)
{
    while (1)
        calculateAverage();

return 0;
}

1 个答案:

答案 0 :(得分:0)

#include <stdio.h>

void calculateAverage()
{
    int grade, count, sum;
    double average;

/*     add code to input grades, calculate average, and print it */
/* --> between here */

printf("Enter the amount of test scores.\n");
scanf("%d", &count);

grade = 0;
sum = 0;

while (grade != -1 && grade <= 100 && grade >= 0)
{
    printf("Enter the grade. Enter -1 when you are done entering grades.\n");
    scanf("%d", &grade);

    if (grade != -1 && grade <= 100 && grade >= 0)
    {           
        sum = sum + grade;      
    }

    else
    {

        average = (double)(sum / count);

        printf("average is %.2lf \n", average);  #  <---- Please fix this!
    }

}
/* --> and here */
}

int main(void)
{
    while (1)
        calculateAverage();

return 0;
}

您的代码中存在一些问题:

  1. 一个是您正在使用&运算符来打印平均地址。
  2. 您可以更改的另一件事是在打印双页时使用correct format specifier