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

C语言do-while循环条件疑问:输入[0,10]区间数值遇逻辑困惑

问题解答:do-while循环条件的逻辑误区
  • 核心问题:你搞反了do-while循环的执行规则
    do-while是先执行一次循环体,再判断条件:如果条件为真,就重复执行循环体;条件为假,就退出循环。

  • 原条件的问题所在
    你写的while (nmbr >= 0 && nmbr <= 10),意思是:只要输入的数在[0,10]区间内,就继续循环(继续让用户输入)。这和你的需求完全相反——你本来想让输入符合要求时停止,结果符合要求时反而一直重复输入提示,直到输入不符合区间的数才退出,最后打印的也是不符合要求的数,自然“无法正常工作”。

  • 反向条件生效的原因
    改成while (nmbr < 0 || nmbr > 10)后,逻辑变成:只要输入的数不在[0,10]区间内,就继续循环(重新提示输入)。一旦输入符合要求的数,条件就为假,循环直接退出,正好实现了“获取[0,10]区间输入”的目标。

  • 修正后的代码示例

#include <stdio.h>

int main () {
    int nmbr;

    do {
        printf("Enter a number within the interval [0, 10]: \n");
        scanf("%d", &nmbr);
    } while (nmbr < 0 || nmbr > 10); // 用区间外的判断作为循环继续的条件

    printf("The number is: %d", nmbr);

    return 0;
}

内容的提问来源于stack exchange,提问作者Mil Pool

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:37:11