编程题,跪求c语言高手回答!!!

实验题目:
输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求:
1)排序用一个函数实现(输入、输出、计算总分和平均分也可分别编写函数来实现)。
2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。
(最好用数组和结构体两种方法做)

第1个回答  2011-01-03
int main() {
int i,j;
float k;
float sum[10][2];
float student[10][3];
for(i = 0; i < 10; i++) {
printf("\n请输入第%d个学生的成绩:\n", i+1);
for (j = 0; j < 3; j++) {
switch (j) {
case '0':
printf("语文:");
scanf("%f", &student[i][j]);
break;
case '1':
printf("数学:");
scanf("%f", &student[i][j]);
break;
case '2':
printf("英语:");
scanf("%f", &student[i][j]);
break;
}
}
printf("\n第%d个学生成绩录入完毕\n", i+1);
}
for(i=0;i<10;i++)
{
for(j=0;j<3;j++)
{
sum[i][0]+=student[i][j];
}
sum[i][1]=sum[i][0]/3;
}
for(i=0;i<10;i++)
{
if(sum[i]<sum[i+1])
{
k=sum[i][0];
sum[i][0]=sum[i+1][0];
sum[i+1][0]=k;
}
}
for(i=0;i<10;i++)
{
printf("\n\n学生编号:%d\n",i+1);
printf("语文分数:%f\n",student[i][0]);
printf("数学分数:%f\n",student[i][1]);
printf("英语分数:%f\n",student[i][2]);
printf("总分数:%f\n",sum[i][0]);
printf("平均分数:%f\n",i+1,sum[i][1]);
}
system("pause");
return 0;
}
第2个回答  2011-01-03
这个是我曾今做过的程序 和你差不多,只是大家都忙,我也就不改了
#include<stdio.h>
void main()
{
int i,j,max,m=0;
printf("输入5位学生的姓名和数学,英语成绩,将自动按其按平均分排序:\n");
struct student
{
char name[10];
int maths;
int english;
float a[10];
}stu[10],st;
printf("姓名 数学 英语\n");
for(i=0;i<5;i++)
{
scanf("%s%d%d",stu[i].name,&stu[i].maths,&stu[i].english);
stu[i].a[i]=(stu[i].maths+stu[i].english)/2;
printf("\n");
}
for(i=0;i<5;i++)
{
max=i;
for(j=i;j<5;j++)
{
if(stu[j].a[j]>stu[max].a[max])
max=j;
}
if(i!=max)
{
st=stu[max];
stu[max]=stu[i];
stu[i]=st;
}
}
for(i=0;i<5;i++)
printf("%s%3d%3d",stu[i].name,stu[i].maths,stu[i].english);
printf("\n");
}
第3个回答  2011-01-03
已经发送,请查收本回答被提问者采纳