编写一个名为的函数containsDigit,用于确定数字是否包含特定数字.
标题应如下所示:
bool containsDigit(int number, int digit);
Run Code Online (Sandbox Code Playgroud)
如果number包含数字,则该函数应返回true.否则,该函数应该返回false.
Input:
147 9
Output:
false
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我这样写的时候总是弄错:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
打破问题的关键是不要跳到代码,首先问问自己,如何提取数字?
使用%运算符10.那是你的current number % 10.为什么10?而不是任何其他数字?- 我们需要得到除法后的余数,这是模数运算符所做的任何其他数字不会削减它,在计算器上尝试.
到目前为止一切都很好,现在还需要做什么?您需要在搜索中继续前进并比较剩余的数字.147 % 10已经给了你7,你想要看看14,将你从7分开,你除以10并得到剩下的部分不包括7.你继续你的扫描,直到你找到数字或结果是数字.这里有一个问题,跟进,您的代码是否适用于负数?我会把它留给你弄清楚.
我们留下以下代码,
bool containsDigit(int number, int digit)
{
while (number != 0)
{
int curr_digit = number % 10;
if (curr_digit == digit) return true;
number /= 10;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)