C++输入一个正整数n,找到n中最小的数位数字x,统计x出现的次数s,以及它最左侧的出现位置lpos
时间: 2024-12-20 21:19:49 浏览: 4
在C++中,你可以通过遍历每一位数字的方式来解决这个问题。首先,你需要让用户输入正整数n,然后可以按照以下步骤操作:
1. **获取用户输入**:
使用`cin`从用户那里读取正整数n。
```cpp
int n;
std::cout << "请输入一个正整数n: ";
std::cin >> n;
```
2. **初始化计数器、位置和变量**:
初始化计数器`s = 0`,最左侧的位置`lpos = -1`(表示未找到),并创建一个临时变量`current_digit`用于存储当前位的数字。
```cpp
int x, s = 0, lpos = -1;
char current_digit = '\0';
```
3. **提取每位数字**:
用`std::to_string()`将n转换成字符串,然后遍历每个字符(实际上是每一位数字)。如果找到了新的最小值且该位置未被占用,则更新`x`, `s`, 和`lpos`。
```cpp
for (size_t i = 0; i < std::to_string(n).length(); ++i) {
int temp = static_cast<int>(std::to_string(n)[i] - '0');
if (temp < x || (temp == x && i < lpos)) {
x = temp;
s = 1;
lpos = i;
} else if (temp == x) {
++s;
}
}
```
4. **输出结果**:
最终输出最小的数字`x`,它的出现次数`s`,以及最左侧的出现位置`lpos`。
```cpp
std::cout << "最小的数字位数是:" << x << ", 出现次数是:" << s << ", 最左侧的位置是:" << lpos << std::endl;
```
完整的代码示例:
```cpp
#include <iostream>
#include <string>
int main() {
int n;
std::cout << "请输入一个正整数n: ";
std::cin >> n;
int x, s = 0, lpos = -1;
char current_digit = '\0';
for (size_t i = 0; i < std::to_string(n).length(); ++i) {
int temp = static_cast<int>(std::to_string(n)[i] - '0');
if (temp < x || (temp == x && i < lpos)) {
x = temp;
s = 1;
lpos = i;
} else if (temp == x) {
++s;
}
}
std::cout << "最小的数字位数是:" << x << ", 出现次数是:" << s << ", 最左侧的位置是:" << lpos << std::endl;
return 0;
}
```
阅读全文