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

#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;

 }

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值