C语言数组与循环问题

img

img


有谁知道这两题的思路吗
用C语言完成
真诚发文,等待解惑
谢谢各位


#include <stdio.h>

int main()
{
    int n = 9, i, j, num = 1,  t;

    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n - i; j++)
            printf("%3c", ' ');

        if (i % 2 == 0)
        {
            for (j = 0; j < i; j++)
                printf("%3d", num++);
        }
        else
        {
            t = num + i-1;
            for (j = 0; j < i; j++)
            {
                printf("%3d", t--);
                num++;
            }
        }
        printf("\n");
    }

    return 0;
}

第4题:非标准答案,仅供参考。

img

#include <stdio.h>
//数组方法1
void func1()
{
    char arr[9][40]={
        "                                 1",
        "                             2   3",
        "                         6   5   4",
        "                     7   8   9  10",
        "                15  14  13  12  11",
        "            16  17  18  19  20  21",
        "        28  27  26  25  24  23  22",
        "    29  30  31  32  33  34  35  36",
        "45  44  43  42  41  40  39  38  37"
    }
    ;
    for(int i=0;i<9;i++)
    printf("%s\n",arr[i]);
}
//循环方法2
void func2(int n)
{
    int a=0;
    int b=0;
    int wid;
    for(int i=1;i<n+1;i++)
    {
        wid=3*n+2-3*i;
        if(i%2==0)
        for(int j=0;j<i;j++)
        {
            j==0 ? printf("%*d",wid,++a):printf("%3d",++a);
        }
        else
        {
            a+=i;
            b=a;
            for(int k=0;k<i;k++)
            k==0 ? printf("%*d",wid,b--):printf("%3d",b--);
        }
        printf("\n");
    }
}
int main(int argc, char** argv){
    puts("方法一____数组直接输出:");
    func1();
    puts("\n方法二____循环输出:");
    func2(9);
    return 0;
}


有友友可以看一下第三题吗