深夜还在学 实在是没有学明白 找一个范例

请编写一个程序: 利用二维数组创建如图4-16所表示方阵,并显示输出。

img

规律是:主对角线上的元素都是1,然后主对角线两侧数据递增,当数据大于3以后,数据为0
运行效果如下:

img

代码:

#include <stdio.h>
int main()
{
    int i,j;
    int a[6][6];
    for (i=0;i<6;i++)
    {
        for (j =0;j<6;j++)
        {
            if(i==j) a[i][j] = 1;//对角线元素是1
            else if(j<i) 
            {
                a[i][j] = 1 + i-j;
                if(a[i][j]>3) a[i][j] =0;
            }else
            {
                a[i][j] = 1 + j-i;
                if(a[i][j]>3) a[i][j] =0;
            }
        }
    }
    //显示
    for (i=0;i<6;i++)
    {
        for (j=0;j<6;j++)
        {
            printf("%2d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

你题目的解答代码如下:

#include <stdio.h>
#include<math.h>
int main()
{

    int n=6,i,j,t=3,m;
    int a[n][n];
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            m = abs(j-i)+1;
            a[i][j] = m<=t?m:0;
        }
    }
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

如有帮助,望采纳!谢谢!