解题思路:
#include <stdio.h> #define MOVE magic[y-1][x+1] int main() { int n; while (scanf("%d",&n)!=EOF) { int magic[100][100]={0}; //存放数字 int i,count=n*n,x,y,ctrl,tenm=10; //ctrl确定打印的格式,count为最大数值,x,y为当前坐标 for (i=1;i<=5;i++) { int tem=count%tenm; if (tem==count) { ctrl=i; break; } tenm*=10; } y=0; x=n/2; magic[y][x]=1; //把第一行的中间位置设置成1 for (i=2;i<=count;i++) { if (x==n-1) { if (y==0) { y++; magic[y][x]=i; } else if (!magic[y-1][0]) { x=0; y--; magic[y][x]=i; } else { x=0; magic[y][x]=i; } } else if (y==0) { x++; y=n-1; magic[y][x]=i; } else if(MOVE) { y++; magic[y][x]=i; } else { x++; y--; magic[y][x]=i; } } for (i=n-1;i>=0;i--) { int j; printf("%*d",ctrl,magic[i][0]); for (j=1;j<n;j++) printf(" %*d",ctrl,magic[i][j]); printf("\n"); } printf("\n"); } return 0; }
注意事项:
参考代码:
0.0分
3 人评分
K-进制数 (C++代码)浏览:858 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:556 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:468 |
1128题解(返回值为数组的情况)浏览:473 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:883 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:575 |
Tom数 (C语言代码)浏览:555 |
字符串比较 (C语言代码)浏览:685 |
简单的事情 (C语言代码)浏览:638 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:459 |