网友您好, 请在下方输入框内输入要搜索的题目:
阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。
【说明】
下面的程序用DoleRob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。
a.在第一行的正中插入1。
b.新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。
c.若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。
例如,3阶魔方阵如下所示:
8 1 6
3 5 7
4 9 2
【C程序】
include<stdio.h>
include<stdlib.h>
define SIZE 50
main( )
{ int row, col, n,value;
int a[SIZE+1][SIZE+1]; /*不使用下标为0的元素*/
printf("请输入要输出魔方阵的阶数n(奇数,<%d):n=",SIZE);
scanf("%d",&n);
if (!(n % 2)||n < 1 ||(1)) {
printf("输入数据有误!\n"); exit(0);
}
row=1; col = (n+1)/2; value=1;
while(value< =(2)) {
a[row][col] = value;
/*计算下一位置*/
if(value%n !=0){
row--; (3);
if(row<1) row=n;
if(col>n)(4);
}
else row++;
value =(5);
}
printf("\n%d阶魔方阵如下所示:\n\n",n);
for(row = 1;row <= n; row++){
for(col = 1; col <=n; col++)
printf("%5d",a[row][col]);
printf("\n");
}
}
参考答案