实验9:二维数组(奇数阶魔方)

C语言实验 飞快学 386浏览

一、实验目的

了解伪代码的作用;学会编写伪代码;培养提取问题要点的能力;编写代码来模拟实际操作;掌握二维数组的使用;掌握符号常量的作用;

二、实验内容

三、实验要点

放置的过程可以归纳为:
1) 放置 1~ n*n 个数:确定初步位置,也就是 i 和 j 的值; 如果出界,就进行调整;放置 k
2) 确定初步位置有两种选择:放置在前一个数的下方或者右上方

四、代码

伪代码

        确定1的位置坐标 i 和 j;
        在 i 和 j 这个位置放置 1;
        for (放置2~n*n个数) {
            if (k in [1,n+1,2*n+1, ..., (n-1)*n+1])
                下方;
            else {
                右上方;
            }
            if (在第0行) 调整到第n行;
            if (在第n+1列) 调整到第1列;
            放置 k 到 a[i][j];
        }
        输出二维矩阵;

对应的C语言代码描述如下:

#include <stdio.h>
 
#define N  20
int main( )
{
    int n, k, i, j;
    int a[N][N];
    scanf("%d", &n);
    i= 1; j=(n+1)/2;
    a[i][j]=1;
    for (k=2; k<=n*n; k++) {
        if (k%n==1)
            i = i+1;
        else {
            i = i-1; j = j+1;
        }
        if (i==0) i = n;
        if (j==n+1) j = 1;
        a[i][j] = k;
    }
    for (i=1; i<=n; i++) {
        for (j=1; j<=n; j++)
            printf("%4d", a[i][j]);
        printf("\n");
    }
    return 0;
}

五、实验小结