c语言程序中这个题的运作过程

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:55:51
int i,j;
for(i=4;i>=1;i--)
{
printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}

答案的结果是:
*
**
***
****
可是我不知道怎么算出来的!!有2个for语句 我不知道实际上是怎么运作的!!
高人有时间的话帮我看两眼!!!谢

首先是i初值为4,先输出个*,然后再执行for(j=1;j<=4-i;j++),因为有i=4,所以,第二个循环不成立,因为你看for里面的j<=4-i,即j<=0,因为前面已经是i=4了,所以当i=4时只输出一个*;
然后i=3,为什么=3,是因为i--控制的,它还是先输出个*,然后再执行for(j=1;j<=4-i;j++),因为i=3,所以第二个循环成立,但是只有一个数据成立,即j=1,所以第二个循环只输出一个*,加上前面的一个*,所以应该是输出2个*;
依次类推,当i=2和i=1时,第二个循环分别输出2个和3个*,就成了这样的形状!
* /*只执行外部循环*/
** /*执行一次外部循环和执行一次内部循环*/
*** /*执行一次外部循环和执行两次内部循环*/
**** /*执行一次外部循环和执行三次内部循环*/

首先i=4,然后指向大括号里面的第一句,输出一个*,然后执行j=1,由于限制条件是j<=4-i,此时i=4,限制条件即j<=0,而这个时候j=1,显然不符合j<=0,所以for(j=1;j<=4-i;j++) 这个循环退出,不执行他下面的printf("*");,直接执行printf("\n"); ,接着i--,i变成3,执行大括号里面的第一句,在第二行打印一个*,此时又执行for(j=1;j<=4-i;j++) 这句,j开始等于1,限制条件玮j<=4-i,此时i=3,限制条件变为j<=1,此时j=1,所以满足
j<=1,for(j=1;j<=4-i;j++)下面的printf("*");执行一次,然后j++,j不满足限制条件了,所以for(j=1;j<=4-i;j++) 这个循环结束,接着执行下面的printf("\n"); ,依次往下进行,直到i这个循环结束

i=4时
第1个printf("*"); 输出*;for(j=1;j<=4-i;j++)时i=4,j=1,4-i=0,所以第2个printf("*");不输出*