c++编写一个函数,编写函数void fun(char*a), 该函数实现的功能是:将字符串a中除前导和尾部连续的星号之外,其余的星号全部删除。例如字符串 星号星号星号a星号b星号星号,处理后为: 星号星号星号ab星号星号。 在main函数中,从键盘输入带星号且无空格的字符串,调用fun函数处理字符串
时间: 2024-02-27 21:58:36 浏览: 74
以下是实现该功能的 C++ 代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char* a) {
int len = strlen(a);
int left = 0, right = len - 1;
while (a[left] == '*') left++; // 跳过前导星号
while (a[right] == '*') right--; // 跳过尾部星号
int j = left;
for (int i = left; i <= right; i++) {
if (a[i] == '*') {
if (i > 0 && a[i - 1] != '*' && j > left) {
// 删除中间的星号
j--;
a[j] = '*';
}
} else {
a[j] = a[i];
j++;
}
}
a[j] = '\0';
}
int main() {
char a[100];
cout << "请输入字符串: ";
cin >> a;
fun(a);
cout << "处理后的字符串为: " << a << endl;
return 0;
}
```
在上面的代码中,我们使用双指针的方法来去除前导和尾部连续的星号。然后,我们遍历字符串,遇到星号时,如果前面不是星号并且不是第一个字符,就将当前星号删除,否则保留当前星号。最后,将字符串末尾加上结束符号'\0',以确保输出正确的字符串。
阅读全文