程序填空,产生指定输出结果
#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坐标从小到大排
#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;
}
题主觉得无语的话能点个采纳吗?呜呜呜