确定数字是否包含 class 赋值的数字

Determine if a number contains a digit for class assignment

编写一个名为 containsDigit 的函数来确定一个数字是否包含特定数字。

header 应如下所示:

bool containsDigit(int number, int digit);

如果数字包含数字,那么函数应该return true。否则,函数应该 return 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);
  }
}

分解问题的关键是不要跳到代码,先问问自己,我如何提取数字?

% 运算符与 10 结合使用。那是你的 current number % 10。为什么 10?而不是任何其他号码? - 我们需要得到除法后的余数,这就是 modulo 运算符所做的任何其他数字都不会削减它,请在计算器上尝试一下。

到目前为止一切顺利,现在您还需要做什么?您需要继续搜索并比较剩余的数字。 147 % 10 已经给了你 7 并且你想查看 14,将 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;
}