_季风洋流 2021-10-04 21:14 采纳率: 50%
浏览 171
已结题

c++整型变量输入小数导致错误 怎么判断输入的是小数并报错 后重新输入数字

题目是:输入起始数值a和终止数值b,输出a与b之间的素数。
卡在了 输入起始数值和终止数值时,输错成小数,如何判断、报错、重新输入、继续运行。

        int a,b,x;
        cout << "起始数值:";
        cin >> a;
        while(cin.fail())
        {
            cin.clear();
            cin.ignore(100,'\n');
            cout << "你只能输入一个整数。" << endl;
            cout << "请输入起始数值:";
            cin >> a; 
        }
        while(!(a>=0))
        {
            cin.clear();
            cin.ignore();
            cout << "错误,请输入一个自然数!" << endl;
            cout << "起始数值:";
            cin >> a;
        }
        cout << "终止数值:";
        cin >> b;
        while(cin.fail())
        {
            cin.clear();
            cin.ignore(100,'\n');
            cout << "你只能输入一个整数。" << endl;
            cout << "请输入终止数值:";
            cin >> b; 
        }
        while(!(b>=0) || b<a)
        {
            cin.clear();
            cin.ignore();
            cout << "错误,请输入一个大于a的自然数!" << endl;
            cout << "终止数值:";
            cin >> b;
        }

上面的代码已经判断了输入的是字符字母和小于0的情况,但不适用于输入小数,输入小数会出现下面的样子:

img

求问各位该怎样修改?或者有其他判断、排除小数、字符的方法?感激回答!

  • 写回答

1条回答 默认 最新

  • 关注

    可以这样

            int a,b,x;
            float x;
            cout << "起始数值:";
            cin >> x;
            while(cin.fail() || x != (int)x)
            {
                cin.clear();
                cin.ignore(100,'\n');
                cout << "你只能输入一个整数。" << endl;
                cout << "请输入起始数值:";
                cin >> x;
            }
            a = (int)x;
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月12日
  • 已采纳回答 10月4日
  • 创建了问题 10月4日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)