c语言程序讨论,头皮都抠烂了

c语言程序,要求将计算每个学生最终成绩的功能设计成函数进行调用;将计算学生平均成绩的功能设计成函数进行调用。

img


img


#include <stdio.h>

typedef struct stu
{
    int num, TS, PS, ES;
    double RS;

} Stu;

double Ave(Stu student[], int n)
{
    double sum = 0;
    for (int i = 0; i < n; i++)
    {
        sum += student[i].RS;
    }
    return sum / n;
}

void getRS(Stu student[], int n)
{
    for (int i = 0; i < n; i++)
    {
        student[i].RS = student[i].TS * 0.6 + student[i].PS * 0.2 + student[i].ES * 0.2;
    }
}

int main()
{
    Stu student[30];
    int n = 0, x;
    while (scanf("%d", &x) != EOF)
    {
        student[n].num = x;
        scanf("%d%d%d", &student[n].TS, &student[n].PS, &student[n].ES);
        n++;
    }

    getRS(student, n);
    double ave = Ave(student, n);
    printf("%6s%6s%6s%6s%6s%8s%8s", "NUM", "TS", "PS", "ES", "RS", ">=AVER", "LEVEL\n");
    for (int i = 0; i < n; i++)
    {
        printf("%6d%6d%6d%6d%6.0lf", student[i].num, student[i].TS, student[i].PS, student[i].ES, student[i].RS);
        printf("%7s", (student[i].RS >= ave) ? "T" : "F");
        char level;
        if (student[i].RS >= 90)
            level = 'A';
        else if (student[i].RS >= 80 && student[i].RS < 90)
            level = 'B';
        else if (student[i].RS >= 70 && student[i].RS < 80)
            level = 'C';
        else if (student[i].RS >= 60 && student[i].RS < 70)
            level = 'D';
        else
            level = 'E';

        printf("%7c\n", level);
    }

    return 0;
}

从题目来看,输入是二维数组,答案是对原数组做了扩充,增加了两列。题目不难,小伙伴可以想一想怎么处理,是不错的练习。

可以看看一位博主写的这篇文章,写得很不错,题目也与题主所贴出的类似,可以做为参考。(C++实现的,该程序可以通过改头文件以及输入输出语句改为C语言,不过重点更侧重于的是实现的思路。)


如有帮助,还请采纳!谢谢!