为了账号安全,请及时绑定邮箱和手机立即绑定

多重循环的问题

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

正在回答

3 回答

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

外循环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;

}

3 回复 有任何疑惑可以回复我~
#1

qq_麒麟_7 提问者

非常感谢!
2017-08-28 回复 有任何疑惑可以回复我~

空格不是\t吗

0 回复 有任何疑惑可以回复我~

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

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

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

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

多重循环的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信