C_使用二维数组作出矩阵图

来源:互联网 发布:会员数据分析报告 编辑:程序博客网 时间:2024/06/10 02:31

 源码:
# include <stdio.h>
 
int main()
{
    int array[16][16];
    int i, j, k, m, n;
     
    /* 变量初始化 */
    m = 1;
    while(m == 1)
    {
        printf("请输入n(0<n<=15且为奇数):");
        scanf("%d", &n);
        /* 判断n是否是大于0小于等于15的奇数 */
        if((n!=0) && (n<=15) && (n%2!=0))
        {
            printf("矩阵阶数是 %d/n", n);
            m = 0; // 制造循环输入机制,直到输入正确方可退出循环
        }
    }
     
    /* 数组赋初值为0 */
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            array[i][j] = 0;
 
    /* 建立魔方阵 */
    j = n/2 + 1;
    array[1][j] = 1;  // 将首行正中间元素设置为1
     
    /* 此时i与j都等于n */
    for(k=2; k<=n*n; k++)
    {
        i = i - 1;     // 回到上一行
        j = j + 1;   // 去往下一列
        if((i<1) && (j>n))  // 若是行到达首行且列到达尾列,前进两行,退一列
        {
            i = i + 2;
            j = j - 1;
        }
        else  // 否则,若仅到首行时,变成尾行;若仅到尾列,变成首列
        {
            if(i < 1)
                i = n;
            if(j > n)
                j = 1;
        }
        if(array[i][j] == 0)  // 若二维数组中有元素为0,则令其等于k
            array[i][j] = k;
        else  // 否则一旦出现非零元素,就等前进两行,退一列之后,令其等于k
        {
            i = i + 2;
            j = j - 1;
            array[i][j] = k;
        }
    }
 
    /* 输出魔方阵 */
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=n; j++)
            printf("%5d", array[i][j]);
        printf("/n");
    }
    return 0;
}

原创粉丝点击