本题要求实现一个函数和统计,任意整数中某个位数出现的次数
时间: 2024-01-09 19:04:10 浏览: 165
思路:
1. 将整数转换成字符串,方便查找每个数字
2. 依次遍历字符串中每个字符,如果该字符等于目标位数的字符,则计数器加1
3. 返回计数器的值
代码实现:
```python
def count_digit(n, d):
# 将整数转换成字符串
s = str(n)
# 初始化计数器
count = 0
# 遍历字符串中每个字符,如果该字符等于目标位数的字符,则计数器加1
for i in range(len(s)):
if s[i] == str(d):
count += 1
# 返回计数器的值
return count
```
测试样例:
```python
print(count_digit(12345, 3)) # 1
print(count_digit(12345, 0)) # 0
print(count_digit(12345, 5)) # 1
print(count_digit(12345, 1)) # 1
print(count_digit(11111, 1)) # 5
```
运行结果:
```
1
0
1
1
5
```
相关问题
C++编写一个子函数判断任意正整数的位数,要求在主函数中输入一个正整数,并在主函数中输出结果。如果不是正整数,输出0。
在C++中,你可以创建一个名为`count_digits`的辅助函数,用于计算给定正整数的位数。然后在主函数`main`中获取用户输入,检查是否为正整数,再调用这个辅助函数。以下是实现的一个例子:
```cpp
#include <iostream>
// 辅助函数,计算正整数的位数
size_t count_digits(int num) {
if (num <= 0) { // 非正整数
return 0;
}
return static_cast<size_t>(std::log10(num)) + 1; // 对于非零数字,位数等于10的幂次加一
}
int main() {
int input;
std::cout << "Please enter a positive integer: ";
std::cin >> input;
// 检查输入是否为正整数
if (input > 0) {
size_t digits = count_digits(input);
std::cout << "The number of digits in the input is: " << digits << std::endl;
} else {
std::cout << "Input is not a positive integer. Result is 0.\n";
}
return 0;
}
```
在这个程序中,我们首先导入了`<iostream>`库来处理输入和输出。`count_digits`函数接受一个整数作为参数,如果该数是非正数,则返回0;否则,通过计算对数来确定位数。在`main`函数中,从用户那里获取输入,如果是正整数则调用`count_digits`并显示结果,否则输出0。
编写递归函数int count(int n),统计任意正整数n的位数,在main函数中输入整数m,然后调用递归函数输出统计结果。
以下是递归函数int count(int n)的实现:
```c++
#include <iostream>
using namespace std;
int count(int n) {
if (n < 10) {
return 1;
}
else {
return 1 + count(n / 10);
}
}
int main() {
int m;
cout << "请输入一个正整数:";
cin >> m;
cout << m << "的位数为:" << count(m) << endl;
return 0;
}
```
该函数的思路是,如果n小于10,则n只有一位,返回1;否则,n的位数为1加上n/10的位数。这个递归过程会一直进行到n小于10为止。在main函数中,我们先输入一个正整数m,然后调用count函数输出m的位数。
阅读全文