猫史档案馆


【无聊,写个C++代码】

用户:树林归来树林归来查看:4 回复:3 评论:4 创建时间:2022-08-19T07:48:29


#include <iostream>
#include <string>
using namespace std;

struct tStudent{
   string name;
   int chinese,math;
   int total;
};

tStudent a[100];
int n;

int main(){
   cin>>n;
   for(int i = 0;i < n;i++){
      cin>>a[i].name>>a[i].chinese>>a[i].math;
      a[i].total = a[i].chinese + a[i].math;
   }
   for(int i = 0;i < n;i++){
      for(int j = 0;j < n - i + 1;i++){
         if(a[j].total < a[j + 1].total){
           swap(a[j],a[j + 1]);
         }
      }
   }
   for(int i = 0;i < n;i++){
      cout<<endl<<a[i].name<<" "<<a[i].chinese<<" "<<a[i].math<<" "<<a[i].total;
   }
}

这是一个统计成绩的屑代码()

【输入】第一行输入学生的数量,然后按数量输入每个学生的姓名、语文、数学成绩。

【输出】按每个学生的总分高低来输出学生的姓名、语文数学成绩和总分。


回复

上一页1 页 / 共 1下一页
小萝卜cXsQ小萝卜cXsQ

你使用了慢到冒泡的冒泡排序算法

点赞0


评论


不知道该叫啥的一只萌新不知道该叫啥的一只萌新

其实STL有个sort、、、

点赞1


评论


无畏的编程猫d_yy无畏的编程猫d_yy

如果总分一样时要按数学排,数学再一样时按语文排,语文再一样时按名字的字典序排,你要怎么办?

很简单,不就写3个if嘛……

那其实还有一种更好的解决方案:sort+cmp

两者结合真的非常非常非常好用!!!!!

sort非常方便,它碾压了很多好写但效率不高的排序,二分排序除外,但它很难写……

头文件:#include <algorithm>

格式:sort(l+1,r+1)//下标从“1”开始时格式是这个,从零开始为sort(l,r)

进阶:sort(l+1,r+1,cmp);//多用于结构体,巨好用

如果想要达到我说那种效果,具体代码即如下:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct node
{
   string name;
   int ch,ma,to;
}a[100];

bool cmp(node a,node b)
{
   if(a.to!=b.to) return a.to>b.to;
   if(a.ma!=b.ma) return a.ma>b.ma;
   if(a.ch!=b.ch) return a.ch>b.ch;
   return a.name>b.name;
}

int n;
int main()
{
   scanf("%d",&n);
   for(int i=1;i<=n;++i) 
   {
      scanf("%s %d %d",a[i].name,a[i].ch,a[i].ma);
      a[i].to=a[i].ch+a[i].ma;
   }
   sort(a+1,a+n+1,cmp);
   for(int i=1;i<=n;++i) printf("%s %d %d %d",a[i].name,a[i].ch,a[i].ma,a[i].to);
}

清爽了不少,不是吗?

sort本身也很喵,你不想写排序可以用它(上文说过它比一般的排序快很多),除非是喵板子题不让用sort。

点赞0


评论