C语言输入两整数按规则打印范围序列 输出异常如何修复
问题原因
你的代码存在三个核心错误:
- 没有做分支判断,两个while循环会顺序执行,无论n1和n2的大小关系都会触发两次遍历逻辑,导致输出多余数值
- 当两个数相等时,第一个while的
i <= n2条件永远成立,i不会发生越界,直接进入死循环无限打印 - 第二个while内部冗余的相等判断逻辑,会重复打印终点数值,进一步导致输出异常
修复后代码
#include <stdio.h> int main() { int i, n1, n2; printf("enter 2 integers: "); scanf("%d %d", &n1, &n2); if (n1 <= n2) { // 从小到大遍历 i = n1; while (i <= n2) { printf("%d ", i); i++; } } else { // 从大到小遍历 i = n1; while (i >= n2) { printf("%d ", i); i--; } } printf("\n"); return 0; }
改动说明
- 新增大小判断分支,仅执行对应场景的遍历逻辑,避免两个循环同时运行
- 相等场景被
n1 <= n2分支覆盖,只会执行一次遍历打印该数值,不会触发死循环 - 移除了冗余的重复打印逻辑,输出结果符合预期
内容的提问来源于stack exchange,提问作者PATCHARRAPHUMI PLABPHOL
相关产品推荐
相关产品推荐

