c++判断输入的是不是为数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++判断输入的是不是为数字?相关的知识,希望对你有一定的参考价值。

请给出详细的代码..
要求如下.
我要用户输入一个数字.
所以要判断用户输入的是否为数字.
输入的不是数字要给出响应..
谢谢了...
整数

可以参考下面的代码:

#include<iostream>

using namespace std;

int main()

double num;

if(cin>>num)

cout<<"Input correct!"<<endl;

else

cout<<"Input erroe!"<<endl;

return 0;

扩展资料:

C语言isupper()函数:判断一个字符是否是大写字母

C语言isspace()函数:判断一个字符是否是空白符

C语言isprint()函数:判断一个字符是否是可打印字符

C语言islower()函数:判断一个字符是否是小写字母

C语言ldexp()函数:返回x乘以2的exponent次方(次幂)的值

double log10(double x) 返回log10x的值

double pow(double x,double y) 返回x^y的值

参考资料来源:百度百科-C语言函数

参考技术A 你写的这个有太多的错误。至于定义数组的时候a[N]这种错误我就不讲了
还有在循环里面(i=1;i<N;i++)N没赋值就调用的错误我也不讲了
讲你的死循环问题你没有给循环加一个限制条件根据你continue的意思我暂时理解为如果输入的不是数字那么一直循环重新输入一直到你输入的是数字为止跳出循环对吗?
while(1)
printf("请输入要查的值\n");
ret=scanf("%d",&n);
printf("ret=%d\n",ret);
if(ret==0)
printf("输入错误,请重新输入\n");
continue;

break;

这样就可以如果输入的是数字scanf的返回值为1那么循环的第一次不会进入if(ret==0)也就是说如果输入的是数字直接执行break跳出循环
如果输入的不是数字循环的时候执行语句if(ret==0)然后执行continue
continue的意思是跳出当前循环继续下一次循环即执行到continue之后从新循环而不会执行到break以此类推只要你输入的不是数字则永远循环输入的如果是数字跳出循环执行完毕。
大哥如果小弟回答正常给点分吧多谢
=================================================================
另外对于一楼的同学我必须有好的提醒你scanf()的用法以及返回值的相关问题
我想你肯定不知道scanf("%d",&i)如果你输入的是int型则返回1否则返回0
换句话说即你输入的类型和scanf()里面预先定义的类型一致则返回1否则返回0
THANKYOU
参考技术B 如果是判断0~9的数字,那么就用isdigit函数。
如果是判断输入是否为科学计数法里面的数据,那么如下:
#include <iostream>
using namespace std;

int main()

double in;
cin>>in;
if(cin.fail())
cout<<"非数字"<<endl;
return 0;
参考技术C #include <iostream>
using namespace std;
int main()

char input[20];
cout<<"请输入数字:";
cin>>input;
for(int i = 0; i < strlen(input); i++)

if(!isdigit(input[i]))

cout<<"你输入了非法字符!"<<endl;
exit(0);


cout<<"你输入的是数字!"<<endl;

要多标准的呢?负数也行么?本回答被提问者采纳
参考技术D 判断是数字的标准是什么?
浮点数?1.0121
整数?-12313,+132

关于c++。 我判断输入是不是为数字,并直到输入数字。

#include<iostream>
using namespace std;
int main()

int m;
while(!(cin>>m))

cout << "不是数字"<<endl;

return 0;

为什么输入字母后会无限循环,应该怎么改?
这个程序错在哪里。

我来给你正解:
1.首先说明:cin>>是输入流,当执行成功时,他会返回一个流对象,其实就是个引用,说白了就是指针,当失败时会返回0。这个你可以试下,打出来的是地址:
int n;
void* p = (cin>>n);
cout << p << endl;
2.while(!(cin>>m)),因为m是int型,所以只接收int型输入值,当你输入数字时,cin>>m执行成功,>>返回的是地址,地址是正值,即为ture,所以!(cin>>m)为false,不满足while循环条件,所以程序直接over。
3.反之,当你输入字母时,符合while条件进入循环,但是为啥会不断循环呢?因为,你输入不正确,cin内含的状态值ios_base被置为ios_base:: failbit,此时cin状态为错,不接受任何输入。然后就成了这种死循环了。要改的话首先重置cin状态为ios_base::goodbit,此外还要清空输入缓冲区中的错误数据。
while(!(cin>>m))

cin.clear();
cin.sync();
cout << "不是数字"<<endl;

cin.clear();是将输入流状态置为goodbit
cin.sync();是将流清空
怕你听不懂,所以啰嗦了!
参考技术A 只能用字符或者字符串的方式输入,然后判断是否数字,是则自己手工转换为数字
错在于int型只能接受数字的输入,输入字符不是触发异常停止程序,就是这样的死循环
参考技术B #include <iostream>
#include <string>

using namespace std;

int main()

while (true)

string str;
cin >> str;
bool b_all_num = true;
for (unsigned int i = 0; i < str.size(); i++)

if (!(str[i] >= '0' && str[i] <= '9'))

b_all_num = false;
break;



if (b_all_num)

break;



return 0;


cin用的是流输入,兄弟,可以随便存的。

================================================
cin表示将输入的内容,已二进制流的方式,保存到一个地址空间去。虽然你一个int型的变量保存的是会截断,但是cin>>m是不会返回false的。

以上是关于c++判断输入的是不是为数字?的主要内容,如果未能解决你的问题,请参考以下文章

C++输入多行数字到数组

C++输入一个3位数,判断它是不是是水仙花数。所谓水仙花数就是该数各位上数字的立方和等于该数本身

判断一个整数是否是回文数C++实现 leetcode系列

C#怎么判断输入内容是不是为数字

winform判断输入是不是是数字

js判断输入的值是不是为数字,也不能是负数