#include<stdio.h> int i,j; typedef struct student { int num; char name[20]; int score[3]; float avg; } student; void readdate(student stu[]) { FILE* fp=fopen("stud.txt", "r"); if(fp==NULL) { printf("read stud file error!"); } for(i=0;i<5;i++) { fscanf(fp, "%d %s %d %d %d %f", &stu[i].num,stu[i].name,&stu[i].score[1], &stu[i].score[2], &stu[i].avg); } fclose(fp); } void sort(student stu[]) { student tmp; int size=sizeof(tmp); for(i=0;i<5;i++) for(j=i+1;j<5;j++) { if(stu[i].avg>stu[j].avg) { memcpy(&tmp, &stu[i],size); memcpy(&stu[i], &stu[j],size); memcpy(&stu[j], &tmp,size); } } printf("排完序的结果为:\n"); for(i=0;i<5;i++) { printf("%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg); } } void writedate(student* stu) { FILE* fp=fopen("stu_ sort.text","w"); if(fp==NULL) { printf("write file error!"); } for(i=0;i<5;i++) { fprintf(fp,"%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg); } fclose(fp); } int main() { student stu[5]; readdate(stu); sort(stu); writedate(stu); return 0; }改写成正确的
时间: 2023-12-11 13:03:55 浏览: 96
【学生版】实验一 线性表基本操作的编程实现.doc
#include<stdio.h>
#include<string.h> //添加头文件
int i,j;
typedef struct student {
int num;
char name[20];
int score[3];
float avg;
} student;
void readdate(student stu[]) {
FILE* fp=fopen("stud.txt", "r");
if(fp==NULL) {
printf("read stud file error!");
return; //添加错误处理
}
for(i=0;i<5;i++) {
fscanf(fp, "%d %s %d %d %d %f", &stu[i].num,stu[i].name,&stu[i].score[0], &stu[i].score[1], &stu[i].score[2], &stu[i].avg); //修改读取格式
}
fclose(fp);
}
void sort(student stu[]) {
student tmp;
int size=sizeof(tmp);
for(i=0;i<5;i++)
for(j=i+1;j<5;j++) {
if(stu[i].avg>stu[j].avg) {
memcpy(&tmp, &stu[i],size);
memcpy(&stu[i], &stu[j],size);
memcpy(&stu[j], &tmp,size);
}
}
printf("排完序的结果为:\n");
for(i=0;i<5;i++) {
printf("%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
}
}
void writedate(student stu[]) { //修改参数
FILE* fp=fopen("stu_sort.txt","w"); //修改文件名
if(fp==NULL) {
printf("write file error!");
return; //添加错误处理
}
for(i=0;i<5;i++) {
fprintf(fp,"%d %s %d %d %d %f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
}
fclose(fp);
}
int main() {
student stu[5];
readdate(stu);
sort(stu);
writedate(stu);
return 0;
}
阅读全文