学生成绩排名,输入学号,姓名,成绩,信息后按平均成绩排名从高到低输出。

发布于:2022-12-02 ⋅ 阅读:(212) ⋅ 点赞:(0)

#include<iostream>

#include<iomanip>

using namespace std;

typedef struct LNode{

 double score1,score2,score3;

 string name;

 double average;

 int num;

 int list;

 LNode* next; 

}LNode,*Linklist;

    Linklist CreatList(Linklist &L,int StuNum){

     L = new LNode;

     LNode* p,*r = L;

     for(int i = 0;i<StuNum;i++){

      p = new LNode;

      p->next = NULL;

      cin>>p->num>>p->name>>p->score1>>p->score2>>p->score3;

   int average = (p->score1+p->score2+p->score3)/3;

   p->average = average;

   r->next = p;

   r = r->next;

  } 

   return L;

 }

 Linklist SortList(Linklist &L,int StuNum){

  LNode*r,*p,*temp=L;

   for(int i = 0;i<StuNum;i++){ 

     r = L->next;

      p = r->next;

            temp = L;

    for(int i = 0;i<StuNum-1;i++){

  if(r->average>p->average){  

          r = p;

       p->next = p;

       temp = temp->next;

  }

    else{

   r->next = p->next;

   temp->next = p;

   p->next = r;

   p = r->next;

   temp = temp->next;

    }

 }

}

    r = L->next;

      for(int i = 1;i<StuNum+1;i++){

    r->list = i;

       r = r->next;

       if(r==NULL)

        break;

      }

   

 return L;

}

 void printList(Linklist &L,int StuNum){

  LNode*r = L;

  for(int i = 0;i<StuNum;i++){

   r = r->next;

      cout<<setprecision(2)<<std::fixed<<r->num<<" "<<r->name<<" "<<r->score1<<" "<<r->score2<<" "<<r->score3<<" "<<r->average<<" "<<r->list<<endl;

  }

 }

 int main(){

  int StuNum;

  cin>>StuNum;

  Linklist L;

  CreatList(L,StuNum);

  SortList(L,StuNum);

  printList(L,StuNum);

  return 0;

 }

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到