填空题
下面程序用来生成 n 阶的魔方阵(这里的 n 为奇数)。所谓 n 阶魔方阵是指这样一种方阵,它的每一行和每一列以及两个对角线上的 n 个自然数的和都相等,如下面就是一个 3阶的魔方阵∶
8 1 6
3 5 7
4 9 2
试填写下面程序中的空格,使其能运行得到正确结果。
#include
#include
const int MAX_LEN = 17+1;
static int fill_magic(int magic[][MAX_LEN], int magic_len);
static int print_magic(int magic[][MAX_LEN], int magic_len);
int main 1
{
int magic[MAX_LEN][MAX_LEN];
int magic_len;
do {
cout << "/nPlease input an odd possitive integer";
cout << "(<=" << (MAX_LEN-1) << ", such as 7):";
cin >> magic_len;
} while (magic_len <= 0 || magic_len > MAX_LEN || magic_len /% 2 == 0);
fill_magic(magic, magic_len);
print_magic(magic, magic_len);
return 0;
}
int fill_magic(int magic[][MAX_LEN], int magic_len)
{
int i, j, row, col, count;
count = 1;
row = 1;
col =( );
for (i = 1; i <= magic_len; i++) {
for (j = 1; j <= magic_len; j++) {
magic[row][col] =( );
count++;
if (--row < 1) row =( );
if (++col > magic_len) col =( );
}
row += 2;
if (row > magic_len) row -= magic_len;
col--;
if (col < 1) col += magic_len;
}
return 1;
}
int print_magic(int magic[][MAX_LEN], int magic_len)
{
int row, col, count;
cout << "/nThe " << magic_len << " * ";
cout << magic_len << " magic matrix:/n";
for (count = 1; count <= 4 * magic_len + 1; count++) cout << "-";
for (row = 1; row <= magic_len; row++) {
cout << "/n";
for (col = 1; col <= magic_len; col++) {
cout << setw(3) << magic[row][col];
}
}
cout << "/n";
for (count = 1; count <= 4 * magic_len + 1; count++) cout << "-";
return 1;
}
【正确答案】
1、(magic_len 1) / 2 count row = magic_len col -= magic_len
【答案解析】