急求一个C语言程序,高手们帮帮忙!!!

假设有一个班级的学生n人,期末考试老师要对成绩从高到低列出,并对各科的考试成绩求出其最高分、最低分和平均成绩。现在设计一个成绩管理程序,能够实现以下的功能:(1)对某门科... 假设有一个班级的学生n人,期末考试老师要对成绩从高到低列出,并对各科的考试成绩求出其最高分、最低分和平均成绩。现在设计一个成绩管理程序,能够实现以下的功能:
(1)对某门科目的成绩进行排序并显示输出;
(2)求出每门科目的最高分、最低分和平均分的信息;
学生成绩的数据用结构数组表示,包括:学号、姓名、三门科目的考试成绩,其结构格式如下:
学号 姓名 语文 数学 外语
int num char name[10] int score[3]
广告
展开
 我来答
百度网友cc0820bc9
2007-06-13 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:200万
展开全部
#include"stdio.h"
#include"stdlib.h"

struct student
{
int num;
char name[16];
float score[3];
float ave;
};
int main()
{
FILE *fp;
student stu[10];
int i,j,temp;
int aves[10];

/*数据输入*/
if((fp=fopen("stud.txt","w+"))==NULL)
{
printf("文件打开失败!\n\n");
system("PAUSE");
return 0;
}
fprintf(fp,"学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
for(i=0;i<10;i++)
{
printf("第%d个学生学号:",i+1);
scanf("%d",&stu[i].num);
printf("姓名:");
scanf("%s",&stu[i].name);
printf("成绩1:");
scanf("%f",&(stu[i].score[0]));
printf("成绩2:");
scanf("%f",&(stu[i].score[1]));
printf("成绩3:");
scanf("%f",&(stu[i].score[2]));
stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
fprintf(fp,"%-10d %-10s %-4g %-4g %-4g %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
}
fclose(fp);

/*排序*/
if((fp=fopen("stu_sort.txt","w+"))==NULL)
{
printf("文件打开失败!\n\n");
system("PAUSE");
return 0;
}
for(i=0;i<10;i++)
aves[i]=i;
/*冒泡排序*/
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(stu[aves[j]].ave>stu[aves[j+1]].ave)
{
temp=aves[j];
aves[j]=aves[j+1];
aves[j+1]=temp;
}

}
}
fprintf(fp,"学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
for(i=0;i<10;i++)
fprintf(fp,"%-10d %-10s %-4g %-4g %-4g %f\n",stu[aves[i]].num,stu[aves[i]].name,stu[aves[i]].score[0],stu[aves[i]].score[1],stu[aves[i]].score[2],stu[aves[i]].ave);
fclose(fp);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式