编程序打印N阶魔方数阵!!
答案:2 悬赏:40 手机版
解决时间 2021-06-05 19:33
- 提问者网友:且恨且铭记
- 2021-06-04 21:01
谁能帮我边个打印N阶魔方数阵的C++程序?谢谢!!!
最佳答案
- 五星知识达人网友:一秋
- 2021-06-04 21:34
给你个N阶奇数幻方.
#include <iostream>
using namespace std;
void 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=1;k<=n*n;k++)
{
s[p%n][q%n]=k;
if(k%n==0) p--;
else
{
p++;
q++;
}
}
cout<<endl<<"========阶数为"<<n<<"的魔方为========"<<endl;
for(p=0;p<n;p++)
{
for(q=0;q<n;q++)
{
cout.width(4);
cout<<s[p][q];
}
cout<<endl;
}
cout<<"==============================="<<endl;
}
全部回答
- 1楼网友:雾月
- 2021-06-04 23:02
#include <stdio.h>
#define MAX 16
void main()
{
int a[MAX][MAX] = {0};
int row, line, k, n;
scanf("%n", &n);//n是奇数
line = 1;
row = n/2+1;
a[line][row] = 1;
for(k = 2; k <= n*n; k++)
{
line--;
if(line < 1)
line = line + n;
row++;
if(row > n)
row = row - n;
if (a[line][row] != 0)
{
line += 2;
row -= 1;
if(line > n)
line = line - n;
if(row < 1)
row = row + n;
}
a[line][row] = k;
}
for(line = 1 ;line <= n; line++)
{
for(row = 1 ;row <= n; row++)
printf("%5d",a[line][row]);
printf("\n");
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯