C,初学者函数调用,请求指出问题

#输入5 个学生的数学、语文、英语 3 门课程的成绩,计算并输出每一门课程的平均成绩和每一位学生的平均成绩。
#初学函数调用,请求指出代码中的问题,或者发布正确代码,谢谢

#include
#define M  5
#define N  3

float RAver(float score[M][N]);
float CAver(float score[M][N]);
int main()
{
    int score[M][N],i,n;
    printf("每个学生的平均分:\n");
    float RAver(float score[M][N]);
    float CAver(float score[M][N]);
    return 0;    
}

float RAver(float score[M][N])
{
    int score[][N],i,n;
    float aver1=0;
    for(i=0;ifor(n=0,aver1=0;nscanf("%d",&score[i][n]);
        aver1 += score[i][n] / 3.;
        printf("%d\t", score[i][n]);
    }
        printf("%.1f\n", aver1);
}


float CAver(float score[M][N])
{    
    float b1,b2,b3;
    for(int i=0;ifor(float n=0,c=0;nfor (i = 0; i < M; i++)
    {
            b1 += score[i][0] ;
            b2 += score[i][1] ;
            b3 += score[i][2] ;
    }
    printf("每门课的平均分:\n");
    printf("%2.1f\t%2.1f\t%2.1f\t", b1/5., b2/5., b3/5.);

    }
}


你的代码中

float RAver(float score[M][N])
{
    int score[][N],i,n;

这里在参数中有score,然后又在函数体定义了score,属于重复声明。其他没细看,帮你重写了份
代码和运行结果如下,望采纳

#include <stdio.h>

// 函数声明
float calculateAverage(float arr[], int size);

int main() {
    // 输入学生成绩
    float math[5], chinese[5], english[5];
    for (int i = 0; i < 5; i++) {
        printf("请输入第%d个学生的成绩:\n", i+1);
        scanf("%f%f%f", &math[i], &chinese[i], &english[i]);
    }

    // 计算每一门课程的平均成绩
    float avgMath = calculateAverage(math, 5);
    float avgChinese = calculateAverage(chinese, 5);
    float avgEnglish = calculateAverage(english, 5);

    // 计算每一位学生的平均成绩并输出
    for (int i = 0; i < 5; i++) {
        float avgStudent = (math[i] + chinese[i] + english[i]) / 3;
        printf("第%d个学生的平均成绩为%.2f\n", i+1, avgStudent);
    }

    // 输出每一门课程的平均成绩
    printf("数学的平均成绩为%.2f\n", avgMath);
    printf("语文的平均成绩为%.2f\n", avgChinese);
    printf("英语的平均成绩为%.2f\n", avgEnglish);

    return 0;
}

// 计算数组中元素的平均值
float calculateAverage(float arr[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum / size;
}

img

该回答引用chatgpt:


#include <stdio.h>

int main() {
    int math[5], chinese[5], english[5]; // 定义存储成绩的数组
    float mathAvg = 0, chineseAvg = 0, englishAvg = 0; // 初始化各科平均分
    float studentAvg[5]; // 存储每个学生的平均分

    // 输入每个学生的成绩
    for (int i = 0; i < 5; i++) {
        printf("请输入第%d个学生的数学、语文、英语成绩:", i + 1);
        scanf("%d%d%d", &math[i], &chinese[i], &english[i]);

        // 计算每门课的总分
        mathAvg += math[i];
        chineseAvg += chinese[i];
        englishAvg += english[i];

        // 计算每个学生的平均分
        studentAvg[i] = (math[i] + chinese[i] + english[i]) / 3.0;
    }

    // 计算每门课的平均分
    mathAvg /= 5;
    chineseAvg /= 5;
    englishAvg /= 5;

    // 输出每门课的平均分
    printf("数学平均分:%.2f\n", mathAvg);
    printf("语文平均分:%.2f\n", chineseAvg);
    printf("英语平均分:%.2f\n", englishAvg);

    // 输出每个学生的平均分
    for (int i = 0; i < 5; i++) {
        printf("第%d个学生的平均分为:%.2f\n", i + 1, studentAvg[i]);
    }

    return 0;
}

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7599333
  • 这篇博客也不错, 你可以看下将第一题改为从键盘输入5个学生的数据,计算出平均成绩,并输出每个学生3门课的平均成绩
  • 除此之外, 这篇博客: 【方法分享】准大学生如何自学C语言?中的 一、找寻一个优质教学视频 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 好的教学资源永远是我们学习的第一步

    在这里我建议以视频为主,书本为辅助

    C语言的书籍繁多而杂,有很多热销书籍并非出自名门大家,有纰漏在所难免。作为初学者的我们肯定看不出这些纰漏,但它可能会把我们的学习引入死胡同。

    视频同样也会有错误的地方,这也是为何我们需要寻找优质教学视频

    在看视频的基础上,复以书本练习为辅助,方为学习妙计(个人观点)

    在这里强烈推荐b站比特鹏哥的C语言教学视频 [连接]

    image-20210824101051431

    讲的非常非常非常详细,比我之前在某堂在线找到的不知名视频好太多了(那个视频里老师就对着你念ppt,枯燥乏味无干货)

    这里推荐大家直接去看最新版本的视频,画质更好。内容新旧基本是一样的

    找完视频之后请立马开动,收进收藏夹只会让你开学了进度还是0%

    不过想必来csdn看博客的你已经不是小菜鸡了(doge)