我需要计算平均值,但答案是1735473548或类似的东西[关闭]

问题描述 投票:0回答:2
#include <stdio.h>

int main(void)
{
    total = 0;
    counter = 1;

    while(counter <= 10)
    {
        printf("%s", "Enter grade: ");
        scanf("%d", &grade);
        total = total + grade;
        counter = counter + 1;
    }

    average = total / 10;

    printf("%d", "average is:", average);
}

我尝试计算 10 个数字的平均值。我做错了什么?

c average
2个回答
5
投票

printf("%d", "average is:", average);
告诉
printf
获取
int
并将其打印为十进制数字,但
"average is:"
向其传递字符串的地址而不是
int
。您应该使用
printf("The average is %d.\n", average);

在启用警告并提升为错误的情况下进行编译。对于 Clang,从

-Wmost -Werror
开始。对于 GCC,从
-Wall -Werror
开始。对于 MSVC,从
/W3 /WX
开始。

一旦你开始工作,请考虑制作

average
total
double
而不是
int
。然后您需要将
%d
更改为其他格式。


0
投票

做数学时要求,必须声明 double,或者带除法的 float。为了获得最准确的结果。如果不需要获取结果的浮点数,则不需要。

这种情况下,除法运算,必须先将int类型转换为float类型。 或转换为浮点数,结果将是正确的。 它并不总是一位数结果的平均值。

这是必须知道的规则。

a = b / (c * 1.0)

或:

a = (float)b / c or a = (b * 1.0)/c

或者如果所有变量都声明为 float 或 double,则什么也不做。

double total = 0.0;
int counter = 1;

while(counter <= 10)
{
    printf("Enter grade: ");
    scanf("%lf", &grade);
    total = total + grade;
    counter = counter + 1;
}

  double average = total / 10;
  printf("average is: %lf", average);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.