定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩从键盘输入10个学生的以上内容,存入文件stud.txt,关闭文件打开stud.txt文件,将数据读出,查看是否正确写入,关闭文件。打开文件stud.txt文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.txt中。从studsort.txt 文件中读取第2,4,6,8,10个学生的数据。首先将学生信息输入到stud.txt文件中,(此文件有自己输入,然后由程序打开!)
#include<stdio.h>
#include<stdlib.h>
struct student{
int number;
charname[20];
floatChinese;
float math;
floatEnglish;
floataverage;
}stu[10];
int main()
{
int i,j;
structstudent stu1;
FILE *fp;
FILE *fa;
if((fp=fopen("stud.txt","r"))==NULL)
{
printf("Cannotopen this file!\n");
exit(0);
}
printf("打开文本文件检查\n");
for(i=0;i<10;i++)
{
fscanf(fp,"%d%s%f%f%f",&stu[i].number,stu[i].name,&stu[i].Chinese,&stu[i].math,&stu[i].English);
printf("%8d%8s%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English);
}
fclose(fp);
if((fp=fopen("stud.txt","r"))==NULL)
{
printf("Cannotopen this file!\n");
exit(0);
}
printf("第二次打开文本文件\n");
for(i=0;i<10;i++)
{
fscanf(fp,"%d%s%f%f%f",&stu[i].number,stu[i].name,&stu[i].Chinese,&stu[i].math,&stu[i].English);
stu[i].average=(stu[i].Chinese+stu[i].math+stu[i].English)/3;
printf("%8d%8s%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English);
}
for(j=1;j<10;j++)
for(i=0;i<10-j;i++)
{
if(stu[i].average<stu[i+1].average)
{
stu1=stu[i];
stu[i]=stu[i+1];
stu[i+1]=stu1;
}
}
if((fa=fopen("studsort.txt","w+"))==NULL)
{
printf("Cannotopen this file!\n");
exit(0);
}
printf("按平均分从高到低排序后\n");
for(i=0;i<10;i++)
{
printf("%8d%8s%8.2f%8.2f%8.2f%8.2f",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].average);
fprintf(fa,"%8d%8s%8.2f%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].average);
printf("\n");
}
printf("\n");
fclose(fp);
if((fa=fopen("studsort.txt","r"))==NULL)
{
printf("Cannot open thisfile!\n");
exit(0);
}
for(i=0;i<10;i++)
{
fscanf(fa,"%d%s%f%f%f%f",&stu[i].number,stu[i].name,&stu[i].Chinese,&stu[i].math,&stu[i].English,&stu[i].average);
}
printf("从stdusort.txt中读取第2,4,6,8,10个学生的数据\n");
for(i=1;i<10;i+=2)
{
printf("%8d%8s%8.2f%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].average);
}
}