C语言使用循环打印倒序数字图案时代码错误如何解决
C语言循环打印图案问题解答
错误原因
第一个while循环版本的核心问题是内层while循环的条件5>=j>=i不符合C语言的运算规则:
- C语言中关系运算符为左结合性,
5>=j>=i会被拆分为(5 >= j) >= i执行 - 第一步计算
5 >= j会得到布尔值1(条件成立)或0(条件不成立) - 第二步用第一步得到的1/0和i比较大小
第一次外层循环i=1时,内层j从1开始递增,5>=j的结果是1,1>=1始终成立,直到j=6时5>=j结果为0,0>=1不成立,内层循环结束,正常输出第一行1 2 3 4 5。
当外层循环i>=2时,5>=j的结果最大为1,1>=i永远不成立,内层循环完全不会执行,因此不会输出后续行,最终仅能看到一行有效输出。
修复方案
将内层while循环的条件修改为和for循环版本一致的逻辑与写法即可:
while(j >= i && j <=5)
修改后的完整可运行代码:
#include<stdio.h> int main() { int i,j; i=1; while(i<=5) { j=i; while(j >= i && j <=5) { printf("%d ",j); ++j; } printf("\n"); ++i; } return 0; }
内容的提问来源于stack exchange,提问作者Kritika Gupta
相关产品推荐
相关产品推荐

