用c语言写”有10个学生,每个学生的数据包括学号,姓名,3门功课成绩,从键盘输入学生的数据,要求按平均成绩降序显示所有学生数据,并将其写入文本文件result.txt中
时间: 2023-12-15 19:21:15 浏览: 96
好的,针对您的问题,我可以给出如下的C语言代码示例来实现您的要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_STU_NUM 10 // 最大学生数
#define MAX_GRADE_NUM 3 // 每个学生的成绩数
// 学生结构体
typedef struct student {
char name[MAX_NAME_LEN]; // 姓名
int num; // 学号
float grades[MAX_GRADE_NUM]; // 成绩
float avg_grade; // 平均成绩
} Student;
// 输入学生信息
void input_students(Student students[], int n) {
printf("Please input the student information:\n");
for (int i = 0; i < n; i++) {
printf("Student %d:\n", i + 1);
printf("Name: ");
scanf("%s", students[i].name);
printf("Number: ");
scanf("%d", &students[i].num);
printf("Grades: ");
for (int j = 0; j < MAX_GRADE_NUM; j++) {
scanf("%f", &students[i].grades[j]);
}
students[i].avg_grade = (students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / 3.0;
}
}
// 按平均成绩降序排序学生
void sort_students(Student students[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (students[i].avg_grade < students[j].avg_grade) {
Student tmp = students[i];
students[i] = students[j];
students[j] = tmp;
}
}
}
}
// 输出学生信息
void print_students(Student students[], int n) {
printf("All students:\n");
for (int i = 0; i < n; i++) {
printf("Name: %s, Number: %d, Grades: %.2f %.2f %.2f, Average Grade: %.2f\n",
students[i].name, students[i].num, students[i].grades[0], students[i].grades[1], students[i].grades[2], students[i].avg_grade);
}
}
// 写入学生信息到文件中
void write_students_to_file(Student students[], int n, char* file_name) {
FILE* fp = fopen(file_name, "w");
if (fp == NULL) {
printf("Failed to open file!\n");
return;
}
fprintf(fp, "All students:\n");
for (int i = 0; i < n; i++) {
fprintf(fp, "Name: %s, Number: %d, Grades: %.2f %.2f %.2f, Average Grade: %.2f\n",
students[i].name, students[i].num, students[i].grades[0], students[i].grades[1], students[i].grades[2], students[i].avg_grade);
}
fclose(fp);
}
int main() {
Student students[MAX_STU_NUM];
input_students(students, MAX_STU_NUM);
sort_students(students, MAX_STU_NUM);
print_students(students, MAX_STU_NUM);
write_students_to_file(students, MAX_STU_NUM, "result.txt");
return 0;
}
```
这段代码实现了按平均成绩降序显示所有学生数据,并将其写入文本文件result.txt中的功能。您可以在输入学生信息后,程序会计算每个学生的平均成绩,并按平均成绩降序排序,最后输出所有学生信息,并将其写入到文件中。
阅读全文