C语言打印数字图形,while循环怎么往里面嵌套?

img


我这一行代码怎么才能输出这样的形式?
54321
5432
543
54
5


#include <stdio.h>

int main() {
    int m, n = 1, k;
    scanf_s("%d", &m);
    k = m;
    
    while (k > 0) {
        int num = m;  // 重置num为当前行的起始数字
        n = 1;  // 重置n为1,表示每行从m开始递减
        
        while (n <= k) {
            printf("%d", num);
            
            if (n < k) {
                printf(" ");  // 在数字之间输出空格,不包括最后一个数字
            }
            
            num--;  // 递减数字
            n++;
        }
        
        printf("\n");  // 换行到下一行
        k--;  // 递减行数
    }

    return 0;
}

【以下回答由 GPT 生成】

#include <stdio.h>
int main() {
    int n, m;
    scanf("%d", &m);
    int k = m;
    while (k) {
        n = m; // 在内层循环开始前,将n重新赋值为m
        while (n >= 1) {
            printf("%d", n);
            n -= 1;
        }
        printf("\n");
        k -= 1;
        m -= 1;
    }
    return 0;
}

解释:

在原来的代码中,内层循环的条件是k >= n,这会导致内层循环只执行一次,因为k不会改变。

通过将n重新赋值为m,使得内层循环每次都会从m开始,输出m到1的数字。

同时,将对n的递增移动到内层循环之前,以便在内层循环开始时将n重置为m

这样就能够得到所需的输出形式。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

仅供参考,谢谢!

img

img

#include<stdio.h>

int main(void)
{
    int m, n, i, j;
    scanf("%d", &n);
    i = m = n;
    while (n)
    {
        i = m;
        j = n;
        while (j--)
            printf("%d", i--);

        puts("");
        n--;
    }
    return 0;
}