问答详情
源自:4-12 循环结构之多重循环

多重循环的问题

不明白循环的条件和内容,它怎么能输出这个正三角的呢。请详细说明一下。

提问者:qq_麒麟_7 2017-08-28 09:19

个回答

  • 慕尼黑6497638
    2017-08-28 11:32:18
    已采纳

    循环执行顺序是外循环执行一次,内循环要完成一次整个循环。本题有一个外循环和两个并列的内循环,所以

    外循环for(i... 执行一次,两个内循环for(j...、for(k... 分别要完成一次完整循环。

    for(j... ——完成*前的空格输出,根据最终输出图形可知,每行前面空格逐一减少,即for(i... 每换一次行,for(j... 的循环总数需减1,直到减至1后停止循环;

    for(k... ——完成*输出,根据最终输出图形可知,每行输出*逐一增加二,即for(i... 每换一次行,for(k... 的循环总数需增2,直到增至7后停止循环;

    for(i... ——完成换行,根据最终输出图形可知,需换4次行(3次也可),所以for(i... 需循环4次,并且需在执行完两个内循环之后执行换行;


    i为行数,j为每行*号前面空格数,k为每行*数;从最终输出图形中分别总结j跟i和k跟i的关系:

    i  j  k

    1  4  1

    2  3  3

    3  2  5

    4  1  7

    j和i的关系,j=5-i;

    k和i的关系,k=(2*i)-1;


    于是得:

    #include <stdio.h>

    int main(){

    int i,j,k;

    for(i=1;i<5;i++){

    for(j=1;j<=5-i;j++)

    printf(" ");

    for(k=1;k<=2*i-1;k++)

    printf("*");

    printf("\n");

    }

    return 0;

    }

  • qq_麒麟_7
    2017-08-28 14:48:40

    空格不是\t吗

  • 慕娘0924178
    2017-08-28 11:48:42

    for(i=1;i<5;i++)意思是有4次循环,输出4次

    for(j=1;j<=5-i;j++)意思是每行要输出多少空格

    for(k=1;k<=2*i-1;k++)意思是每行输出空格后的*的个数