c语言程序:写入三个学生的C语言成绩,通过功能函数调用把三个学生的成绩按升序排序后,依次写入文件中,然后在屏幕上打印出来
时间: 2024-03-16 22:41:57 浏览: 56
好的,以下是一个简单的示例程序,实现了您的要求:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_STUDENTS 3
/* 定义学生结构体 */
typedef struct {
char name[20];
int score;
} Student;
/* 比较函数,用于排序 */
int compare(const void *a, const void *b) {
Student *s1 = (Student *) a;
Student *s2 = (Student *) b;
return s1->score - s2->score;
}
/* 排序函数,使用标准库的快速排序算法 */
void sort_students(Student *students, int num_students) {
qsort(students, num_students, sizeof(Student), compare);
}
/* 写入文件函数 */
void write_to_file(Student *students, int num_students) {
FILE *fp;
fp = fopen("students.txt", "w");
if (fp == NULL) {
printf("Error: cannot open file!\n");
exit(1);
}
for (int i = 0; i < num_students; i++) {
fprintf(fp, "%s %d\n", students[i].name, students[i].score);
}
fclose(fp);
}
/* 打印函数,用于在屏幕上输出结果 */
void print_students(Student *students, int num_students) {
printf("Name\tScore\n");
for (int i = 0; i < num_students; i++) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
/* 主函数 */
int main() {
Student students[NUM_STUDENTS] = {
{"Alice", 80},
{"Bob", 70},
{"Charlie", 90}
};
sort_students(students, NUM_STUDENTS);
write_to_file(students, NUM_STUDENTS);
print_students(students, NUM_STUDENTS);
return 0;
}
```
这个程序定义了一个 `Student` 结构体,包含了每个学生的姓名和成绩。然后定义了三个功能函数:`sort_students` 用于排序,`write_to_file` 用于写入文件,`print_students` 用于在屏幕上输出结果。主函数中定义了三个学生的信息,然后调用这三个功能函数,最后输出结果。
您可以根据实际需要修改程序中的内容,比如从用户输入数据、从文件读取数据等。
阅读全文