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,实际上,在这种情况下,最好使用伪语言或某种标准图表来表示行为。这样可以避免所谓的技术细节,由实现者以自己的方式来完成。它也有更好的教育效果。