c++输入一个正整数n和一个数字x(0≤x≤9)。试计算在闭区间1到n的所有整数中,数字x共出现了多少次。
时间: 2024-10-10 21:14:59 浏览: 26
在 C++ 中,你可以通过遍历从 1 到 n 的所有整数,并对每个数字进行计数,来解决这个问题。这里可以使用位运算或者字符串处理的方式来统计 x 出现的次数,因为数字 x 只能出现在个位上。
以下是使用位运算的一个简单示例:
```cpp
#include <iostream>
int count appearances(int n, int x) {
// 将 x 转换为二进制表示,然后取个位(右移一位并按位与 1)
int bitPosition = (x & -x);
// 使用 n 对 x 进行位操作,每次将 n 向左移动 bitPosition 位,直到 n 变为 0
while (n > 0) {
if ((n & x) != 0) { // 如果 n 的该位置为 1,则说明有 x 出现
++count;
}
n &= ~bitPosition; // 移除已考虑的位
x >>= 1; // x 向右移一位,考虑下一位
}
return count;
}
int main() {
int n, x;
std::cout << "请输入一个正整数 n 和一个数字 x(0 <= x <= 9):" << std::endl;
std::cin >> n >> x;
int result = appearances(n, x);
std::cout << "数字 " << x << " 在 1 到 " << n << " 中出现了 " << result << " 次。" << std::endl;
return 0;
}
```
在这个程序中,我们首先找到 x 的最右边的 1(即 bitPosition),然后在 n 上反复应用位与 (~) 和位左移 (&, <<),直到 n 变为 0。每当我们发现 n 与 x 的对应位为 1 时,就增加计数器。
阅读全文