You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言打印两整数区间数值 排查输出多出额外Result行问题

错误原因梳理
  • 第一个问题:do-while循环特性误用。do-while会优先执行一次循环体再判断条件,你输入的a=10、b=1时,第一个循环的判断条件a <= b本身不成立,但还是会先执行一次输出Result: 1,同时把b自减为0,这是第一行多余输出的来源。
  • 第二个问题:边界判断错误。第一个循环执行后b已经变成0,第二个循环的判断条件是a >= b,会让循环一直执行到a=0才停止,这就是末尾多余输出Result: 0的来源。
  • 第三个问题:没有通用的大小判断逻辑,当前代码只能适配a > b的输入场景,如果输入的a小于b,输出结果会完全错误。
修正方案

你只需要先判断两个数的大小,确定遍历的起止值,用单个循环输出即可,修正后代码如下:

#include <stdio.h>

int main() {
  int a, b;
  int start, end;

  printf("Enter integer a:");
  scanf("%d", &a);
  printf("Enter integer b:");
  scanf("%d", &b);

  // 注:需求描述写的是升序输出,但给出的期望输出是从大到小的降序,此处按期望输出逻辑适配
  start = a > b ? a : b;
  end = a < b ? a : b;

  while (start >= end) {
    printf("Result: %d\n", start);
    start--;
  }
  return 0;
}

内容的提问来源于stack exchange,提问作者Shark tales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:54:01