输入一个正整数n,找到n中最小的数位数字x,统计x出现的次数s,以及它最左侧的出现位置lposC++
时间: 2024-12-20 09:19:51 浏览: 4
当你需要解决这个问题时,你可以通过编写一个C++程序来完成。首先,你需要遍历输入的正整数n,将每个数字存储在一个数组中,并同时记录下最小的数字x、它的出现次数s,以及最左侧的位置lpos。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
std::pair<int, int> findMinDigitAndCounts(int n) {
std::string num_str = std::to_string(n);
int min_digit = num_str[0], count = 1, lpos = 0;
for (int i = 1; i < num_str.length(); ++i) {
if (num_str[i] < min_digit) {
min_digit = num_str[i];
lpos = i; // 更新最左侧位置
} else if (num_str[i] == min_digit) {
++count; // 若数字相等,则计数加一
}
}
return std::make_pair(min_digit, count);
}
int main() {
int n;
std::cout << "请输入一个正整数: ";
std::cin >> n;
auto result = findMinDigitAndCounts(n);
int x = result.first;
int s = result.second;
int lpos = result.second > 0 ? lpos : -1; // 如果最小数字只出现一次,lpos为-1
std::cout << "最小的数位数字是: " << x << std::endl;
std::cout << "该数字出现了 " << s << " 次" << std::endl;
std::cout << "它最左侧的位置是: " << lpos << std::endl;
return 0;
}
```
在这个程序中,`findMinDigitAndCounts`函数接收一个整数n作为输入,然后返回一个包含最小数字及其出现次数的pair。在main函数里,我们获取用户的输入并打印结果。
阅读全文