moclocd 2023-01-30 09:32 采纳率: 92.9%
浏览 151
已结题

关于#c++#的问题:5371:【202112二级】按照个位数排序(2)描述对于给定的正整数序列,按照个位数从小到大排序,个位数相同的按照本身大小从小到大排序

5371:【202112二级】按照个位数排序(2)
描述
对于给定的正整数序列,按照个位数从小到大排序,个位数相同的按照本身大小从小到大排序。

输入
第一行1个整数n,表示序列的大小。( 0<n≤1000)

第二行n个正整数,表示序列的每个数,每个数不大于100000000。

输出
输出按照题目要求排序后的序列

输入样例 1
6
17 23 9 13 88 10
输出样例1
10 13 23 17 88 9

#include<bits/stdc++.h>
using namespace std;
struct num{
    int a;
    int g;
}s[100];
bool cmp(num a,num b){
    if(a.g<b.g)
        return a.g;
    if(a.g>b.g)
        return b.g;
    if(a.a>b.a)
        return b.a;
    return a.a;
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s[i].a;
        s[i].g=s[i].a%10;
    }
    sort(s+1,s+1+n,cmp);
    for(int i=1;i<=n;i++){
        cout<<s[i].a<<" ";
        
    }
    return 0;
}

这是代码,到底哪里错了,不能按条件输出。

  • 写回答

1条回答 默认 最新

  • a5156520 2023-01-30 09:50
    关注

    比较函数cmp()那里的返回值错了,然后数组的大小修改下即可,修改如下:

    参考链接:

    #include<bits/stdc++.h>
    using namespace std;
    struct num{
        int a; // 输入的数本身 
        int g; //输入的数的个位数 
    }s[1001];
    // https://baike.baidu.com/item/sort%E5%87%BD%E6%95%B0/11042699?fr=aladdin
    bool cmp(num a,num b){
        if(a.g>b.g)
            return false;
        if(a.g<b.g)
            return true;
        if(a.a>b.a)
            return false;
        return true;
    }
    
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>s[i].a;
            s[i].g=s[i].a%10;
        }
        sort(s+1,s+1+n,cmp);
        for(int i=1;i<=n;i++){
            cout<<s[i].a<<" ";
            
        }
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月7日
  • 已采纳回答 1月30日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题