怎么用c语言去实现这个程序,如何不使用结构体完成呢

用c语言进行编程要求如下
(1)将班级10名同学的5门功课(语文,数学,英语,物理,化学)成绩输入10行5列的二维数组中;
(2)查询任意一位同学的各门成绩并输出;
(3)查询任意一门功课的各同学成绩;
(4)求出每位同学的总成绩,并输出排名的名次,按照总成绩由高到低排名;
(5)求出每门功课的最高分和最低分以及平均分;
请用多文件工程实现上述程序(注意模块的合理划分)。

用类实现

你这直接把答案说了啊,用二维数组啊,第一个下标表示学生人数,第二个代表他们的成绩,然后排序就好

大致就是这样,加一个文件输入就行了

img

#include<stdio.h>
//该目录下新建文件:test.txt 
/*
内容示例: 
78 75 72 76 81
78 75 72 76 82
78 75 72 76 83
78 75 72 76 84
78 75 72 76 85
78 75 72 76 86
78 75 72 76 87
78 75 72 76 88
78 75 72 76 89
78 75 72 76 90

*/
void put(int score[10][5],int num)
{
    for(int p=0; p<num; p++)
    {
        printf("成绩为:%d %d %d %d %d\n"
               ,score[p][0],score[p][1]
               ,score[p][2],score[p][3],
               score[p][4]);
    }
}
void swap(int *a,int *b)
{
    int tem=*a;
    *a=*b;
    *b=tem;
}
void sort(int score[10][5],int num)
{
    float sum[10]= {0};
    for(int p=0; p<num; p++)
    {
        for(int i=0; i<5; i++)
        {
            sum[p]+=score[p][i];
        }
        sum[p]/=5;
    }
    for(int i=0; i<num-1; i++)
    {
        for(int j=0; j<num-i-1; j++)
        {
            if(sum[j]<sum[j+1])
            {
                float tem=sum[j];
                sum[j]=sum[j+1];
                sum[j+1]=tem;
                for(int k=0; k<5; k++)
                {
                    swap(&score[j][k],&score[j+1][k]);
                }
            }
        }
    }
}
void fileread(int ch[],int n)
{
    FILE *fp;
    fp = fopen("test.txt","r");
    if(fp == NULL)
    {
         printf("Open filefailure!");
         return ;
    }
    else
    {
        int i=0;
        while(!feof(fp))
        {
            fscanf(fp,"%d",&ch[i++]);
        }
    }   
    fclose(fp);
}
void filesave(int ch[],int n)
{
    FILE *fp;
    fp = fopen("test.txt","w+");
    int i=0;
    while(i<n)
    {
        fprintf(fp,"%d ",ch[i++]);
        if(i%5==0)
        fprintf(fp,"\n");
    }
    fclose(fp);
}
int main()
{
    int num=10,n=5;
    int score[10][5];
    int t[num*n];
    int pos=0;
    fileread(t,num*n);
    for(int i=0; i<num; i++)
    {
        for(int j=0; j<n; j++)
        {
            //scanf("%d",&);
            score[i][j]=t[pos++];
        }
    }
    printf("输入要查询的同学(1-10)");
    int p=1;
    scanf("%d",&p);
    printf("成绩为:%d %d %d %d %d\n"
           ,score[p-1][0],score[p-1][1]
           ,score[p-1][2],score[p-1][3],
           score[p-1][4]);
    printf("输入要查询的功课(1-5)");
    scanf("%d",&p);
    for(int i=0; i<10; i++)
    {
        printf("同学%d成绩为:%d\n",i+1,score[i][p-1]);
    }
    sort(score,num);
    put(score,num);
    pos=0;
    for(int i=0; i<num; i++)
    {
        for(int j=0; j<n; j++)
        {
            t[pos++]=score[i][j];
        }
    }
    filesave(t,pos);
    return 0;
}



include <stdio.h>
#include <math.h>
typedef struct _studets{
char name[10];//学生名字
int sorc[5];//分数
int avg; //学生平均分
}STUDENT;
int main()
{
int i,j;
int sum = 0;
int avg = 0;
STUDENT stud[10];
for(i=0;i<10;i++)
{
printf("输入第%d个学生的名字:",i+1);
scanf("%s",stud[i].name);
for(j=0;j<5;j++)
{
printf("输入学生-%s-的第%d门课程成绩",stud[i].name,j+1);
scanf("%d",&stud[i].sorc[j]);
}
}
printf("\n");
//计算每个学生的平均分
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
sum += stud[i].sorc[j];
}
stud[i].avg = sum/5;
sum = 0;
printf("学生-%s-的平均分数为:%d\n",stud[i].name,stud[i].avg);
}
printf("\n");
//计算每门课的平均分
for(i=0;i<5;i++)
{
for(j=0;j<10;j++)
{
sum+= stud[j].sorc[i];
}
avg = sum/10;
printf("第%d门课程的平均分为:%d\n",i+1,avg);
avg = 0;
sum = 0;
}
//找出所有50个分数中最高的分数所对应的学生和课程
int temp=0,stu,soc;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
if(temp<stud[i].sorc[j])
{
temp = stud[i].sorc[j];
stu = i;
soc = j;
}
}
}
printf("\n");
printf("分数最高的学生是-%s-的第%d门课程,分数是:%d\n",stud[stu].name,soc+1,stud[stu].sorc[soc]);
//计算平均分方差
for(i=0;i<10;i++)
{
sum +=stud[i].avg;
}
avg = sum/10;
double ff;
for(i=0;i<10;i++)
{
ff +=(stud[i].avg-avg)*(stud[i].avg-avg) ;
}
ff/=9;
double fc;
fc=sqrt(ff);
printf("\n");
printf("平均分方差为:%f\n",fc);
//每个学生平均分按大小排列
STUDENT stuep;
stuep.avg=0;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(stud[j].avg<stud[j+1].avg)
{
stuep = stud[j];
stud[j] = stud[j+1];
stud[j+1] = stuep;
}
}
}
printf("\n");
printf("按平均分数大小排序:\n");
printf("姓名\t平均分\n");
for(i=0;i<10;i++)
{
printf("%s\t%d\n",stud[i].name,stud[i].avg);
}
return 0;
}