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

如何为C++程序添加循环校验 保证用户输入正数、负数时提示重输

C++ 输入正数校验实现方案

以下是添加完校验逻辑的完整可运行代码:

#include <iostream>
#include <cmath>
#include <limits>
using namespace std;

int main()
{
    float sq, n;
    // 循环获取输入,直到拿到合法正数
    do {
        cout << "Enter any number:";
        cin >> n;
        // 校验非数字输入场景
        if (cin.fail()) {
            cout << "错误:输入内容不是合法数字,请重新输入" << endl;
            // 清空输入流错误标记
            cin.clear();
            // 清空输入缓冲区所有残留内容,避免死循环
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            n = -1;
        } 
        // 校验负数/0输入场景
        else if (n <= 0) {
            cout << "错误:不能输入负数或0,请输入大于0的正数后重试" << endl;
        }
    } while (n <= 0);

    sq = sqrt(n);
    cout << "Square root of " << n << " is " << sq;
    return 0;
}

逻辑说明

  • 采用do-while循环包裹输入流程,无需重复编写输入提示代码,保证至少执行一次输入操作
  • 新增两类输入校验覆盖异常场景:
    • 非数字输入校验:通过cin.fail()判断输入流是否异常,比如用户输入字母、符号等非数字内容,出现异常后先清空错误标记,再清空缓冲区残留的非法内容,避免程序进入死循环
    • 非正数校验:输入为负数或0时直接抛出错误提示,重新进入输入流程
  • 只有当输入值大于0时才会退出循环,执行后续开平方计算逻辑,完全满足需求。

内容的提问来源于stack exchange,提问作者Darin Hinze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:45:00