用c语言编写:有10个学生,每个学生的数据包括学号、姓名、3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件result.txt中。
时间: 2023-12-15 09:44:30 浏览: 90
好的,以下是用 C 语言实现的程序,你可以保存到一个名为 `student_sort.c` 的文件中并编译运行它:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个 Student 结构体
typedef struct {
char id[10];
char name[20];
double score1;
double score2;
double score3;
double average;
} Student;
// 从键盘输入学生数据
void input_students(Student students[])
{
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%s", students[i].id);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的第1门课成绩:", i+1);
scanf("%lf", &students[i].score1);
printf("请输入第%d个学生的第2门课成绩:", i+1);
scanf("%lf", &students[i].score2);
printf("请输入第%d个学生的第3门课成绩:", i+1);
scanf("%lf", &students[i].score3);
students[i].average = (students[i].score1 + students[i].score2 + students[i].score3) / 3;
}
}
// 按平均成绩降序排序
void sort_students(Student students[])
{
for (int i = 0; i < 10; i++) {
for (int j = i + 1; j < 10; j++) {
if (students[i].average < students[j].average) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
// 输出学生数据并写入文件
void output_students(Student students[])
{
FILE* fp = fopen("result.txt", "w");
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
printf("学号\t姓名\t第1门课成绩\t第2门课成绩\t第3门课成绩\t平均成绩\n");
fprintf(fp, "学号\t姓名\t第1门课成绩\t第2门课成绩\t第3门课成绩\t平均成绩\n");
for (int i = 0; i < 10; i++) {
printf("%s\t%s\t%.1f\t\t%.1f\t\t%.1f\t\t%.1f\n", students[i].id, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].average);
fprintf(fp, "%s\t%s\t%.1f\t\t%.1f\t\t%.1f\t\t%.1f\n", students[i].id, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].average);
}
fclose(fp);
}
int main()
{
Student students[10];
input_students(students);
sort_students(students);
output_students(students);
return 0;
}
```
这个程序首先定义了一个 `Student` 结构体,用于存储每个学生的数据。然后定义了三个函数:`input_students` 用于从键盘输入每个学生的数据,并计算平均成绩;`sort_students` 用于按照平均成绩降序排序学生数据;`output_students` 用于将排序后的学生数据输出到屏幕并写入到一个名为 `result.txt` 的文本文件中。
在 `main` 函数中,首先定义了一个长度为 10 的 `students` 数组,然后依次调用 `input_students`、`sort_students` 和 `output_students` 函数。
阅读全文