fjvuidk
天雪碧海
采纳率100%
2021-03-02 18:21

c++问题程序填空,产生指定输出结果

已采纳

程序填空,产生指定输出结果

#include 

#include 

#include 

using namespace std;

struct Point{

int x;

int y;

};

// 在此处补充你的代码

int main()

{

int a[8] = {6,5,55,23,3,9,87,10 };

sort(a,a+8,Rule1);

for(int i = 0;i < 8; ++i)

cout << a[i] << "," ; 

cout << endl;

Point ps[8] = {{1,0},{0,1},{0,-1},{-1,0},{1,-1},{1,1},{2,0},{-2,0} } ;

sort(ps,ps+8,Rule2);

for(int i = 0;i < 8; ++i)

cout << "(" << ps[i].x << "," << ps[i].y << ")"; 

return 0;

}

输入

输出

10,23,3,55,5,6,87,9,

(-1,0)(0,-1)(0,1)(1,0)(1,-1)(1,1)(-2,0)(2,0)

整数按照个位数从小到大排。个位数相同,则大的排前面 

点按照离原点从近到远排。距离相同,则按x坐标从小到大排。x坐标也相同,则按y坐标从小到大排

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • qq_43414873 小白小白你好菜 1月前

    点赞 评论 复制链接分享
  • qq_43414873 小白小白你好菜 1月前

    #include<iostream>            //输入输出流需要用到
    #include<algorithm>           //sort函数需要用到
    #include<cmath>                //求m的n次方需要用到
    using namespace std;

    struct Point{
        int x;
        int y;
    };

    bool Rule1(int a, int b){
        int s1 = a%10;
        int s2 = b%10;               //记录a和b的个位数值
        if(s1 == s2)                    //如果个位数相同
            return a > b;               //按a和b的值大到小排列
        return s1 < s2;               //按个位数小到大排列
    }

    bool Rule2(Point a, Point b){
        double s1 = pow(a.x,2) + pow(a.y,2);
        double s2 = pow(b.x,2) + pow(b.y,2);    //求坐标点的距离值的平方
        if(s1 < s2)                                              //先比较平方和
            return s1 < s2;                                   //按平方和小到大排列
        else if(s1 == s2)                                     //如果距离值相同
            if(a.x != b.x)                                        //且a的x不等于b的x
                return a.x < b.x;                               //按a和b的x小到大排列
            else
                return a.y < b.y;                               //按a和b的y小到大排列
    }

    int main(){
        int a[8] = {6,5,55,23,3,9,87,10};
        sort(a, a+8, Rule1);
        for(int i = 0; i < 8; i++)
            cout << a[i] << "," ; 
        cout << endl;
        Point ps[8] = {{1,0},{0,1},{0,-1},{-1,0},{1,-1},{1,1},{2,0},{-2,0} } ;
        sort(ps, ps+8, Rule2);
        for(int i = 0; i < 8; ++i)
            cout << "(" << ps[i].x << "," << ps[i].y << ")"; 
        return 0;
    }

    点赞 1 评论 复制链接分享
  • qq_43414873 小白小白你好菜 1月前

    题主觉得无语的话能点个采纳吗?呜呜呜

    点赞 评论 复制链接分享