c语言 请大佬们看看 为什么这二维数组求平均数 各行求和的时候 求不出来

2024-11-23 02:41:32
推荐回答(3个)
回答(1):

你这程序照说根本运行不了的,

1.第一行你的i,j根本就没初始值,怎么能定义int a[i][j]

2.在计算每个选手初始值的时候,要把sum置0,

3.sum是float,不能用%d输出,改动后如下

#include 
int main() { //输入各选手得分
    int n,m,i,j;
    printf("请输入选手总数:");
    scanf("%d",&n);
    printf("请输入评委总数(3个以上):");
    scanf("%d", &m);
    
    int a[n][m];
    
    for (i = 0; i < n; i++) {
        printf("请输入第%d个选手的全部分数(整数):", i+1);
        for (j = 0; j < m; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    printf("\n"); //起泡排序
    int temp,t;
    for (i = 0; i < n; i++) {
        printf("第%d个选手分数 由小到大 排序:", i + 1);
        for (t = 0; t < m-1; t++) {
            for (j = 0; j < m-t-1; j++) {
                if (a[i][j] > a[i][j + 1]) {
                    temp = a[i][j+1];
                    a[i][j+1] = a[i][j];
                    a[i][j] = temp;
                }
            }
        }
        for (j = 0; j < m; j++) {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
//求平均分
    float sum;
    for (i = 0; i < n; i++) {
        sum=0;
        printf("第%d个选手的平均分:",i+1);
        for (j = 1; j < m-1; j++) {
            sum+=a[i][j];
        }
        printf("%d\n",(int)sum/(m-2));
    }
}

回答(2):

图片中第1人分数的排序,什么地方出了错?
请粘贴程序的代码上来,才能调试的。
在第49行,需要加入:
sum=0;
第55行,要改为%f

回答(3):

平均分是一个float,不能用%d输出。
还有,不是起泡排序。。。