如果我们在int long中有经典的十进制格式,我们可以这样做:
const long int NUMBER = 4577;
const long int DIGIT_TO_FIND = 5;
long int thisNumber = NUMBER >= 0 ? NUMBER : -NUMBER;
long int thisDigit;
while (thisNumber != 0)
{
thisDigit = thisNumber % 10;
thisNumber = thisNumber / 10;
if (thisDigit == DIGIT_TO_FIND)
{
printf("%d contains digit %d", NUMBER, DIGIT_TO_FIND);
break;
}
}
但是 int long 中二进制代表或八进制代表呢? 我们有:
const long int NUMBER = 01011111; // octal
const long int DIGIT_TO_FIND1 = 0;
const long int DIGIT_TO_FIND2 = 1;
正确输入:
01010101
11111111
输入错误:
02010101 (because two)
00000009 (because nine)
我们需要检查 int long是否仅包含0或1 。 检查正确输入的最简单方法是什么?也许只是简单的问题,但不知道,谢谢。
答案 0 :(得分:1)
要检查数字是否为有效二进制数字,请将其与1
进行比较:
if (thisDigit > 1)
{
printf("%d contains digit %d", NUMBER, thisDigit);
break;
}
如@Pubby所述,您有一个八进制数而不是十进制数,因此请使用8
代替10
来计算数字:
thisDigit = thisNumber % 8;
thisNumber = thisNumber / 8;
答案 1 :(得分:1)
如果我理解你的问题 -
#include <iostream>
bool check(int number, int search_1, int search_2)
{
while(number > 0)
{
int digit = number % 10;
number = number / 10;
if (digit != search_1 && digit != search_2)
return false;
}
return true;
}
int main()
{
const int DIGIT_TO_FIND1 = 0;
const int DIGIT_TO_FIND2 = 1;
int number1 = 1001001;
std::cout << "Checking " << number1 << " : " << check(number1, DIGIT_TO_FIND1, DIGIT_TO_FIND2) <<" \n";
int number2 = 12110101;
std::cout << "Checking " << number2 << " : " << check(number2, DIGIT_TO_FIND1, DIGIT_TO_FIND2) <<" \n";
}
答案 2 :(得分:0)
我的解决方案。这很简单。
bool check(int long number)
{
return ((number % 10 != 0) && (number % 10) != 1);
}