C++ 确定一个数字是否包含用于类分配的数字

C++ 确定一个数字是否包含用于类分配的数字,c++,parsing,digit,C++,Parsing,Digit,编写一个名为containsDigit的函数,确定数字是否包含特定数字 标题应如下所示: bool containsDigit(int number, int digit); 如果数字包含数字,则函数应返回true。否则,函数应返回false Input: 147 9 Output: false 我不知道为什么当我这样写的时候我总是弄错: bool containsDigit(int number, int digit); int main() { double con; i

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

标题应如下所示:

bool containsDigit(int number, int digit);
如果数字包含数字,则函数应返回
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);
  }
}
bool包含数字(整数,整数);
int main(){
双控;
整数,数字;
cout>数字>>数字;
con=容器数字(数字);
cout(0){
a=a+1;
数字=数字/10;
}
法庭(1){
a=a-1;
如果(b/pow(10,a)==数字){

cout解决问题的关键是不要跳转到代码,从问自己如何提取数字开始

%
运算符与
10
一起使用。这是您的
当前数字%10
。为什么
10
?而不是任何其他数字?-我们需要得到除法后的余数,这是运算符所做的。任何其他数字都不会将其截断,请在计算器上尝试

到目前为止还不错,现在你还需要做什么?你需要继续搜索并比较剩余的数字。
147%10
已经给了你
7
,你想看看
14
,把14从7中分离出来,除以10,得到不包括7的剩余部分。继续扫描,直到找到t为止结果是数字或数字不足。这里有一个问题,后续问题,您的代码适用于负数吗?我将留给您来解决

我们只剩下以下代码

bool containsDigit(int number, int digit)
{
    while (number != 0)
    {
        int curr_digit = number % 10;
        if (curr_digit == digit) return true;
        number /= 10;
    }

    return false;
}

解决问题的关键是不要跳转到代码,从问自己如何提取数字开始

%
运算符与
10
一起使用。这是您的
当前数字%10
。为什么
10
?而不是任何其他数字?-我们需要得到除法后的余数,这是运算符所做的。任何其他数字都不会将其截断,请在计算器上尝试

到目前为止还不错,现在你还需要做什么?你需要继续搜索并比较剩余的数字。
147%10
已经给了你
7
,你想看看
14
,把14从7中分离出来,除以10,得到不包括7的剩余部分。继续扫描,直到找到t为止结果是数字或数字不足。这里有一个问题,后续问题,您的代码适用于负数吗?我将留给您来解决

我们只剩下以下代码

bool containsDigit(int number, int digit)
{
    while (number != 0)
    {
        int curr_digit = number % 10;
        if (curr_digit == digit) return true;
        number /= 10;
    }

    return false;
}

你还记得如何用一个循环将一个数字分割成单独的数字吗?这样做。每次你得到一个数字时,检查它是否与你要查找的数字匹配。如果你到达循环的末尾,则否,该数字不包含该数字。bool包含数字(int number,int digit){int a(0),b;b=number;while(number>0){a=a+1;number=number/10;}您是否可以将函数定义为返回
bool
。为什么将结果分配给
double
?因为问题需要我定义true或false@coco我没有问你为什么要定义它,这是显而易见的。我问你为什么要把结果分配给一个双con;
?你也应该注意到我们的函数不返回任何内容。您还记得如何使用循环将数字拆分为各个数字吗?请执行此操作。每次获取数字时,请检查它是否与您要查找的数字匹配。如果到达循环的末尾,则为否,该数字不包含该数字。bool包含数字(int number,int digit){int a(0),b;b=number;while(number>0){a=a+1;number=number/10;}您是否可以将函数定义为返回
bool
。为什么将结果分配给
double
?因为问题需要我定义true或false@coco我没有问你为什么要定义它,这是显而易见的。我问你为什么要把结果分配给一个双con;?你也应该注意到我们的函数不返回任何内容。虽然
while(number)
有效,但它依赖于初学者无法立即发现的技术细节。我建议
while(number!=0)
会更明确。@Craigyong,实际上,在这种情况下,最好使用伪语言或某种标准图表来表示行为。这样可以避免所谓的技术细节,由实现者以自己的方式来完成。它也有更好的教育效果。虽然
while(数字)
是有效的,它依赖于初学者无法立即发现的技术细节。我建议
while(number!=0)
会更明确。@Craigyong,实际上,在这种情况下,最好使用伪语言或某种标准图表来表示行为。这样可以避免所谓的技术细节,由实现者以自己的方式来完成。它也有更好的教育效果。