首页 > 代码库 > 基本算法——for循环的使用之魔方阵实现
基本算法——for循环的使用之魔方阵实现
魔方阵,是一种每一行、每一列以及对角线的和相等。
魔方阵的一种特性是:
1.第一个元素1的位置始终在第一行正中。
2.下一个元素的位置总是在刚插入位置的右上方。
3.如果右上方的位置超出方阵上边界,则新的位置应取列的最下位置。
4.如果右上方的位置超出方阵右边界,则新的位置应取行的最座位置。
5.若刚插入的元素为n的整数倍,则选刚插入元素位置的下一行同列插入下一元素。
实现代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define M 20 4 int main(int argc,char *argv[]) 5 { 6 int num=1,len,row,col; 7 int a[M][M]; 8 printf("请输入要输出的行数:"); 9 scanf("%d",&len);10 row=0;11 col=len/2;12 a[row][col]=num++;13 while(num <= len *len)14 {15 if(((num-1)%len) == 0)16 {17 row=(row+1)%len;18 }19 else20 {21 row=(row-1+len)%len;22 col=(col+1)%len;23 }24 a[row][col]=num++;25 }26 for(row=0;row<len;row++)27 {28 for(col=0;col<len;col++)29 printf("%3d",a[row][col]);30 printf("\n");31 }32 system("pause");33 return 0;34 }
逻辑上设计是:
1.首先判断上一元素是否为N的倍数。
2.然后再对下一位置进行取余操作,这样无论是否越界都会得到正确的位置。
基本算法——for循环的使用之魔方阵实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。