本程序要输出魔方阵,魔方阵如下:
1) 8 1 6 2) 17 24 1 8 15 3 5 7 23 5 7 14 16 4 9 2 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
了解题可知:
1.第一行中间一列的值为1。
所以用j=n/2+1确定1的列数,得出a[1][j]=1。
2.每一个数存放的行比前一个数的行数减1,列数加1。
行数用i=i-1确定,列数用j=j+1确定。
3.如果一个数行数为第一行,则下一个数行数为最后一行。
4.如果一个列行数为最后一列,则下一个数列数为第一列。
5.如果按上面的规则确定的位置上已有数,或上一个数是第一行最后一列,则把下一个数放在上一个数的下面。
#include <stdio.h> #define n 16 int main() { int a[n][n]={0},i,j,k,p,n; p=1; while(p==1) { printf("enter n(1~%d): ",n); scanf("%d",&n); if((n!=0)&&(n<n)&&(n%2!=0)) p=0; } i=n+1; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++) { i=i-1; j=j+1; if((i<1)&&(j>n)) { i=i+2; j=j-1; } else { if(i<1) i=n; if(j>n) j=1; } if(a[i][j]==0) a[i][j]=k; else { i=i+2; j=j-1; a[i][j]=k; } } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%4d",a[i][j]); printf("\n"); } return 0; }
作为初学的第一个程序,总感觉有些低级,没什么技术性,不过还是学到了新的知识。相信经过之后的学习,我会懂得更多,会敲出有技术含量的代码。
如对本文有疑问, 点击进行留言回复!!
208核、6TB内存!阿里云发布全球最强云服务器:挑战摩尔定律极限
Pycharm环境下调用Qt desinger 常见问题以及解决方法
pyqt5讲解1:窗口,QLabel,QLineEdit,QTextEdit
已知后序遍历和中序遍历求层序遍历(L2-006 树的遍历 (25分))
网友评论