2017-02-13 75 views
0
#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; 
} 

输出:解释嵌套的for循环

***** 
**** 
*** 
** 
* 

我想知道那是什么ij在这个代码显示该角色的循环决定要放什么行什么列?请解释每个细节的整个循环可能btw我是新来的!谢谢!

+1

https://en.wikipedia.org/wiki/For_loop – Jack

+3

变量的作用是存储特定类型的值。 – Olaf

+1

听起来像一个作业问题... –

回答

0

首先,外环设置为i5。然后内循环重复5次,因为它从1变为5。因此打印*****。在内部循环之后,打印'\n'。这意味着我们继续在第二排。
外环递减i4,这意味着内环分别仅重复4次。所以它打印****,之后,'\n'如下。我们继续下一行。
外环递减i3,这意味着内环分别仅重复3次。所以它打印***,之后是'\n'。这一直持续到i1。这意味着,最后一个循环仅打印*。之后,循环完成,程序结束。
所以基本上ij被确定循环重复的频率。

+0

乌尔的回答是最容易理解的谢谢你 –

0

当您使用循环,你需要一个“反”,基本上如果有事情发生改变的变量,如果该计数器达到一定数目的循环将终止。 ij是你的计数器在这里。这是一个非常通用的定义,你应该研究编程循环。

int i,j;初始化名为ij的变量而不给它们赋值。

for(i=5; i>=1;i--)说:i等于5,而i大于或等于1,减1 i(这是i--装置)。

在该循环是for(j=1; j<=i; j++)循环,这表示:j等于1,而j小于或等于i(其是最初5,但是递减而外部循环迭代),增量j,或增加由酮(j++由一个装置的增加)。

每个循环都有一个printf语句,用于打印“*”或新行(\n)作为外循环和内循环迭代。

return 0终止程序

+0

非常感谢你 –

3

让我们的工作从外面。

for (i = 5; i >= 1; i--) 
{ 
    loop-body 
}

操作的顺序如下:

  1. 初始化i5i = 5);
  2. 如果i >= 1为真则转到3,否则转到6;
  3. ii--
  4. 转到2执行loop-body
  5. 减法1;
  6. 退出循环。每执行一次循环,i推移从5到4,3,2,1,0。当i到达 -

所以,声明在loop_body序列被执行5次0,则条件i >= 1不再为真,并且循环在该点退出。

打破下来多一点:

for (i = 5; i >= 1; i--) 
{ 
    inner-loop 
    printf("\n"); 
}

printf("\n")写一个换行符到标准输出 - 这之后的任何输出将在新的一行被写入。所以现在我们的序列是

  1. 初始化i5;
  2. 如果i >= 1为真则转到3,否则转到7;
  3. 执行inner-loop;
  4. 将一个换行符写入标准输出;
  5. 减去1i;
  6. 转到2;
  7. 退出循环。

直接跳向终点:

for (i = 5; i >= 1; i--) 
{ 
    for (j = 1; j <= i; j++) 
    { 
    printf("*"); 
    } 
    printf("\n"); 
}

我们的操作顺序是现在:

  1. 初始化i5;
  2. 如果i >= 1为真则转到3,否则转到10;
  3. 初始化j1;
  4. 如果j <= i为真,则转到5,否则转到8;
  5. 写一个*字符到标准输出;
  6. Add 1 to jj++);
  7. 转到4;
  8. 写一个换行符到标准输出;
  9. 转到2;
  10. 退出循环;

连续调用printf("*");五次导致*****被写入标准输出。连续调用四次将导致编写****。如果您在之间的呼叫printf("\n");,你

***** 
**** 
+0

非常感谢你!对于这样一个详细的答案,我非常感激 –