试题三(共 15 分)
阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明说明]说明说明下面的程序用 Dole Rob算法生成N阶(N为奇数)魔方阵 (各行、列、对角线数字2之和相等)。
该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N 为止:
a. 在第一行的正中插入 1;
b. 新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置;
c. 若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。
例如,3阶魔方阵如下所示:
8 1 6
3 5 7
4 9 2
[C程序程序]
#include
#include
#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("]",a[row][col]);
printf("\n");
}
}
2008年上半年 程序员 下午试卷 第 4 页 (共 12 页)
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
责任编辑:小草