C语言程序代码

来源:百度知道 编辑:UC知道 时间:2024/05/10 09:04:14
4磁盘中有一个保存学生成绩的文本文件,文件中包含学生的学号姓名和成绩,现在要求学生的成绩从高到低进行排列,将排列的结果显示到屏幕上,并输出到文件中,假设学生成绩文件file.txt的格式和内容如下:
2006001 wangqing 88
2006002 zhangfan 98
2006003 lilin 85
2006004 wangling 75
2006005 zhaofang 78
2006006 liumei 100
2006007 huangming 86
2006008 lihua 77
2006009 kouyan 85
2006010 mahong 96
先建立学生文件file.txt,格式和内容如下:
2006001 wangqing 88
2006002 zhangfan 98
2006003 lilin 85
2006004 wangling 75
2006005 zhaofang 78
2006006 liumei 100
2006007 huangming 86
2006008 lihua 77
2006009 kouyan 85
2006010 mahong 96
当C语言程序运行时,现在要求学生的成绩从高到低进行排列,将排列的结果显示到屏幕上,并输出到文件中。

#include<stdio.h>
#include<stdlib.h>
struct student
{
char num[20];
char name[16];
float chj;
};
void main()
{
FILE *fp;
student stu[200],temp;
int i,j,k;
if((fp=fopen("file.txt","r+"))==NULL)
{
printf("Cannot open file strike any key exit!");
exit(1);
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%s %s %f",stu[i].num,stu[i].name,&stu[i].chj);
for(j=0;j<i-1;j++)
for(k=0;k<i-j-1;k++)

if(stu[k+1].chj>stu[k].chj)
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
fprintf(fp,"\n\n");
for(j=0;j<i;j++)
{
printf("%s %-12s %4.1f\n",stu[j].num,stu[j].name,stu[j].chj);
fprintf(fp,"%s %-12s %4.1f\n",stu[j].num,stu[j].name,stu[j].chj);
}
fclose(fp);
}

忘记了
不过应该很简单