c语言编写程序,输入成绩,可以求总分,平均分,排序,根据学号输出成绩?

如题所述

#include "stdio.h"
#include "string.h"
#define N 5
#define M 3
struct stu
{ char name[10];
char xh[10];
int score[M];
int total;
double avg;
}s[N];
input( struct stu s[N] )
{ int i,j;
printf("请输入学生姓名\n");
for(i=0;i<N;i++)
scanf("%s",&s[i].name);
printf("请输入学生学号\n");
for(i=0;i<N;i++)
scanf("%s",&s[i].xh);

printf("请输入M门课的成绩\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&s[i].score[j]);
}
jisuan(struct stu s[N] )
{ int i,j;

for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
s[i].total+=s[i].score[j];
s[i].avg=s[i].total/3.0;
}
}
print(struct stu s[N] )
{ int i,j;
printf("打印N个学生的所有数据\n");
printf("姓名\t学号\t语文\t数学\t英语\t总分\t平均分\n");
for(i=0;i<N;i++)
{ printf("%s\t%s\t",s[i].name,s[i].xh );
for(j=0;j<M;j++)
printf("%d\t",s[i].score[j]);
printf("%d\t%f\n",s[i].total,s[i].avg);
}
}
printmax(struct stu s[N] )
{ int i,j,k,base,max=0 ;
base=s[0].total;
for(i=0;i<N;i++)
if(s[i].total>=base)
{ max=s[i].total;
k=i;
}
printf("最高分数的学生是\n");
printf("姓名\t学号\t语文\t数学\t英语\t总分\t平均分\n");
printf("%s\t%s\t",s[k].name,s[k].xh );
for(j=0;j<M;j++)
printf("%d\t",s[k].score[j]);
printf("%d\t%f\n",s[k].total,s[k].avg);

}
main()
{ input(s);
jisuan(s);
print(s);
printmax(s);
}追问

不需要姓名,

追答

你改成学号就行了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-20
学号需要用户输入 还是写在程序里面?追问

学号需要用户输入. 只求总分平均分,排序。不需要姓名。输入学好求出该人成绩就好