用C语言定义一个学生结构(包含学号、姓名、年龄成员),输入5个学生的数据,将这些学生数据保存到文件stu.txt中,最后按照年龄从大到小排序在屏幕上输出。请一次输出所有程序
时间: 2024-04-24 18:22:02 浏览: 94
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
好的,这里给您提供一个完整的C语言程序,实现您要求的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义学生结构体
struct Student{
int id;
char name[20];
int age;
};
//将学生数据保存到文件中
void saveToFile(struct Student students[], int n){
FILE* fp;
fp = fopen("stu.txt", "w");
if(fp == NULL){
printf("文件打开失败\n");
return;
}
for(int i=0; i<n; i++){
fprintf(fp, "%d %s %d\n", students[i].id, students[i].name, students[i].age);
}
fclose(fp);
}
//按照年龄从大到小排序并输出
void sortByAge(struct Student students[], int n){
struct Student temp;
for(int i=0; i<n-1; i++){
for(int j=0; j<n-i-1; j++){
if(students[j].age < students[j+1].age){
temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
for(int i=0; i<n; i++){
printf("%d %s %d\n", students[i].id, students[i].name, students[i].age);
}
}
int main(){
struct Student students[5];
for(int i=0; i<5; i++){
printf("请输入第%d个学生的学号、姓名、年龄:", i+1);
scanf("%d %s %d", &students[i].id, students[i].name, &students[i].age);
}
saveToFile(students, 5);
sortByAge(students, 5);
return 0;
}
```
在该程序中,我们首先定义了一个名为`Student`的结构体,包含学号、姓名、年龄三个成员变量。然后,我们编写了一个函数`saveToFile`,用于将学生数据保存到文件`stu.txt`中;以及一个函数`sortByAge`,用于按照年龄从大到小排序并输出。
在`main`函数中,我们定义了一个包含5个学生的数组`students`,并通过循环输入每个学生的学号、姓名、年龄。然后,我们调用`saveToFile`函数将这些学生数据保存到文件中,并调用`sortByAge`函数按照年龄从大到小排序并输出。
最终,当您运行该程序时,它会要求您输入5个学生的学号、姓名、年龄,然后将这些学生数据保存到文件`stu.txt`中,并按照年龄从大到小排序并在屏幕上输出。
阅读全文