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的坐标为(1,0),3的坐标为(1,1).编程实现输入任意一点坐标(x,y),输出所对应的数字。
#include <stdio.h> #include <stdlib.h> #include <math.h>
int get_num( int x, int y ) { int z = abs(x) > abs(y) ? 2*x : 2*y; int c = x+y; if(x>y) --z; else c = 1-c; return z*z+c; }
int main( int argc, char *argv[] ) { int x, y, num; for (y=-2; y<3; ++y) { for (x=-2; x<3; ++x) { num = get_num( x, y ); printf( "%d\t", num ); } printf("\n"); }
system("PAUSE"); return 0; }
|
阅读(635) | 评论(0) | 转发(0) |