如何检查整数是否包含数字 0 和 1
How do I check if an integer contains digit 0 and 1 or not?
比如说,检查一个4位整数。如何检查它是否包含 0 或 1?
使用数字 1234,它包含 1。因此,我不得不拒绝。使用数字 1023,它包含 0。因此,我必须拒绝。但是对于数字 2345,它不包含 0 或 1,因此不会被拒绝。我该如何从那里开始?
我尝试:除以我的整数的 10,如果不是,则用于 cin.clear 和 cin.ignore 只要整数中有数字 0 或 1。
但它不起作用。
cout << "Enter a positive integer: ";
cin >> number;
int outputcounter =4;
while(outputcounter!=0)
{
lastDigit=number%10;
number=number/10;
while ( number > 1 )
{
if ((lastDigit = 1 )|| (lastDigit = 0 ))
{
cin.clear ();
cin.ignore (100, 'n');
}
else
{
cout << " xx";
}
}
啊,我很抱歉,我知道这做得很糟糕。我正在自己学习(本月刚开始),我尝试过谷歌搜索,但我找不到任何解决方案。
转换为字符串将是最简单的解决方案,尽管在计算上不是最有效的:
int number;
...
std::string number_str = std::to_string(number);
if (number_str.find_first_of("01") != std::string::npos) {
// reject the number
}
请尝试以下代码。
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "Enter a positive integer: ";
cin >> number;
int flag = 0;
while(number != 0){
int temp = number % 10;
number = number/10;
if(temp == 1 || temp == 0){
cout<<"rejected";
flag = 1;
}
}
if(flag == 0){
cout<<"Accepted";
}
return 0;
}
假设i
包含要检查的整数。返回值 1 表示包含 1 或 0。零值表示您的数字不包含零或一。我假设i
是正数(或零)。
int checkHasOneOrZero(int i)
{
int j;
if (i == 0) return 1; /* i == 0000 */
while (i > 0) {
j = i % 10;
if (j == 0 || j == 1) return 1;
i = i / 10;
}
return 0;
}
编辑:由于亚瑟的合理评论而交换了返回值
此答案基于您使用的代码
使用这个:(根据您使用的代码)
cout << "Enter a positive integer: ";
cin >> number;
int outputcounter =4;
while(outputcounter!=0)
{
if(number%10==0 || number%10==1)
{
cout<<"the number contains 0/1";
break;
}
number=number/10;
outputcounter--;
}
对于可变长度数:
cout << "Enter a positive integer: ";
cin >> number;
do
{
int mod = number%10;
if(mod==0 || mod==1)
{
cout<<"the number contains 0/1";
break;
}
number=number/10;
}while(number!=0);
假设x是你的整数。
int n= x;
bool has_zero_one = n==0 || n==1;
while(n> 0){
int reminder = n%10;
if(remainder ==0 || remainder ==1) {
has_zero_one = true;
break;
}
n= n/10;
}
if(has_zero_one) cout<< "Yes"<<endl;
else cout<<"No"<<endl
您可以通过多种方式进行检查。这是我要做的:
int a=02345;
while(a)
{
if(a%10==0 || a%10==1)
{cout<<"the number contains 0/1"; break;}
a/=10;
}
我认为您可能最简单的方法是转换为字符串并使用std::string::find
。请参阅以下示例:
#include <iostream>
#include <sstream>
#include <stdlib.h>
int main(int argc, char** argv)
{
for (int i = 1;i<argc;i++){
int number = atoi(argv[i]);
std::string str;
std::ostringstream oss;
oss<<number;
str = oss.str();
std::cout<<"number "<<number;
if (str.find("0") != std::string::npos)
std::cout<<" contains 0"<<std::endl;
else
std::cout<<" does not contain 0"<<std::endl;
}
return 0;
}
请注意,如果您输入 0123,它将不起作用,因为在转换(使用 atoi
)中,前导 0 将被删除。但是,如果 0 位于数字中间,则它有效。
bool containsOneOrZero(unsigned int number) {
if (number == 0) return false; // because "0", you know...
while (number > 0) {
auto rem = number % 10;
number = (int) (number / 10);
if (rem == 0 || rem == 1) return false;
}
return true;
}
还没有测试过这个。
我不是 100% 确定这一点,但您可以将其转换为 char[],然后通过 for 循环检查每个字符,如果其中一个是 0 或 1,请拒绝它们。
public bool Check(int pInput)
{
std::string tempStr = "" + pInput;
const char* tempChr = tempStr.c_str();
boolean ret = true;
for(int i = 0; i < tempStr.length; i++)
{
if(tempChr[i] == "0" || tempChr[i] == 1)
{
ret = true;
}
}
return ret;
}
这将是一种可能的方法。但正如我所说,不是100%确定。
相关文章:
- 如何从也包含C++字母的文本文件中提取某些数字?
- 如何确定integer_sequence在编译时是否包含给定的数字?
- 如何生成仅包含 0 和 9 的数字
- 如何将较大数字中从0到9的单个数字放入只包含数字的数组中
- 如何检查字符串是否包含所有这些:数字、字母和特殊字符
- 正则表达式,包含名称 + "string" + 数字,没有其他内容
- 如何识别字符串只包含数字
- 如何在C++中创建 2d 数组,其中一部分包含循环计数器,另一部分包含数字列表?
- 如何对包含数字和符号的字符串进行排序?
- 查看数字是否包含在未排序的双数字间隔内的最有效方法?
- Flex 词法分析器规则,对包含连字符和斜杠的字母数字字符串具有积极的前瞻断言
- 如何允许我的程序成功读取数字包含的文件
- 如何在包含数字的.bmp(二进制图像)中执行组件标记9 4 3 6
- 搜索字符串是否至少包含一次从 0 到 9 的所有数字的最有效方法
- C++ 检查字符串是否至少包含 1 位数字和 1 个字母
- 如何为字符串编写正则表达式,其中包含一个数字至少一个数字,并且不包含任何字母
- 如果QString包含一个数字
- 用于计算不包含给定数字的第n个数字的程序
- 分类包含数字和单词的字符串向量
- 打印每行包含 n 个数字的数组