编写完整程序,采用结构数组和指向结构的指针,输入200个学生信息(学号,姓名,成绩),对成绩按照从低到高的顺序进行排序;并输出最高成绩以及对应的学号
#include<stdio.h> #define n 200 struct student { long num; char name[20]; float score; }; void main() { int i, j; struct student stu[n + 1]; struct student *p_stu; p_stu = stu+1; for (i = 1; p_stu <= stu + n; p_stu++, i++){ printf("请输入第%d个学生的学号\n", i); scanf("%d", &p_stu->num); printf("请输入第%d个学生的姓名\n", i); scanf("%s", p_stu->name); printf("请输入第%d个学生的成绩\n", i); scanf("%f",&p_stu->score); } //按照成绩从低祷告的顺序进行排序 for (i = 1; i <= n; i++){ for (j = 1; j <= n - 1; j++){ if (stu[j].score > stu[j + 1].score){ stu[0] = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = stu[0]; } } } p_stu = stu + 1; for (; p_stu <= stu + n; p_stu++){ printf("按照成绩从低祷告的顺序进行排序结果为:\n"); printf("学号:%d\t", p_stu->num); printf("姓名:%s\t", p_stu->name); printf("成绩:%g\n", p_stu->score); } p_stu = &stu[n]; printf("最高成绩为:\n"); printf("学号:%d\t", p_stu->num); printf("姓名:%s\t", p_stu->name); printf("成绩:%g\n", p_stu->score); }