248125886 2023-12-07 22:23 采纳率: 60%
浏览 4
已结题

(关键词-函数实现)

1.某班期末考试科目为物理(PH)、数学(MT)、英语(EN),最多不超过30人参加考试,分别实现下列功能(要求用多个函数实现):
(1)函数Total_1:输入n个学生的学号num,计算每个学生的总分sum和平均分ave,并按照:(学号 总分 平均分)的格式分行打印;
(2)函数Sort:按照总分成绩由高到低排出成绩的名次,并按照:(学号 总分)的格式分行打印;
(3)函数Total_2:分别统计各学科的平均分,并按照:(科目 平均分)的格式分行打印;

img

#include <stdio.h>
#define size  30          //最多学生人数

void Total_1(int score[size][3],int sum[size],float ave[size],int n,int num[]);
int  Sort(long num[],int n,int sum[]);
void  Total_2(int score[size][3], int sum[3], float ave[3], int n);

int main(void)
{
    int n,score[size][3], sum[size];//成绩数组,总分数组
    long num[size]; //学号数组
    float ave;//平均分数组
    n = Total_1(num,sum,ave,score,n);
    Sort(num,sum,n);
    Total_2(ave,n,sum,score);
    return 0;
}

void Total_1(int score[size][3],int sum[size],float ave[size],int n,int num[])
{
    int i,j;
    printf("请输入学生人数(n<=30): ");
    scanf("%d", &n);//输入参加考试的学生人数
    printf("请输入学号和三门课成绩\n");
    for (i=0; i<n; i++)
    {
        scanf("%ld",&num[i]); //以长整型格式输入每个学生的学号
        sum[i]=0;
        for(j=0; j<3; j++)
        {
            scanf("%d", &score[i][j]);//输入每个学生的各门课成绩
            sum[i]=score[i][j]+sum[i];
        }
        ave[i]=(float)sum[i]/3;
    }
    printf("%d\t  %d\t  %d",num,sum,ave);
    return 0;
}

int Sort(long num[],int n,int sum[])
{
    int i,j;
    for (i=1;i<4;i++)
    {
        for(j=1;j<n;j++)
        {
            sum[]
        }
    }

}

void  Total_2(int score[size][3], int sum[3], float ave[3], int n)
{
    int i,j;
    for(i=1;i<3;i++)
    {
        printf("科目  平均分");
        for(j=0;j<4;j++)
        {
             printf("PH\n MT\n EN\n");

        }
    }
}


  • 写回答

2条回答 默认 最新

  • 一个风轻云淡 优质创作者: 后端开发技术领域 2023-12-08 08:01
    关注
    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define   MAX_LEN  9                    /* 字符串最大长度 */
    #define   STU_NUM 40                       /* 最多的学生人数 */
    
    void  ReadScore(long num[],int score[][3],int n);//录入信息
    void  Course(int Coursesum[3],float Courseaver[3],int score[][3],int n);//计算课程总分与平均分
    void  Student(int Studentsum[STU_NUM],float Studentaver[STU_NUM],int score[][3],int n);//计算学生总分与平均分
    
    int main()
    {
        int n,i,k,g,t,score[STU_NUM][3],Coursesum[3],Studentsum[STU_NUM];
        long num[STU_NUM];
        float Courseaver[3],Studentaver[STU_NUM];
        printf("Input the total number of the students(n<40):");
        scanf("%d",&n);
        ReadScore(num,score,n);
        Course(Coursesum,Courseaver,score,n);
        Student(Studentsum,Studentaver,score,n);
        printf("Counting Result:\n");
        printf("Student’s ID\t  MT \t  EN \t  PH \t SUM \t AVER\n");
        for(i=0;i<n;i++)
        {
            printf("%12ld\t",num[i]);
            for(k=0;k<3;k++)
            {
                printf("%4d\t",score[i][k]);
            }
            printf("%4d\t%5.1f\n",Studentsum[i],Studentaver[i]);
        }
        printf( "SumofCourse \t");
        for(t=0;t<3;t++)
        {
            printf("%4d\t",Coursesum[t]);
        }
        printf("\nAverofCourse\t");
        for(g=0;g<3;g++)
        {
            printf("%4.1f\t",Courseaver[g]);
        }
        return 0;
    }
    
    void  ReadScore(long num[],int score[][3],int n)
    {
        int i,k;
        printf("Input student’s ID and score as: MT  EN  PH:\n");
        for(i=0;i<n;i++)
        {
            scanf("%ld",&num[i]);
            getchar();
            for(k=0;k<3;k++)
            {
                scanf("%d",&score[i][k]);
                getchar();
            }
        }
    }
    
    void  Course(int Coursesum[3],float Courseaver[3],int score[][3],int n)
    {
        int s,i,k;
        for(k=0;k<3;k++)
        {
            s=0;
            for(i=0;i<n;i++)
            {
               s+=score[i][k];
            }
            Coursesum[k]=s;
            Courseaver[k]=s/n;
        }
    }
    
    void  Student(int Studentsum[STU_NUM],float Studentaver[STU_NUM],int score[][3],int n)
    {
        int i,k,s;
        for(i=0;i<n;i++)
        {
            s=0;
            for(k=0;k<3;k++)
            {
                s+=score[i][k];
            }
            Studentsum[i]=s;
            Studentaver[i]=(float)s/3;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 12月7日