编程序打印N阶魔方数阵!!

编程序打印N阶魔方数阵!!,第1张

给你个N阶奇数幻方.#include <iostream>

using namespace stdvoid main()

{

int k,p,q,n,s[19][19]

do{

cout<<"请输入阶数n(n为小于20的正奇数):"

cin>>n

}while(n<1||n>19||n%2==0)

p=n-1

q=(n-1)/2

for(k=1k<=n*nk++)

{

s[p%n][q%n]=k

if(k%n==0) p--

else

{

p++

q++

}

}

cout<<endl<型李<"========阶数为"<<n<<"的魔方为========"<<endl

for(p=0p<np++)

{

for(q=0q<nq++)

{

cout.width(4)

cout<<s[p][q]

}

cout<<endl

}

cout<卜陵迟<"==============================="汪缓<<endl

}

所谓的魔方缺乎尺距阵就是一种特殊的奇数阶方阵:它的行,列,对角线,上的数字之和顷段都要相等,且方阵中的伏高每一个数字都不相等,且数字的范围都在1到n*n之间.

我编的程序如下:

#include<stdio.h>

#define N 15

main()

{

int i,j,row,cloum,size,square[N][N],count

clrscr()

printf("please enter the square size(odd &&<=15):\n")

scanf("%d",&size)

while(size%2==0||size>15||size<3)

{

printf("error due to the wrng input!please input it again!\n")

scanf("%d",&size)

}

for(i=0i<sizei++)

for(j=0j<sizej++)

square[i][j]=0

i=0j=(size-1)/2

square[i][j]=1

for(count=2count<=size*sizecount++)

{

row=i-1<0?(size-1):(i-1)

cloum=j-1<0?(size-1):(j-1)

if(square[row][cloum])

i=(++i)%size

else

{i=row

j=j-1<0?(size-1):(j-1)

}

square[i][j]=count

}

printf("the %d square is:\n",size)

for(i=0i<sizei++)

{

for(j=0j<sizej++)

printf("%d",square[i][j])

printf("\n")

}

}

只能求奇数的魔方阵

#define N 20

main()

{

int a[N][N]

int n,i,j,r

scanf("%d",&n)

for(i=0i<Ni++) for(j=0j<Nj++) a[i][j]=0

i=0

j=n/2

a[i][j]=1

for (r=2r<=n*nr++)

if (a[(i+n-1)%n][(j+1)%n]==0)

{i=(i+n-1)%nj=(j+1)%na[i][j]=r}

else

{i=(i+1)%na[i][j]=r}

for(i=0i<ni++)

{

for(j=0j<nj++) printf("%4d",a[i][j])

printf("\n")

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/12370553.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存