C语言计算两数区间和代码start输出异常,如何恢复为原始输入值
问题原因
你代码中的累加循环直接修改了start变量本身,每轮循环执行++start操作,当循环结束时start的值已经变为end + 1,因此最终打印的不是最初输入的起始值。
修复方案
有两种常用的修复思路:
- 思路1:新增临时变量用于循环累加,不修改原始的
start取值,你代码中已经定义了未使用的i变量,可以直接用来做循环计数,同时可以删除没有实际作用的外层while(1)嵌套。 - 思路2:新增变量存储原始输入的
start值,循环依然修改原start变量,打印时输出存储的原始值即可。
修复后完整代码(思路1示例)
int main() { int start, end; int sum = 0; int i; start = 0; printf("Start integer: "); scanf("%d", &start); printf("\nEnd integer: "); scanf("%d", &end); // 用i做循环计数,不修改原始start的值 for(i = start; i <= end; i++){ sum += i; } printf("The sum between %d and %d is %d\n", start, end, sum); return 0; }
修复后完整代码(思路2示例)
int main() { int start, end, raw_start; int sum = 0; start = 0; printf("Start integer: "); scanf("%d", &start); raw_start = start; // 存储原始输入的起始值 printf("\nEnd integer: "); scanf("%d", &end); while(start <= end){ sum += start; ++start; } printf("The sum between %d and %d is %d\n", raw_start, end, sum); return 0; }
内容的提问来源于stack exchange,提问作者Foks
相关产品推荐
相关产品推荐

