c++编写函数void fun(char*a), 该函数实现的功能是:将字符串a中除前导和尾部连续的*之外,其余的*全部删除。例如字符串:***a*b**,处理后为: ***ab**。 在main函数中,从键盘输入带*且无空格的字符串,调用fun函数处理字符串,并将处理后的字符串输出到屏幕上。说明:不得使用系统提供的字符串函数。
时间: 2023-07-23 21:20:53 浏览: 72
好的,这是一个字符串处理的问题。下面是实现了题目要求的C++代码:
```c++
#include <iostream>
#include <cstring>
void fun(char* a) {
int len = strlen(a);
int i = 0, j = len - 1;
while (a[i] == '*') i++;
while (a[j] == '*') j--;
for (int k = i + 1; k < j; k++) {
if (a[k] == '*') {
int m = k + 1;
while (a[m] == '*') m++;
if (m < j) {
a[i++] = '*';
k = m;
} else {
break;
}
} else {
a[i++] = a[k];
}
}
while (i <= j) {
a[i++] = '*';
}
a[i] = '\0';
}
int main() {
char a[100];
std::cin >> a;
fun(a);
std::cout << a << std::endl;
return 0;
}
```
首先,我们需要遍历字符串找到第一个非 * 字符的位置,和最后一个非 * 字符的位置,它们之间的字符需要进行处理。处理方式是,如果当前位置是 *,则继续往后找到下一个非 * 字符,如果下一个非 * 字符的位置在最后一个非 * 字符之前,则将当前位置的 * 保留,将下一个非 * 字符之前的所有 * 跳过;如果下一个非 * 字符的位置在最后一个非 * 字符之后,则处理结束。
最后,我们需要在处理后的结果中加上前导和尾部的连续 *,使得字符串长度不变。
阅读全文