解题思路:
#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 人评分
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:601 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:572 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:552 |
C语言训练-求函数值 (C语言代码)浏览:931 |
C语言程序设计教程(第三版)课后习题9.3 (Java代码)浏览:956 |
上车人数 (C语言代码)浏览:777 |
字符串的输入输出处理 (C语言代码)浏览:924 |
兰顿蚂蚁 (C++代码)浏览:1044 |
WU-printf基础练习2 (C++代码)浏览:2000 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:587 |