根据键盘输入的n值,输出如下n行的图案

根据键盘输入的n值,输出如下n行的图案:
输入n,输出如下n行的图
1.

img


2.

img

//1
#include<stdio.h>
int main()
{
    int n,i,t,m=1;
    printf("行数");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(t=1;t<=2*n-1;t++)
        {
            if(t<=n-i)
            {
                printf(" ");
            }
            else if(t<=n+i-1)
            {
                if((t+i)%2==0)
                {
                    printf("%d",m++);
                }
                else
                {
                    printf("_");
                }
            }        
        }
        printf("\n");
        m=1;
    }
    return 0;
}

供参考:

#include <stdio.h>
int main()
{
    int n = 5, i, j, k;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n - i - 1; j++)
            printf(" ");
        for (j = 0, k = 1; j < 2 * i + 1; j++)
            printf(j % 2 == 0 ? "%d" : "%c", j % 2 == 0 ? k++ : ' ');
        printf("\n");
    }
    return 0;
}

第2题:

#include <stdio.h>
int main()
{
    int n = 4, i, j;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < i; j++)
            printf(" ");
        for (j = 0; j < 2 * (n - i) - 1; j++)
            printf(j == 0 || j == 2 * (n - i - 1) ? "*" : " ");
        printf("\n");
    }
    return 0;
}

该回答内容部分引用GPT,GPT_Pro更好的解决问题
根据键盘输入的n值,输出如下n行的图案是一个有趣的编程习题,也是一个基础的算法问题。首先,我们要考虑到每一行的输出图案,从1开始增加,到中间或者最后会减少,所以可以使用一个for循环来实现。首先,定义一个变量startnum来存储每一行开始的数字,从1开始逐渐增加。然后,使用另外一个for循环来循环输出每一行的数字,每次循环startnum+1,当startnum>n时,就从n开始逐渐减少,直到startnum=1为止。

以下代码实现根据键盘输入的n值,输出如下n行的图案

int n = 5; // 键盘输入的n值
int startnum = 1; // 每一行开始的数字
// 外层循环:循环打印n行
for(int i=1; i<=n; i++) {
    // 内层循环:打印每一行的数字
    for(int j=1; j<=i; j++) {
        System.out.print(startnum + " ");
        // 每一行数字逐渐增加或减少
        if(startnum < n) {
            startnum++;
        }else{
            startnum--;
        }
    }
    System.out.println();
}

运行上述代码,当n=5时,输出如下图案:
1
1 2
12 3
1234
12345
如果回答有帮助,望采纳。