c语言"输入五位同学的名字及其分数,按从高到低的顺序数输出分数及与其对应同学的名字

如题所述

#include "stdio.h"
struct student
{
char name[20];
float cj;
int rank;
};

int main()
{
struct student std[6];
int n;
int i,j,k;
printf("输入5个人的姓名和成绩:\n");
for(i=0;i<5;i++)
{
scanf("%s %f",std[i].name,&std[i].cj);
}
for(j=0;j<5;j++)
{
n=j;
for(k=j+1;k<5;k++)
{
if(std[k].cj>std[n].cj)
{
n=k;
}
}
std[5]=std[n];
std[n]=std[j];
std[j]=std[5];
std[j].rank=j+1;
}
printf("\n\n排序后成绩表:\n\n")
for(i=0;i<5;i++)
{
printf("%s\t\t%3.1f\t\t%d\n",std[i].name,std[i].cj,std[i].rank);
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-27
#include<stdio.h>
#include<string.h>
#define NUM 5
main()
{
int i,j;
char name[NUM][10],stmp[10];
float score[NUM],tmp;
printf("输入姓名和成绩:\n");
for(i=0;i<NUM;i++)
scanf("%s%f",name[i],&score[i]);
for(i=0;i<NUM-1;i++)
for(j=i+1;j<NUM;j++)
if(score[i]<score[j])
{tmp=score[i];
score[i]=score[j];
score[j]=tmp;
strcpy(stmp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],stmp);
}
printf("排序为:\n");
for(i=0;i<NUM;i++)
printf("%.10s%f\n",name[i],score[i]);
}
相似回答