1)有5个学生,每个学生有3门课成绩,输入学生数据(学号,姓名,3门课程成绩)。计算出平均成绩,并按平均成绩排序,排序后的数据(包括平均成绩)存入文件student.dat中。然后从文件中读取数据并输出。
要求:分别用fprintf/fscanf及fwrite/fread函数实现文件数据读写。
fprintf/fscanf
#include#define N 3 struct student { char sNo[12]; char sName[20]; float scores[3]; double average; }; int main() { int i,j,idx; struct student stu[N],stu2[N]; struct student temp; printf("Please enter No,Name,3 scores:"); //输入并计算平均值 for(i=0;i stu[idx].average)idx=j; } temp=stu[idx]; stu[idx]=stu[i]; stu[i]=temp; } //打开文件 FILE *fp; if(NULL==(fp=fopen("student.txt","w+"))) { printf("Error open!"); exit(0); } //存入数据 for(i=0;i fwrite/fread
#include#define N 3 struct student { char sNo[12]; char sName[20]; float scores[3]; double average; }stu[N]; int main() { struct student stu[N],stu2[N]; struct student temp; struct student *pa=stu,*pb=stu2,*max; printf("Please enter No,Name,3 scores:"); //输入并计算平均值 for(;pa sNo,pa->sName,&pa->scores[0],&pa->scores[1],&pa->scores[2]); pa->average=(pa->scores[0]+pa->scores[1]+pa->scores[2])/3.0; } //排序 for(pa=stu;pa average>max->average)max=pb; } temp=*max; *max=*pa; *pa=temp; } //打开文件 FILE *fp; if(NULL==(fp=fopen("student.txt","w+"))) { printf("Error open!"); exit(0); } //存入数据 pa=stu; fwrite(pa,sizeof(struct student),N,fp); //读取数据 rewind(fp); pb=stu2; fread(pb,sizeof(struct student),N,fp); //输出数据 for(pb=stu2;pb sNo,pb->sName,pb->scores[0],pb->scores[1],pb->scores[2],pb->average); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)