C语言求3个学生的4门课程总分和平均数

img

img


我在第一层的循环开头给sum初始化了,为什么在第二轮的循环出现错误了
实在想不通啊T^T

  • 数组 a[3][4] 当 i = 3 或 j = 4, 这里 造成了二维数组的越界访问,会有各种意外输出情况
  • 修改如下【索引从0开始访问】
#include <stdio.h>
#define M 3
#define N 4
int main()
{
    int a[M][N];
    float sum[M], ave[M];
    int i, j;
    for (i = 0; i < M; i++) // 索引 从 0开始
    {
        sum[i] = 0;
        for (j = 0; j < N; j++) // 索引 从 0开始
        {
            scanf("%d", &a[i][j]);
            sum[i] = sum[i] + a[i][j];
        }
        ave[i] = sum[i] / 4;
        printf("sum[%d]=%-5.2f,p=%-5.2f\n",i, sum[i], ave[i]);
    }
    return 0;
}

不用客气


#include <stdio.h>
int main()
{
    int student1[4];
    int student2[4];
    int student3[4];
    int total1, total2, total3;
    int average1, average2, average3;
    int i;
    printf("请输入学生1的4门课程成绩:\n");
    for (i = 0; i < 4; i++)
    {
        scanf("%!d(MISSING)", &student1[i]);
    }
    printf("请输入学生2的4门课程成绩:\n");
    for (i = 0; i < 4; i++)
    {
        scanf("%!d(MISSING)", &student2[i]);
    }
    printf("请输入学生3的4门课程成绩:\n");
    for (i = 0; i < 4; i++)
    {
        scanf("%!d(MISSING)", &student3[i]);
    }
    total1 = student1[0] + student1[1] + student1[2] + student1[3];
    total2 = student2[0] + student2[1] + student2[2] + student2[3];
    total3 = student3[0] + student3[1] + student3[2] + student3[3];
    average1 = total1 / 4;
    average2 = total2 / 4;
    average3 = total3 / 4;
    printf("学生1的4门课程总分是:%!d(MISSING)\n", total1);
    printf("学生1的4门课程平均分是:%!d(MISSING)\n", average1);
    printf("学生2的4门课程总分是:%!d(MISSING)\n", total2);
    printf("学生2的4门课程平均分是:%!d(MISSING)\n", average2);
    printf("学生3的4门课程总分是:%!d(MISSING)\n", total3);
    printf("学生3的4门课程平均分是:%!d(MISSING)\n", average3);
    return 0;
}

供参考:

img