📄 75.c
字号:
/*
螺旋队列:
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),x方向向右为正,y方向向下为正,
例如,7的坐标为(-1,-1),2的坐标为(0,1),3的坐标为(1,1)。编程实现输入任意一点的坐标
(x,y)。输出所对应的数字。
*/
#include<stdio.h>
#define max(a,b) ((a)<(b)?(b):(a))
#define abs(a) ((a)>0?(a):-(a))
int foo(int x,int y)
{
int t=max(abs(x),abs(y)); //x,y中绝对值大的一个赋值给t;
int u=t+t;
int v=u-1;
v=v*v+u; //当x==y>0时(即在第一象限),对应坐标的值为v
if(x==-t) //
v+=u+t-y;
else if(y==-t)
v+=3*u+x-t;
else if(y==t)
v+=t-x;
else
v+=y-t;
return v;
}
int mofang2()
{
int x,y;
int m,n;
printf("enter N:\n");
scanf("%d",&n);
printf("enter M:\n");
scanf("%d",&m);
printf("螺旋队列:\n");
for(y=-n;y<=n;y++)
{
for(x=-m;x<=m;x++)
{
printf("%5d",foo(x,y));
}
printf("\n");
}
printf("输入对列坐标:\n");
while(scanf("%d%d",&x,&y)==2)
printf("%d\n",foo(x,y));
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -