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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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的。

python3判断输入的数是否为素数

首先,需要明确什么是素数?

  素数:又称质数,指在大于1的自然数中,除了1和该数本身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。

  举个例子:5---除了能被1或5整除外,再也找不到第三个可以整除它的自然数了。那么5就是素数。

那么,如果用程序如何来判断它是不是素数?

实现思路:

1 需要先输入一个被判断的数字并赋值给 Number
2 判断这个数符不符合“Number > 1”的规则,如果不符合就结束循环,如果符合就去检验是不是素数
3 如果能被1到Number之间的任意一个正整数整除就可以判断为不是素数,即可结束循环
4 如果1至Number之间所有的正整数都不能整除,那么就是素数,即可结束循环

有了思路,咱们来看具体要怎么实现:

Number = int(input("请输入一个数字:"))          # 输入一个正整数,并赋值给Number
if Number > 1:                                 # 判断输入的正整数是否大于1
    for i in range(2,Number):                  # 循环取出2至Number-1的正整数 i
        if Number % i == 0:                    # 将Number与i取余,如果余数为0 ,则就可以被整除
            print ("数字%s不是素数" % Number)
            break                              # 不是素数,结束循环
    else:
        print("数字%s是素数" % Number)           # 否则就是素数,打印结果
else:
    print("输入的数字小于1,不合法")

对于这段代码,有个地方要注意:

  else没有和if是一对,而是和for并排的,else与for搞到了一起,凑成了一对,我们常见的是if…else…或者if…elif…else诸如此类,但其实for也可以和else搭配出现,在这段代码里,当某一次遍历结果余数为0后,break生效,那循环就结束了。就这样完了,就是上边思路中的第三点。

最后来看看不同情况的结果:

请输入一个数字:17
数字17是素数

请输入一个数字:-10
输入的数字小于1,不合法

请输入一个数字:9
数字9不是素数

 

 

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

C语言中如何实现验证输入的是不是为数字?

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

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

C++语言 输入一个正整数,判断它是不是是回文数

在java里怎么判断输入的东西是否数字和正整数?(请把详细的代码给我谢谢)

java中如何判断输入的数是不是符合为四位整数这个条件?