求C语言程序,输入一个班50名学生成绩,从高到低排序输出每名学生成绩和学号,还有别的要求

并行数组u保存成绩,v保存学号,每当对u移动时,v也跟着移,当u排序好后,v便记录了u中对应学生的学号

写了一个,看看能不能帮到你
#include<stdio.h>
#include<string.h>
#define NUM 50
void bubblesort(float *grade,char (*num)[20])
{
int i,j;
float temp;
char numtemp[NUM][20];
for(i=1;i<NUM;i++)
for(j=0;j<NUM-i;j++){
if(grade[j]<grade[j+1]){
temp=grade[j];
grade[j]=grade[j+1];
grade[j+1]=temp;
strcpy(numtemp[j],num[j]);
strcpy(num[j],num[j+1]);
strcpy(num[j+1],numtemp[j]);
}
}
}
int main(){
setbuf(stdout,NULL);
int i;
float grade[NUM];
char num[NUM][20];
for(i=0;i<NUM;i++){
printf("please input the %d info:\n",i+1);
scanf("%f",&grade[i]);
scanf("%s",num[i]);
}
bubblesort(grade,num);
printf("the result has been sortted:\n");
for(i=0;i<NUM;i++){
printf("the %d info:",i+1);
printf("grade:%5.2f num:%s\n",grade[i],num[i]);
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-11
楼上提供代码,我提供思路

思路1:最简单的二维数组,int sutdent[N][50];
第一排保存学生id,随后几排保存成绩;一一对应,

思路2:定义结构体
struct student{
int id;
float score;
}student[50];//50个学生

思路3:创建链表
typedef struct student{
int id;
float scor;
struct student *next;
}linknode,*linklist;