要求用c语言编写,将总分排序(由高到低),并按总分从高到低输出成绩表

体能测试成绩表
编号 姓名 性别 5km 俯卧撑 仰卧起坐 400m游泳 总分
01 张一 男 78 91 89 78 326
02 张二 女 80 68 59 75 282
03 张三 男 68 56 58 49 231
04 张四 男 56 45 78 89 268
05 张五 男 89 89 88 78 344
06 王一 女 75 89 46 68 278
07 王二 女 51 87 91 57 286
08 王三 男 48 78 84 68 278
09 王四 男 70 55 65 67 257
10 王五 男 61 68 65 66 260
要求用c语言编写,将总分排序(由高到低),并按总分从高到低输出成绩表。
请先将成绩表下载保存在“文本文档”中,通过文件调用将其输出在屏幕上,在对成绩表的总成绩进行排序,最后把成绩表的成绩由高到低重新排列成绩表,最后将排好的成绩表输出。。。小弟在此谢谢各位大仙!!小弟已将文件调用编好了(我把成绩表保存在d:\\1.txt目录下),如下:
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\1.txt","rt"))==NULL)
{
printf("\nCannot open file strike any key exit!");
getchar();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
跪求啊!!!

#include<stdio.h>

#include<stdlib.h>

struct test

{

    char num[3];

 char name[20];

 char sex[10];

 int  run;

 int fw;

 int yw;

 int swim;

 int total;

}a[10];

void main()

{

 int i,j;

 struct test b;

    FILE *fp;

 fp=fopen("1.txt","r");

 if(fp==NULL)

 {

     printf("文件打开错误!\n");

  exit(0);

 }

 for(i=0;i<10;i++)

   fscanf(fp,"%s        %s     %s    %d      %d              %d        %d                %d\n",a[i].num,a[i].name,a[i].sex,&a[i].run,&a[i].fw,&a[i].yw,&a[i].swim,&a[i].total);

 fclose(fp);

   for(i=0;i<9;i++)

  for(j=0;j<10-i;j++)

   if(a[j].total<a[j+1].total)

   {

        b=a[j];

     a[j]=a[j+1];

     a[j+1]=b;

   }

   printf("\n编号  姓名  性别  5km  俯卧撑  仰卧起坐  400m游泳  总分\n");

   for(i=0;i<10;i++)

    printf("%s   %s    %s    %d    %d       %d       %d       %d\n",a[i].num,a[i].name,a[i].sex,a[i].run,a[i].fw,a[i].yw,a[i].swim,a[i].total);

   printf("\n");

}

好了这下满足你的要求了!

!!!!!!!!对了,你自己改下文件名字哈!我为了方便就没用你写的那个文件名!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-14
#include "stdio.h"
#include "string.h"
struct student
{
int id;
char name[30];
char birth[30];
int score[3];
}stu[10];

void input(int num)//输入记录
{
for(int i=0;i<num;i++)
{
printf("开始输入第%d个学生记录\n",i+1);
printf("输入第%d个学生记录的学号:",i+1);
scanf("%d",&stu[i].id);
printf("输入第%d个学生记录的姓名:",i+1);
scanf("%s",stu[i].name);
printf("输入第%d个学生记录的生日:",i+1);
scanf("%s",stu[i].birth);
printf("输入第%d个学生记录的第一门功课成绩:",i+1);
scanf("%d",&stu[i].score[0]);
printf("输入第%d个学生记录的第二门功课成绩:",i+1);
scanf("%d",&stu[i].score[1]);
printf("输入第%d个学生记录的第三门功课成绩:",i+1);
scanf("%d",&stu[i].score[2]);
}
}
void output(int num)//输出记录
{
for(int i=0;i<num;i++)
{
printf("开始输出第%d个学生记录\n",i+1);
printf("id:%d\n",stu[i].id);
printf("name:%s\n",stu[i].name);
printf("birth:%s\n",stu[i].birth);
printf("score1:%d\n",stu[i].score[0]);
printf("score2:%d\n",stu[i].score[1]);
printf("score3:%d\n",stu[i].score[2]);
}
}
void meansore(int num)//求每门课程平均值
{
int i,j;
int mean[3];mean[0]=0;mean[1]=0;mean[2]=0;
for(i=0;i<num;i++)
{
for(j=0;j<3;j++)
{
mean[j]+=stu[i].score[j];
}
}
for(i=0;i<3;i++)
{
printf("第%d门功课的平均成绩:%.2f\n",i+1,mean[i]*1.0/num);
}
}
void sortmean(int num)//按学生平均分由小到大排序
{
student temp;
int i,j;
int maxt,index;
for(i=0;i<num-1;i++)
{
index=i;
maxt=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
for(j=i+1;j<num;j++)
{
if(stu[j].score[0]+stu[j].score[1]+stu[j].score[2]<maxt)
{
maxt=stu[j].score[0]+stu[j].score[1]+stu[j].score[2];
index=j;
}
}
temp=stu[i];
stu[i]=stu[index];
stu[index]=temp;
}
}
void printfail(int num)//打印不及格
{
int i,j;
int no=0;
for(i=0;i<num;i++)
{
for(j=0;j<3;j++)
{
if(stu[i].score[j]<60)
{
no++;
printf("输出第%d个不及格学生记录\n",no);
printf("id:%d\n",stu[i].id);
printf("name:%s\n",stu[i].name);
printf("birth:%s\n",stu[i].birth);
printf("score1:%d\n",stu[i].score[0]);
printf("score2:%d\n",stu[i].score[1]);
printf("score3:%d\n",stu[i].score[2]);
break;
}
}
}
if(no==0)
{
printf("没有不及格的学生\n");
}
}
void sortage(int num)//按年龄排序
{
student temp;
int i,j;
int index;
char birthtemp[30];
for(i=0;i<num-1;i++)
{
index=i;
strcpy(birthtemp,stu[i].birth);
for(j=i+1;j<num;j++)
{
if(strcmp(birthtemp,stu[j].birth)<0)
{
strcpy(birthtemp,stu[j].birth);
index=j;
}
}
temp=stu[i];
stu[i]=stu[index];
stu[index]=temp;
}
}
int main()
{
int n=2;//指定要输入的学生记录数目 这取2个为例
input(2);
output(2);
meansore(2);
printfail(2);
sortmean(2);
output(2);
sortage(2);
output(2);
return 0;
}
我机器上是可以运行的。
相似回答