编写一个名为containsDigit
的函数,用于确定数字是否包含特定数字。
标题应如下所示:
bool containsDigit(int number, int digit);
如果number包含数字,则该函数应返回true
。否则,该函数应返回false
。
Input:
147 9
Output:
false
我不知道为什么我这样写的时候总是弄错:
bool containsDigit(int number, int digit);
int main() {
double con;
int number, digit;
cout << "Input a number and a digit:\n";
cin >> number >> digit;
con = containsDigit(number, digit);
cout << con;
return 0;
}
bool containsDigit(int number, int digit) {
int a(0), b;
b = number;
while (number > 0) {
a = a + 1;
number = number / 10;
}
cout << a;
while (a > 1) {
a = a - 1;
if (b / pow(10, a) == digit) {
cout << "true\n";
break;
} else {
if (a == 1)
cout << "false\n";
else
cout << "";
}
b = b % pow(10, a);
}
}
答案 0 :(得分:7)
打破问题是关键不要跳到代码,首先问问自己,我如何提取数字?
将%
运算符与10
一起使用。这是你的current number % 10
。为什么10
?而不是任何其他数字? - 我们需要得到除法之后的余数,这是modulo运算符所做的任何其他数字不会削减它,在计算器上尝试。
到目前为止一切顺利,你现在还需要做什么?您需要在搜索中继续前进并比较剩余的数字。 147 % 10
已经为您7
提供了14
,您希望查看bool containsDigit(int number, int digit)
{
while (number != 0)
{
int curr_digit = number % 10;
if (curr_digit == digit) return true;
number /= 10;
}
return false;
}
,将您除以7除以7,将剩下的部分除以7。继续扫描,直到找到找到数字或数字不是结果。这里有一个问题,一个跟进,你的代码是否适用于负数?我会把这个留给你来解决。
我们留下以下代码,
$date = date_create_from_format('d/M/Y:H:i:s', $string);
$date->getTimestamp();