有点不理解怎么写,求帮助

.设计主函数,在主函中应该有正确输入或调用每个学生的学号及各科成绩(输入可以根据不同的情况采用不同的输入方法)。
要求:输入时有必要的提示信息。
设计子函数,可以求每个学生的平均成绩,每门课的平均成绩等、并保存在数组中;
要求:每个学生至少设计两个子函数。
最后结果输出。要求:输出格式要界面直观、清晰犬方、格式规范。

主函数是程序入口,两个子函数相当于方法,主函数调用子函数。提示信息相当于打印出来

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7623148
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:编写程序计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积
  • 除此之外, 这篇博客: C语言实现八大排序算法详解及其性能之间的中的 这里需要对堆有一定的了解,堆就是一个比较特殊的完全二叉树,在最大堆里,每个节点的值都大于其左右两个孩子节点的值。这就是最大堆。反之就是最小堆。拿最大堆举例子,每次堆顶的元素值,不就是当前数列的最大吗?这不就成选择排序里的简单排序了吗?找完之后,将他和完全二叉树里最后一个结点的值进行交换,然后做一个自顶向下的自我调整,将他再次调整成一个完全二叉堆。第二次取最大的树,这时我们需要将上一次找到的结点屏蔽掉,不然会陷入一个死循环。无数次找完之后,再按层序的思想将二叉树里的数据遍历到一个数组当中,这时的数组为一个有序的数组。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    算法思想

  • 以下回答来自chatgpt:

    我可以帮你设计一个学生成绩管理系统的主函数及子函数,具体实现如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    //计算每个学生的平均成绩
    float calcAvg(float arr[], int n){
        float sum = 0.0;
        for (int i = 0; i < n; i++){
            sum += arr[i];
        }
        return sum / n;
    }
    
    //计算每门课的平均成绩
    float calcSubAvg(float *arr[], int n, int m){
        float sum = 0.0;
        for (int i = 0; i < n; i++){
            sum += *(arr[i] + m);
        }
        return sum / n;
    }
    
    void manageScore(){
        int n = 0;
        printf("请输入学生数:");
        scanf("%d", &n);
        float *score[n];
        char *name[n];
        for (int i = 0; i < n; i++){
            score[i] = (float*)malloc(5 * sizeof(float));
            name[i] = (char*)malloc(10 * sizeof(char));
            printf("请输入学生%d的学号:", i+1);
            scanf("%s", name[i]);
            printf("请输入%d号学生的各科成绩:", i+1);
            for (int j = 0; j < 5; j++){
                scanf("%f", score[i] + j);
            }
        }
        printf("所有学生的各科成绩如下:\n");
        printf("学号  数学  物理  英语  历史  政治\n");
        for (int i = 0; i < n; i++){
            printf("%s\t", name[i]);
            for (int j = 0; j < 5; j++){
                printf("%.2f\t", *(score[i] + j));
            }
            printf("\n");
        }
        printf("第一门课程的平均成绩为:%.2f\n", calcSubAvg(score, n, 0));
        printf("每个学生的平均成绩为:\n");
        for (int i = 0; i < n; i++){
            printf("%s的平均成绩为:%.2f\n", name[i], calcAvg(score[i], 5));
        }
        printf("每门课的平均成绩为:\n");
        printf("数学:%.2f\n", calcSubAvg(score, n, 0));
        printf("物理:%.2f\n", calcSubAvg(score, n, 1));
        printf("英语:%.2f\n", calcSubAvg(score, n, 2));
        printf("历史:%.2f\n", calcSubAvg(score, n, 3));
        printf("政治:%.2f\n", calcSubAvg(score, n, 4));
    }
    
    int main()
    {
        manageScore();
        return 0;
    }
    

    首先,我们要求用户输入学生数。根据学生数,动态地分配内存,存储每个学生的姓名和各科成绩。输入完成绩后,我们会利用循环进行输出,展示学生成绩。接着,调用子函数分别计算每个学生的平均成绩和每门课的平均成绩。最后以清晰、规范化的方式呈现结果输出。

    至于显示输出的方式,这里我选择使用了一个简单的表格形式,将各项数据罗列在在一起,方便阅读。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^