C语言程序设计题,求

img

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <stdlib.h>

void fun(int **a, int sx,int sy,int n,int start)
{
    int i,j;
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            if(i==j)
                a[sx+i][sy+j] = start + i;
            else if(i==n-1)
                a[sx+i][sy+j] = start + 3*n-i-3 -j;
            else if (j==0)
                a[sx+i][sy+j] = start + 3*n-i-3;
        }
    }
    if(n<=3)
        return;
    else
    {
        sx +=2;
        sy +=1;
        fun(a,sx,sy,n-3,3*n-2);
    }
    
}

int main()
{
    int **a = 0;
    int n,i,j;
    printf("n=");
    scanf("%d",&n);
    a = (int**)malloc(n*sizeof(int*));
    for (i=0;i<n;i++)
    {
        a[i] = (int*)malloc(n*sizeof(int));
    }
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            a[i][j] = 0;
        }
    }
    fun(a,0,0,n,1);

    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            if(j<=i)
                printf("%4d",a[i][j]);
        }
        printf("\n");
    }


    for (i=0;i<n;i++)
    {
        free(a[i]);
    }
    free(a);
    return 0;
}

这用for循环直接写啊。。

最大值Max=(x²-x)/2+x

三个方向写三个方法,输入的n代表执行的次数,每执行一次方法n--直到n=0