#include <stdio.h> #include <stdlib.h> #define N 10 struct student { char num[10]; char name[8]; int score[3]; float ave; } st[N], temp; int main() { FILE* fp; int i, j, n; if ((fp = fopen("stud.dic", "r")) == NULL) { printf("can not open.\n"); exit(0); } /***********/ 将数据从文件读取到结构体数组中 进行排序 /***********/ printf("Now:"); for (i = 0; i < 5; i++) { printf("\n%s %s", st[i].num, st[i].name); for (j = 0; j < 3; j++) printf(" %d", st[i].score[j]); printf(" %.2f", st[i].ave); } fclose(fp); return 0; }
时间: 2024-03-31 07:33:00 浏览: 143
这段代码可以从文件中读取学生数据到一个结构体数组中,然后对该数组进行排序。但是代码中缺少读取文件的部分,所以需要添加读取文件的代码。
以下是添加读取文件和排序的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
struct student {
char num[10];
char name[8];
int score[3];
float ave;
} st[N], temp;
int main() {
FILE* fp;
int i, j, n;
if ((fp = fopen("stud.dic", "r")) == NULL) {
printf("can not open.\n");
exit(0);
}
n = 0;
while (fscanf(fp, "%s%s%d%d%d", st[n].num, st[n].name, &st[n].score[0], &st[n].score[1], &st[n].score[2]) != EOF) {
st[n].ave = (st[n].score[0] + st[n].score[1] + st[n].score[2]) / 3.0;
n++;
}
fclose(fp);
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (st[i].ave < st[j].ave) {
temp = st[i];
st[i] = st[j];
st[j] = temp;
}
}
}
printf("Now:");
for (i = 0; i < n; i++) {
printf("\n%s %s", st[i].num, st[i].name);
for (j = 0; j < 3; j++) {
printf(" %d", st[i].score[j]);
}
printf(" %.2f", st[i].ave);
}
return 0;
}
```
这段代码可以读取文件中的学生数据到一个结构体数组中,然后按照平均分进行降序排序,并输出排序后的结果。
阅读全文