二维数组——————学生成绩管理

/****************


对一个班级人数为40以内的三门考试成绩进行统计计算每个学生以及全班的总成绩及平均数

********************/

#include<stdio.h>

#define STUD_N 40        //人数最大容量
#define CONSURE_N 3        //考试科目数最大容量

int ReadScore(int score[][CONSURE_N],long num[]) ;
void AverforStud(int score[][CONSURE_N],int sum[],float aver[],int n);
void AverforCourse(int score[][CONSURE_N],int sum[],float aver[],int n);
void Print(int score[][CONSURE_N],long num[],int sumS[],float averS[],int sumC[],float averC[],int n);


int main(){
    int score[STUD_N][CONSURE_N],sumS[STUD_N],sumC[STUD_N],n;
    long num[STUD_N];
    float averS[STUD_N],averC[STUD_N];
    n = ReadScore(score,num);
    AverforStud(score,sumS,averS,n);        //计算每个学生平均分
    AverforCourse(score,sumC,averC,n);        //计算每门课程总平均分
    Print(score,num,sumS,averS,sumC,averC,n);//输出学生成绩
    return 0;
}

int ReadScore(int score[][CONSURE_N],long num[])     //录入学号及三门课成绩
{
    int i,j,n;
    printf("输入参考人数:");
    scanf("%d",&n);
    printf("输入学号和成绩:MT EN PH:\n");
    for(i = 0;i<n;i++)
    {
        scanf("%ld",&num[i]);        //输入学号
        for(j = 0;j<CONSURE_N;j++){
            scanf("%d",&score[i][j]);        //输入课程成绩
        }
    }
    return i;
}
//计算每个学生总分和平均分
void AverforStud(int score[][CONSURE_N],int sum[],float aver[],int n)
{
    int i,j;
    for(i = 0 ;i<n;i++)
    {
        sum[i] = 0;
        for(j=0;j<CONSURE_N;j++)
        {
            sum[i] = sum[i] + score[i][j];    //计算第i个学生总分
        }
        aver[i] = (float)sum[i]/CONSURE_N;    //计算第i个学生平均分
    }
}

//计算每门课总分和平均分
void AverforCourse(int score[][CONSURE_N],int sum[],float aver[],int n)
{
    int i,j;
    for(j = 0;j<CONSURE_N;j++){
        sum[j] = 0;
        for(i = 0;i<n;i++){
            sum[j] = sum[j] + score[i][j];
        }
        aver[j] = (float)sum[j]/n;
    }
}

void Print(int score[][CONSURE_N],long num[],int sumS[],float averS[],int sumC[],float averC[],int n)
{
    int i,j;
    printf("结果:\n");
    printf("ID\t MT\t EN\t PH\t SUM\t AVER\n");
    for(i = 0;i<n;i++){
        printf("%ld\t",num[i]);    //长整形格式打印学号
        for(j = 0;j<CONSURE_N;j++)
        {
            printf("%4d\t",score[i][j]);    //打印每门课成绩
        }
        printf("%4d\t %5.1f\n",sumS[i],averS[i]);    //学生总分和平均分
    }
    printf("每门课总分\t");
    for(j = 0;j<CONSURE_N;j++){
        printf("%4d\t",sumC[j]);
    }
    printf("\n 每门课平均分\t");
    for(j = 0;j<CONSURE_N;j++)
    {
        printf("%4.1f\t",averC[j]);
    }
    printf("\n");
}

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值