确定数字是否包含类分配的数字

coc*_*oco 0 c++ parsing digit

编写一个名为的函数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)

Sam*_*ail 7

打破问题的关键是不要跳到代码,首先问问自己,如何提取数字?

使用%运算符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)