百度一个函数atan2()
atan2(y,x)就是与x轴的夹角弧度了
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
struct person
{
double x;
double y;
double angle;
}per[101];
bool cmp(person a,person b)
{
return a.angle<b.angle;
}
int main()
{
int n,j;
while(cin>>n&&n>0)
{
for(int i=0;i<n;i++)
{
cin>>per[i].x>>per[i].y;
per[i].angle=fabs(atan2(per[i].y,per[i].x));
}
sort(per,per+n,cmp);
for( j=0;j<n-1;j++)
printf("%.1lf %.1lf ",per[j].x,per[j].y);
printf("%.1lf %.1lf\n",per[j].x,per[j].y);
}
return 0;
}
或者可以不用这个函数
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int t;
double ans[101],a[101],b[101];
while(cin>>t)
{
if(t<0)break;
memset(ans,0,sizeof(ans));
for(int i=0;i<t;i++)
{
cin>>a[i]>>b[i];
ans[i]=a[i]/b[i];
}
for(int i=0;i<t-1;i++){
for(int j=i+1;j<t;j++)
{
if(ans[j]>ans[i])
{
swap(a[i],a[j]);
swap(b[i],b[j]);
swap(ans[i],ans[j]);
}
}
}
if(t>0)printf("%.1f %.1f",a[0],b[0]);
for(int i=1;i<t;i++)
{
printf(" %.1f %.1f",a[i],b[i]);
}
cout<<endl;
}
return 0;
}
swap函数参考这个
http://blog.youkuaiyun.com/ryfdizuo/article/details/6435847