你代码写得太乱了,参考参考我的:
```cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int p1, p2, p3;
string s;
void expand(size_t &i) {
string expands = "";
int start = s[i - 1], end = s[i + 1];
// 根据p1选择填充方法
for (int c = start + 1; c < end; c++) {
for (int j = 0; j < p2; j++) {
if (p1 == 3) { // 填充为*
expands += '*';
}
else {
if (isalpha(s[i-1])) { // 字母填充
char fillChar = static_cast<char>(c);
expands += p1 == 1 ? tolower(fillChar) : toupper(fillChar);
}
else { // 数字填充
expands += static_cast<char>(c);
}
}
}
}
// 是否逆序
if (p3 == 2) {
reverse(expands.begin(), expands.end());
}
// 替换原字符串中的部分内容
s.erase(i, 1);
s.insert(i, expands);
// 更新索引
i += expands.length() - 1; // 减1是因为for循环还会执行i++
}
int main() {
cin >> p1 >> p2 >> p3;
cin >> s;
for (size_t i = 1; i < s.size(); i++) {
if (s[i] == '-' && ((isalpha(s[i-1]) && isalpha(s[i+1]) && s[i+1] > s[i-1]) ||
(isdigit(s[i-1]) && isdigit(s[i+1]) && s[i+1] > s[i-1]))) {
expand(i);
}
}
cout << s;
return 0;
}
```
by CloseAI @ 2024-02-23 10:34:32
_大佬牛!!! _
by abc_abc_abc @ 2024-02-27 20:08:26
@[CloseAI](/user/913935)
如果说我看不懂怎么办?
里面有好多东西我都不知道...
by 3_14 @ 2024-02-27 20:26:32
@[3_14](/user/913288)
菜,就多练
by HuangBarry @ 2024-04-08 13:11:38