#include <stdio.h>
int main()
{
int i,j;
for(i=5; i>=1;i--)
{
for(j=1; j<=i; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
输出:
*****
****
***
**
*
我想知道i
和j
在此代码中的作用是什么,循环决定放入行中的内容以及列中的内容?请在每个细节上解释整个循环,因为我是新来的!谢谢!
答案 0 :(得分:3)
让我们在外面工作。
for ( i = 5; i >= 1; i-- )
{
loop-body
}
操作顺序如下:
i
初始化为5
(i = 5
); i >= 1
为真,则转到3,否则转到6; loop-body
1
(i
)i--
因此, loop_body
中的语句序列执行5次 - 每次循环执行时,i
从5到4变为3,变为2 ,当1 i
到达0
时,条件i >= 1
不再为真,并且循环在此时退出。
稍微分解一下:
for ( i = 5; i >= 1; i-- )
{
inner-loop
printf("\n");
}
printf("\n")
将换行符写入标准输出 - 此后的任何输出都将写入新行。所以现在我们的序列是
i
初始化为5
; i >= 1
为真,则转到3,否则转到7; inner-loop
; 1
; i
直接跳到终点:
for ( i = 5; i >= 1; i-- )
{
for ( j = 1; j <= i; j++ )
{
printf("*");
}
printf("\n");
}
我们现在的操作顺序是:
i
初始化为5
; i >= 1
为真,则转到3,否则转到10; j
初始化为1
; j <= i
为真,则转到5,否则转到8; *
字符写入标准输出; 1
添加到j
(j++
); 连续五次调用printf("*");
会导致*****
被写入标准输出。连续四次调用会导致****
被写入。如果您之间致电printf("\n");
,则会获得
*****
****
答案 1 :(得分:0)
首先,外部循环将i
设置为5
。然后内部循环重复5
次,从1
到5
。因此打印*****
。在内循环之后,打印'\n'
。这意味着我们继续第二排
外循环将i
递减到4
,这意味着内循环分别仅重复4
次。因此它会打印****
,之后会跟随'\n'
。我们继续下一行
外循环将i
递减到3
,这意味着内循环分别仅重复3
次。因此它会打印***
,之后会跟随'\n'
。这一直持续到i
为1
。这意味着,最后一个循环只打印*
。之后,循环完成,程序结束
所以基本上i
和j
正在确定循环重复的频率。
答案 2 :(得分:0)
当你使用循环时,你需要一个“计数器”,基本上是一个在发生某些事情时会改变的变量,如果计数器达到一定数量,循环就会终止。 i
和j
是您的柜台。这是一个非常通用的定义,你应该研究编程循环。
int i,j;
初始化名为i
和j
的变量,而不给它们赋值。
for(i=5; i>=1;i--)
说:i
等于5,而i
大于或等于1,将i
减1(这是i--
的意思)。
在此循环中有for(j=1; j<=i; j++)
循环,其中:j
等于1,而j
小于或等于i
(最初为5,但会减少)而外循环迭代),增量 j
,或增加一(j++
意味着增加1)。
每个循环都有一个printf
语句,用于打印“*”或新行(\n
)作为外循环和内循环迭代。
return 0
终止程序