用c语言 保存5位同学的姓名和成绩,并按成绩从高到低输出学生信息

提示:可定义二维字符数组char name[5][10]存放5位学生姓名,float score[5]存放学生成绩,其中:
name[0],score[0]存放第1个学生姓名和成绩
name[1],score[1]存放第2个学生姓名和成绩
……
name[4],score[4]存放第5个学生姓名和成绩)

第1个回答  2012-03-13

感觉你这样的题目,不应该用两个数组来保存。用结构体比较好。

把姓名和成绩放在一起,当进行交换时,姓名和成绩就能够跟着一起进行交换。

#include<stdio.h>

#include <stdlib.h>

typedef struct ln

{

    char name[20];

    float score;

} Stem;

int main()

{

    Stem student[20], temp;

    int i, j, n;

    i=0;

    while(scanf("%s %f", student[i].name, &student[i].score)==2)

    {

        i++;

    }

    n=i;

    for(i=0; i<n-1; i++)

    {

        for(j=0; j<n-1-i; j++)

        {

            if(student[j].score<student[j+1].score)

            {

                temp=student[j];

                student[j]=student[j+1];

                student[j+1]=temp;

            }

        }

    }

    printf("\n\n姓名\t\t\t成绩\n");

    for(i=0; i<n; i++)

    {

        printf("%-25s%.2f\n", student[i].name, student[i].score);

    }

}

本回答被网友采纳
第2个回答  2011-11-28
求程序还是还是什么
相似回答