使用数组计算5个整数的平均值

时间:2015-06-27 09:14:09

标签: c arrays loops

我似乎无法做对。问题是“使用数组计算5个整数的平均值”

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int avg[5],i,total;
    int average;

    printf("Enter the marks entered in 5 subjects");
    for (i=0; i<5; ++i){
        scanf("%d",&avg[i]);
    }
    for(i=0; i<5; ++i){
        total = total + avg[i];
    }

    average= (float)total/5;
    printf("The average of 5 marks is %d",average);


    return 0;
}

7 个答案:

答案 0 :(得分:4)

1)您的答案可以是十进制数,但是您将其存储在忽略小数点的整数中。 变量average应声明为float average; 打印结果的行应更改为printf("The average of 5 marks is %f",average);

2)将变量total初始化为int total = 0;

答案 1 :(得分:3)

total应初始化为0

int avg[5],i,total=0;

答案 2 :(得分:3)

在for循环的第一次迭代中,变量total未初始化使用,因此结果是错误的,因为如果没有显式初始化,它将自动获取垃圾值。拿这一切:

#include <stdio.h>

int main() {
    int avg[5], i, total = 0, average;
    printf("Enter the marks entered in 5 subjects");
    for (i = 0; i < 5; ++i) {
        scanf("%d", &avg[i]);
        total += avg[i];
    }
    average = total / 5;
    printf("The average of 5 marks is %d", average);
    return 0;
}

答案 3 :(得分:3)

您刚刚声明了变量total但未初始化它。因此,total包含垃圾值。为此,如果您向总计添加任何内容,则该值将不会按预期正确。它将被添加到垃圾值。因此,将变量total初始化为0。

int total=0;

您无需使用类型转换。只需将平均变量声明为double即可。

double average=0;
average = total/5.0;

您应该打印为printf("The average of 5 marks is %lf", average);

答案 4 :(得分:2)

total是一个局部变量,因此需要初始化。如果它在文件范围内(例如,全局变量)或静态变量,则可能不必将其初始化为0

初始化可能就像:

int avg[5], i, total = 0 ;

int avg[5], i, total;
total = 0 ;

为什么需要初始化?由于这句话:

 total = total + avg[i];

此处total使用其先前的值计算。第一次遇到此语句时,total的前一个值是多少?它可以是任何东西,通常称为垃圾值,调用未定义的行为。因此,您需要初始化以将此起始值赋予total。请注意,您不需要 来初始化average,因为它的值不依赖于之前的内容。

另一个问题是typecasting的概念。以下是声明:

average= (float)total/5;

您将total类型转换为float是对的(您可能已经完成了total/5.0)。但是,您将结果存储在integer中。这将导致第二次类型转换,从floatint的结果。

因此,您需要将average声明为float

注意:如果您的要求不是float,并且您确实需要integral答案,则可以忽略此部分)。

答案 5 :(得分:0)

在尝试向其中添加值之前,必须初始化变量。 我不是很好,因为我在Java,但变量是相同的。 向变量添加值时,必须先将其初始化 的 WRONG

int anInt;
anInt += 1; //anInt hasn't a value. So, how can you increment it's value if it doesn't have one?


CORRECT

int anInt = 0;
anInt += 1; //increment it's value by one. 0+1=1, so its new value is 1.

答案 6 :(得分:0)

在代码中使用变量之前,需要初始化变量。

代码中的错误是

int avg[5],i,total;

你还没有初始化int变量“total” 因此,此代码将使用垃圾值

for(i=0; i<5; ++i){
    total = total + avg[i];
}

您需要此更正

int avg[5], i, total=0;