C语言逆半金字塔打印代码运行机制及内层循环执行逻辑(新手疑问)
逆半金字塔代码内层循环运行详解
先把你提供的打印逆半金字塔的完整代码贴在这里:
#include<stdio.h> int main() { int i, j, rows; printf("Enter number of rows: "); scanf("%d", &rows); for (i=rows; i>=1; --i) { for (j=1; j<=i; ++j) { printf("* "); } printf("\n"); } return 0; }
当输入rows=5、外层循环第一次迭代(i=5)时,内层循环的运行流程是这样的:
- 第一步:内层循环初始化
j=1,判断条件j<=5——结果为真,执行printf("* "),输出第一个*。 - 第二步:
j执行自增操作(++j),变成2,再次判断j<=5——依然为真,输出第二个*。 - 第三步:
j自增为3,条件j<=5成立,输出第三个*。 - 第四步:
j自增为4,条件成立,输出第四个*。 - 第五步:
j自增为5,条件成立,输出第五个*。 - 第六步:
j继续自增为6,此时判断j<=5——结果为假,内层循环直接终止。 - 最后回到外层循环,执行
printf("\n"),完成换行,准备进入外层循环的下一次迭代(i=4)。
简单说,这次内层循环会连续输出5个* ,然后换行,对应逆半金字塔的第一行(最宽的那一行)。
内容的提问来源于stack exchange,提问作者Tanmay Patel
相关产品推荐
相关产品推荐

