gpt4 book ai didi

C:求二维数组的最大平均值

转载 作者:行者123 更新时间:2023-11-30 16:38:36 25 4
gpt4 key购买 nike

我想要的输出是平均分数的最大值以及哪一行是例如:

9.33(avg) 4(row)

9.33(avg) 5(row)

但我的输出是这样的:

9.33 0

9.33 4

9.33 5

谁能帮我解释一下为什么我的输出是这样的以及如何修复它?

#include <stdio.h>
#include <string.h>

#define D 3
#define C 10

int main()
{
float num[D][C] =
{
{5.0, 8.0, 7.5, 4.5, 9.0, 9.0, 6.5, 3.0, 4.5, 8.5},
{6.0, 8.5, 7.0, 5.0, 9.5, 9.5, 6.5, 2.5, 5.0, 7.5},
{5.5, 8.0, 6.5, 7.5, 9.5, 9.5, 6.5, 4.0, 5.5, 9.5},
};

int i, j,e,l;

float d,a,b,c,max,k,x,y,z,o;
float p1,p2,p3,p4;
k=0;
max=0;
for(j=0; j<10; j++)
{
a=num[0][j];
b=num[1][j];
c=num[2][j];
d=(a+b+c)/3;
if(max<=d )
{
for(l=0; l<10; l++)
{
x=num[0][l];
y=num[1][l];
z=num[2][l];
o=(x+y+z)/3;

if(max<o)
{
max=o;
}
}
printf("%0.2f %d\n",max,j);
}
}
}

最佳答案

评论中已经给出了一些建议。定义数组的大小并在循环中重用定义可以避免溢出。首先计算平均值并记住最大值。然后您可以轻松输出它们,将最大值与内存的平均值进行比较。

#define D  3
#define C 10
float num[D][C] = {
{5.0, 8.0, 7.5, 4.5, 9.0, 9.0, 6.5, 3.0, 4.5, 8.5},
{6.0, 8.5, 7.0, 5.0, 9.5, 9.5, 6.5, 2.5, 5.0, 7.5},
{5.5, 8.0, 6.5, 7.5, 9.5, 9.5, 6.5, 4.0, 5.5, 9.5},
};
float avg[C]; /*will hold all the average values*/
float max = 0; /*will hold the maximum vlaue*/
int i, j;
for (i = 0; i < C; i++) {
float sum = 0;
/*sum columns*/
for (j = 0; j < D; j++) {
sum += num[j][i];
}
/*memorize calculated avg*/
avg[i] = sum / D;
/*check if maximum*/
if (max < avg[i])
max = avg[i];
}
/*output index and average*/
for (i = 0; i < C; i++)
if (avg[i] == max)
printf("%0.2f %d\n",max,i);

关于C:求二维数组的最大平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47433572/

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