6 solutions

  • 4
    @ 2023-11-23 15:01:12
    #include<bits/stdc++.h>
    using namespace std;
    int n;
    struct stu{
    	string name;
    	int exam;
    };
    bool cmp(stu a,stu b){
    	if(a.exam==b.exam) return a.name<b.name;//若成绩一样比较名字 
    	return a.exam>b.exam;//比较成绩 
    }
    int main(){
    	cin>>n;
    	stu a[n];
    	for(int i=0;i<n;i++) cin>>a[i].name>>a[i].exam;
    	sort(a,a+n,cmp);//sort快速比较 
    	for(int i=0;i<n;i++) cout<<a[i].name<<" "<<a[i].exam<<endl; 
    	return 0;
    } 
    
    • 2
      @ 2023-11-20 21:53:52

      其实还挺简单的,就是修bug修了一个小时

      #include<bits/stdc++.h>
      using namespace std;
      struct St{
      	string name;
      	int score;
      };
      bool gr(St a,St b){
      	if(a.score>b.score||(a.score==b.score&&a.name<b.name)){
      		return true;
      	}
      	else{
      		return false;
      	}
      }
      St t[105];
      int main(){
      	int n;
      	cin>>n;
      	for(int i=0;i<n;i++){
      		cin>>t[i].name>>t[i].score;
      	}
      	sort(t,t+n,gr);
      	for(int i=0;i<n;i++){
      		cout<<t[i].name<<' '<<t[i].score;
      		if(i<n-1){
      			cout<<endl;
      		}
      	}
      	return 0;
      }
      
      • 1
        @ 2023-12-23 12:30:20

        提供一个结构体排序的做法

        #include<bits/stdc++.h>//万能头
        using namespace std;
        struct St{
        	string name;
        	int score;
        }t[105];//结构体
        bool cmp(St a,St b){//比较函数
        	if(a.score>b.score||(a.score==b.score&&a.name<b.name)) return true;
        	return false;
        }
        int main(){
        	int n;cin>>n;
        	for(int i=0;i<n;i++) cin>>t[i].name>>t[i].score;
        	sort(t,t+n,cmp);//排序(重点)
        	for(int i=0;i<n;i++){
        		cout<<t[i].name<<' '<<t[i].score;
        		if(i<n-1) cout<<endl;
        	}
        	return 0;
        }
        
        • 1
          @ 2023-10-24 19:08:46
          #include <bits/stdc++.h>
          using namespace std;
          struct student{
          	string name;
          	int score;
          };
          bool cmp(student a,student b){
              if(a.score==b.score)return a.name<b.name;
              return a.score>b.score;
          }
          int main(){
          	int n;student s[105];
          	cin >> n;
          	for (int i = 0;i < n;i++){
          		cin >> s[i].name >> s[i].score;
          	}
              sort(s,s + n,cmp);
          	for(int i=1;i<=n;i++){
                  cout<<s[i-1].name<<" "<<s[i-1].score<<'\n';
              }
          	return 0;
          }
          

          你好@huangminzhe

          • 1
            @ 2023-10-11 17:01:25
            #include <bits/stdc++.h>
            using namespace std;
            struct st{
            	string name;
            	int score;
            };
            bool cmp(st b,st c){
            	if (b.score == c.score){
            		return b.name < c.name;
            	}
            	return b.score > c.score;
            }
            int main(int argc, char **argv){
            	int n;st a[20];
            	cin >> n;
            	for (int i = 0;i < n;i++){
            		cin >> a[i].name >> a[i].score;
            	}
            	sort(a,a + n,cmp);
            	for (int i = 0;i < n;i++){
            		cout << a[i].name << ' ' << a[i].score << "\n";
            	}
            	return 0;
            }
            

            又只有我发题解?😕

            • 0
              @ 2023-11-16 13:52:00
              #include<iostream>
              #include<string>
              #include<algorithm>
              using namespace std;
              struct student{
              	string name;
              	short score;
              };
              bool px(student a,student b);
              int main(){
              	int n;
              	cin
              	>>n;
              	student a[n];
              	for(int i=0;i<n;i++){
              		cin
              		>>a[i].name
              		>>a[i].score;
              	}
              	sort(a,a+n,px);
              	for(int i=0;i<n;i++){
              		cout
              		<<a[i].name
              		<<" "
              		<<a[i].score
              		<<"\n";
              	}
              }
              bool px(student a,student b){
              	if(a.score<b.score)return 0;
              	if(a.score>b.score)return 1;
              	if(a.name>b.name)return 0;
              	else return 1;
              }
              

              image

              附赠期中考试青锋作坊虚拟成绩单

              • 1

              Information

              ID
              664
              Time
              1000ms
              Memory
              256MiB
              Difficulty
              7
              Tags
              # Submissions
              181
              Accepted
              46
              Uploaded By