输入N个学生的姓名和语文成绩,排出名次,并且输出每个学生的姓名。

输入N个学生的姓名和语文成绩,排出名次,并且输出每个学生的姓名。

【输入格式】

输入第一行:N,表示N个学生。(0<n<60)

第二N+1行:两个变量,A,姓名,B学生成绩

【输出格式】

输入N行,按学生成绩由高到低输出,每行输出学生名次、姓名和成绩

一个简单的实现,供参考:


#include <stdio.h>
#include <string.h>

int main(void){

    int n;

    char name[60][10]; //N个学生姓名的数组
    int chinese[60];  //N个学生的语文成绩
    
    scanf("%d",&n); 
    printf("n=%d\n",n);
     
     
     int i;
     //依次读入N个学生的姓名和语文成绩 
     for(i=0;i<n;i++){
         scanf("%s %d",name[i],&chinese[i]);
     //    printf("name[%d]=%s,chinese[%d]=%d\n",i,name[i],i,chinese[i]);
         
     }
     
     //排序成绩
     int j;
     int temp;
     for(i=0;i<n-1;i++){
         for(j=i+1;j<n;j++){
             //交换成绩和姓名 
             if(chinese[i]<chinese[j]){
                 temp= chinese[i];
                 chinese[i] = chinese[j];
                 chinese[j] =temp;
                 
                 strcpy(name[i],name[j]);
             }
         }
     } 
     
     for(i=0;i<n;i++){
         printf("第%d名:%s,%d分。\n",i+1,name[i],chinese[i]);
     }
     
     return 0;
    
}