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运行起来看看不就知道怎么回事了吗,不要空想