C语言-用函数进行学生成绩汇总

该C语言程序展示了如何统计小组内一门或多门课程的总分和平均分,以及对成绩进行排序并输出。主要涉及sumnum、Average、input、sumaver、sort和output等函数。
摘要由CSDN通过智能技术生成

题目要求:40个学生参加了期末考试(分为五组,但每组人数不同),三门考试分别为语文,英语,数学。

老师统计成绩:

1.统计小组一门课程的总分及平均分。

2.统计小组若干门课程的总分及平均分。

3.统计排序后小组三门课程的成绩单。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
float sumnum(int score[], int n);
float Average(int score[], int n);
void input(char name[N][10], int score3[N][3]);
void sumaver(int score3[N][3], float sum3[], float aver3[]);
void sort(int score3[][3], float sum3[], float aver3[], char name[][10]);
void output(int score3[][3], float sum3[], float aver3[], char name[][10]);
void ppp();

int main() {
    int j = 0, i = 0, k = 0, n = 0, score[40], km = 0, score3[N][3];
    float  aver = 0, sum = 0, aver3[N], sum3[N] = { 0 };
    char name[N][10];
   
    ppp();
    printf("\t班级成绩统计\n");
    ppp();
    printf("1.统计小组一门课程的总分及平均分。\n");
    printf("2.统计小组若干门课程的总分及平均分。\n");
    printf("3.输出小组排序后三门课程的成绩单。\n");
    ppp();
    do
    {
        printf("请输入1-3之间的一个数字:");
        scanf("%d", &k);
        ppp();
        
        if (k == 1)
        {
            printf("请输入统计的小组的人数:n=");
            scanf("%d", &n);
            ppp();
            ppp();
            printf("请输入本小组的考试成绩\n");
            sum = sumnum(score, n);
            aver = sum / n;
            printf("本小组的总分=%.1lf\t\t平均分=%.1lf\n", sum, aver);
            continue;
        }
        
        if (k == 2)
        {
            printf("请输入统计的小组的人数n=");
            scanf("%d", &n);
            ppp();
            printf("请输入要统计的课程的门数km=");
            scanf("%d", &km);
            ppp();
            for (i = 0; i < km; i++) {
                printf("请输入本小组第%d门考试成绩\n", i + 1);
                ppp();
                sum = Average(score, n);
                aver = sum / n;
                printf("第%d门课程的总分=%.1lf\t平均分=%.1lf\n", i + 1, sum, aver);
                ppp();
            }
            continue;
        }
        
        if (k == 3)
        {
            input(name, score3);
            sumaver(score3,sum3,aver3);
            sort(score3,sum3,aver3,name);
            output(score3,sum3,aver3,name);
            continue;
        }
        ppp();
    } while (k != -1);
    ppp();

    return 0;
}

//第一个功能
float sumnum(int score[], int n) {
    int i;
    float sum = 0, aver = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &score[i]);
    }
    for (i = 0; i < n; i++) {
        sum += score[i];
    }
    return sum;
}

//第二个功能
float Average(int score[], int n)
{
    int i;
    float aver = 0, sum = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &score[i]);
        sum += score[i];
    }
    return sum;
}


//第三个功能

//输入成绩
void input(char name[N][10], int score3[N][3]) {
    int i, j;
    for (i = 0; i < N; i++)
    {
        printf("请输入第%d个同学的姓名及三门课的成绩:", i + 1);
        scanf("%s", name[i]);
        for (j = 0; j < 3; j++)
        {
            scanf("%d", &score3[i][j]);
        }
    }
}

//计算总分和平均分
void sumaver(int score3[N][3], float sum3[], float aver3[]) {
    int i, j;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < 3; j++)
        {
            sum3[i] += score3[i][j];
        }
        aver3[i] = sum3[i] / 3.0;
    }
}

//总分排序
void sort(int score3[][3], float sum3[], float aver3[], char name[][10]) {
    int i, j, t0 = 0;
    char nn[20];
    float t=0;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N-1 - i; j++)
        {
            if (sum3[j] < sum3[j + 1]) {
                t = sum3[j]; sum3[j] = sum3[j + 1]; sum3[j + 1] = t;
                t = aver3[j]; aver3[j] = aver3[j + 1]; aver3[j + 1] = t;
                t0 = score3[j][0]; score3[j][0] = score3[j + 1][0]; score3[j + 1][0] = t0;
                t0 = score3[j][1]; score3[j][1] = score3[j + 1][1]; score3[j + 1][1] = t0;
                t0 = score3[j][2]; score3[j][2] = score3[j + 1][2]; score3[j + 1][2] = t0;
                strcpy(nn, name[j]); strcpy(name[j], name[j + 1]); strcpy(name[j + 1], nn);
            }
        }
    }
}

//输出成绩
void output(int score3[][3], float sum3[], float aver3[], char name[][10]) {
    ppp();
    printf("输出五个同学三门课的成绩:\n");
    ppp();
    printf("序号\t姓名\t课1\t课2\t课3\t总分\t平均分\n");
    int i;
    for (i = 0; i < N; i++)
    {
        printf("第%d名:\t%s\t%d\t%d\t%d\t%.0f\t%.1f\n", i + 1, name[i],score3[i][0],score3[i][1],score3[i][2],sum3[i],aver3[i]);
    }
}
void ppp() {
    printf("-------------------------------------------------\n");
}

任务一运行结果:

任务二运行结果:

任务三运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值