qq_麒麟_7
2017-08-28 09:19
不明白循环的条件和内容,它怎么能输出这个正三角的呢。请详细说明一下。
循环执行顺序是外循环执行一次,内循环要完成一次整个循环。本题有一个外循环和两个并列的内循环,所以
外循环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;
}
空格不是\t吗
for(i=1;i<5;i++)意思是有4次循环,输出4次
for(j=1;j<=5-i;j++)意思是每行要输出多少空格
for(k=1;k<=2*i-1;k++)意思是每行输出空格后的*的个数
C语言入门
926027 学习 · 20793 问题
相似问题