编写完整程序,采用结构数组和指向结构的指针,输入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);
}

 

posted @ 2018-03-18 14:57  会飞的鱼摆摆  阅读(1521)  评论(0编辑  收藏  举报