C语言for循环内变量赋值未生效,输出结果不符合预期
问题分析与解决
你的代码核心问题是for循环的条件写反了:
初始状态sum=0,sum>200的判断结果为false,导致循环体一次都没执行,直接跳到printf语句,所以N和sum保持了循环初始化后的状态(N=1,sum=0)。
for循环的执行逻辑是:
- 执行初始化语句(N=1)
- 判断循环条件,条件为true才进入循环体
- 执行循环体代码后,执行增量语句(N=N+1)
- 回到步骤2重复判断
你需要把循环条件改为sum <= 200,让循环持续执行直到sum超过200。另外注意,循环结束时N已经完成了最后一次自增,所以最后添加到sum里的数应该是N-1,需要修正printf的输出内容。
修正后的代码:
#include <stdio.h> int N=0,sum=0; int main(){ for(N=1; sum <= 200; N=N+1){ sum= sum + N; } printf("the last number added to reach 200 is %d with the sum being %d:", N-1, sum); return 0; }
运行这段代码会输出:the last number added to reach 200 is 20 with the sum being 210:,因为1到20的和是210,刚好超过200。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

