建立结构体,输入学生信息并排序,插入学生信息,再排序输出
作者:互联网
建学生结构体,包含(学号,姓名,性别,年龄,总分),最多可以存放100名学生信息,录入10名学生信息,输出。
要求:
-
按照总分从高到低排序,输出
-
再录入一名学生信息,插入到合适位置,保持总分顺序。
#include<stdio.h> #include<string.h> //定义一个结构体 struct student{ char sno[20],name[20]; char sex[20]; int old; float sum; }; //建立函数打印学生信息 void print(struct student stu[100],int n){ for(int i=0;i<n;i++){ printf("%s %s %s %d %.2f\n",stu[i].sno, stu[i].name, stu[i].sex, stu[i].old, stu[i].sum); } } //建立函数通过学生的成绩进行排序(由高到低) void sort(struct student s[100],int n){ struct student a[100]; for(int i=1;i<n;i++){ for(int j=0;j<n-i;j++){ if(s[j].sum < s[j+1].sum){ a[j] = s[j]; s[j] = s[j+1]; s[j+1] = a[j]; } } } } //建立函数进行学生信息再添加 int add(struct student s[100],int n){ int m; printf("请输入所要再添加学生的数量:\n"); scanf("%d",&m); for(int i=n;i<m+n;i++){ printf("请输入第%d个学生的信息:\n",i+1); scanf("%s %s %s %d %f",&s[i].sno,&s[i].name,&s[i].sex,&s[i].old,&s[i].sum); } return m; } int main(void){ int n; printf("请输入需要录入学生的数量:\n"); scanf("%d",&n); //定义一个为student布局的数组变量 struct student s[100]; //输入学生信息 for(int i=0;i<n;i++){ printf("请输入第%d个学生的信息:\n",i+1); scanf("%s %s %s %d %f",&s[i].sno,&s[i].name,&s[i].sex,&s[i].old,&s[i].sum); } printf("排序前:\n"); print(s,n); //对学生信息进行排序 sort(s,n); printf("排序后:\n"); print(s,n); printf("是否继续添加学生信息,yes或no?\n"); char a[10]; scanf("%s",&a); if(strcmp(a,"yes")==0){ //添加学生信息 int m = add(s,n); //对添加后的学生信息进行再一次排序 sort(s,m+n); //输出学生信息 printf("添加再次排序后:\n"); print(s,n+m); printf("程序运行结束!"); } else { printf("程序运行结束!"); } return 0; }
标签:20,int,信息,学生,总分,排序 来源: https://blog.csdn.net/qq_51167531/article/details/120353307