注册 登录
编程论坛 C++教室

新人求助,怎么让程序在输入的类型不正确时给出提示

骇客不会飞 发布于 2013-09-06 22:38, 580 次点击
#include<iostream>
int main()
{
    using namespace std;
    int i,n;
    while(cin>>n)
    {
    int all=1;
    for(i=1;i<=n;i++)
    {
        all*=i;
    }
    cout<<all<<endl;
    }
    return 0;
}
n的类型为int,怎样让程序在我输入一个char类型的值时判断并提示报错,代码里应该加入什么?或者怎么改?求助各位大神
6 回复
#2
peach54602013-09-06 23:13
先吧输入放到一个string里面,再判断是否为整数
#3
rjsp2013-09-07 08:39
程序代码:
#include <iostream>
#include <limits>

int main()
{
    using namespace std;

    cout << "请输入一系列自然数:\n";
    for( unsigned int n; cin>>n, !cin.bad() && !cin.eof(); )
    {
        if( cin.fail() || n==0 )
        {
            cin.clear();
            cin.ignore( std::numeric_limits<streamsize>::max(), '\n' );
            cout << "输入错误\n";
            continue;
        }

        unsigned factorial = n;
        for( unsigned i=1; i!=n; ++i )
            factorial *= i;
        cout << n << "! = " << factorial << endl;
    }

    return 0;
}
#4
柳州喜来登2013-09-07 11:49
问题1:using namespace std;  是什么意思呢?
问题2: !cin.bad() 是什么意思呢?
问题3:cin.fail() 是什么意思呢?
问题4:cin.clear(); 是什么意思呢?
问题5:cin.ignore( std::numeric_limits<streamsize>::max(), '\n' ); 是什么意思呢?
问题6:unsigned factorial 为什么用那么长的factorial,factorial是什么意思呢?

恳请智者给我解释一下,多谢!
#5
peach54602013-09-07 12:36
以下是引用柳州喜来登在2013-9-7 11:49:06的发言:

问题1:using namespace std;  是什么意思呢?
问题2: !cin.bad() 是什么意思呢?
问题3:cin.fail() 是什么意思呢?
问题4:cin.clear(); 是什么意思呢?
问题5:cin.ignore( std::numeric_limits<streamsize>::max(), '\n' ); 是什么意思呢?
问题6:unsigned factorial 为什么用那么长的factorial,factorial是什么意思呢?

恳请智者给我解释一下,多谢!

看书
#6
超神级2013-09-07 21:02
#7
骇客不会飞2013-09-07 21:44
回复 6楼 超神级
1