c语言。打印数字金字塔。

c语言。打印数字金字塔。
for循环中为什么是j < i+1 呢?以及如何判断这里的控制变量到底是与n有关还是与循环变量i有关呢? 需要详细的解答


#include<stdio.h>
void pinrtTriangle(int n)
{
    int num = 1;            //输入的内容
    for(int i = 0;i < n;i++)
    {
        for(int j = 0;j < i+1;j++)      //为什么是j < i+1 呢?以及如何判断这里的控制变量到底是与n有关还是与循环变量i有关呢? 需要详细的解答
            printf("%d",num++);
        printf("\n");
    }
}

int main()
{
    int n;
    scanf("%d",&n);
    pinrtTriangle(n);
    return 0;
}

你输入数字10,就会打印10行语句,第一行语句打印了一个元素,第二行语句打印了两个元素,第三行语句打印了三个数字,因此可以发现每次需要打印当前行次数,而外层for循环中i变量代表当前行,因此只需要在内层for循环写个条件,使得循环i次,而内存for循环从0开始,因此j<i+1或者j<=i

大一吗?为什么是j < i+1呢?因为要打印的行数等于i+1,所以控制变量 j 就要小于 i+1。而且控制变量与循环变量i有关,它主要是用来控制每一行输出的数字个数。
是的,可以这样来理解:比如说,n=4, 那么有4行输出,也就是说i也就有4个值,分别是0, 1, 2, 3。对应的每一行都可以用j来控制循环次数,j的值分别有0,1,2,3。因此,j的值总是要小于i+1,即j < i+1。

因为i=0的时候要打印1个而不是0个,所以要i+1呀
你不加1运行起来看看不就知道怎么回事了吗,不要空想