您的位置:首页 > 编程语言 > C语言/C++

螺旋输出数列

2016-05-07 17:57 330 查看
21      22 ................

20       7        8         9         10

19       6        1          2         11

18       5         4          3        12

17       16      15       14       13

如上,设1的坐标为(0,0),2方向为x正,4方向为y正,现随意给一坐标,输出对应的数字。

C++代码如下:

#define abs(a) ((a)>0?a:-(a))
#define max(a,b) ((a)<(b)?(b):(a))
int foo(int x,int y)
{
int t;
int u;
t=max(abs(x),abs(y));
u=(2*t-1)*(2*t-1);
if(x == t)
{
if(y>=0)return u+t+y;
if((y<0)&&(abs(y)!=x))return u+t+y;
}
if(-x == t)
{
if((y>0)&&(y != t))return  u+5*t-y;
if(y<=0)return u+5*t-y;
}
if(y == t)
{
if((x>=0)&&(x != t))return u+3*t-x;
if(x<0)return u+3*t-x;
}
if(-y == t)
{
if(x>=0)return u+7*t+x;
if((x<0)&&(abs(x) != t))return u+7*t+x;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++