gpt4 book ai didi

c - 如何求两组数据的平均值?

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:46 25 4
gpt4 key购买 nike

第一个数据集的平均值应该是:(80+70+65+89+90)/5,第二个数据集的平均值应该是(85+80+80+82+87)/5,但是不知为什么我的代码不工作。

当我运行代码时,我得到 17.0 和 219886384,而不是 78.8 和 82.8。

int main(void)
{
int grades[2][5] = {{80, 70, 65, 89, 90}, {85, 80, 80, 82, 87}};
float average;
int sum;
int i;
int j;
for(i = 0; i < 2; i++)
{
sum = 0;
for(j = 0; j < 5; j++);
{
sum += grades[i][j];
}
average = sum / 5;
printf("The average grade for %d is: %f\n", i, average);
}
return 0;
}

最佳答案

平均值是使用整数算法计算的:sum/5。使用 sum/5.0 或将 sum 定义为浮点变量。

在这个for语句中有一个愚蠢的错误,for子句后面的额外分号是一个空语句,将for简化为一个空循环后跟一个单一的 block ,它访问超出数组末尾的条目。

    for(j = 0; j < 5; j++);  <--- spurious semicolon!
{
sum += grades[i][j];
}

如果将左大括号放在同一条线上,即 Kernighan 和 Ritchie 风格,这样的错误就不太可能了:

    for (j = 0; j < 5; j++) {
sum += grades[i][j];
}

同样,如果您在 for 子句中定义循环索引,则此错误将成为语法错误,因为循环索引将超出 block 的范围:

#include <stdio.h>

int main(void) {
int grades[2][5] = {{80, 70, 65, 89, 90}, {85, 80, 80, 82, 87}};

for (int i = 0; i < 2; i++) {
float average, sum = 0;
for (int j = 0; j < 5; j++) {
sum += grades[i][j];
}
average = sum / 5;
printf("The average grade for %d is: %f\n", i, average);
}
return 0;
}

关于c - 如何求两组数据的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44876348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com