填空题 下面程序用来生成 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、
【正确答案】 1、(magic_len 1) / 2 count row = magic_len col -= magic_len    
【答案解析】