结构体数组的超简单应用

定义4个学生,完成按成绩升序排序
【结构体数组的超简单应用】问题1:如何存储4个学生的信息?
通过结构体数组实现
问题2:如何输入或输出4个学生的信息?
通过循环实现对数组中所有成员结构体的遍历,可以遍历到每个成员,那么我们就可以对每个成员的信息进行修改,赋值。
问题3:如何对4个学生信息进行排序?排序如何进行交换?
因为排序是根据学生的成绩进行排序,所以,我们也是通过冒泡排序,每次需要交换时,需要交换的是整个结构体而不是对单个成员进行交换
结构体成员可以直接进行赋值。

#includeint main(void) { struct student{ int id; char name[30]; double score; }a[4],tmp; printf("按以下格式输入(学号 姓名 成绩):\n"); int i = 0; for(i = 0; i < 4; i++){ printf("请输入%d个学生:",i + 1); scanf("%d %s %lf",&a[i].id,a[i].name,&a[i].score); } printf("***排序前***\n"); for(i = 0; i < 4; i++){ printf("%d %s %.2lf\n",a[i].id,a[i].name,a[i].score); } printf("***排序后***\n"); int j = 0; struct tmp{}; for(i = 0; i < 3; i++){ for(j = 0 ; j < 3 - i ; j++){ if(a[j].score > a[j + 1].score){ tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } for(i = 0; i < 4; i++){ printf("NO:%d\t姓名: %s\t成绩: %.2lf\n",a[i].id,a[i].name,a[i].score); } return 0; }

效果图
按以下格式输入(学号 姓名 成绩):
请输入1个学生:1 zhang 15
请输入2个学生:2 li 86
请输入3个学生:3 wang 99
请输入4个学生:4 luo 100
排序前
1 zhang 15.00
2 li 86.00
3 wang 99.00
4 luo 100.00
排序后
NO:1 姓名: zhang 成绩: 15.00
NO:2 姓名: li 成绩: 86.00
NO:3 姓名: wang 成绩: 99.00
NO:4 姓名: luo 成绩: 100.00

    推荐阅读