编写c++程序函数 void fun(char *a),该函数实现的功能是:将字符串a 中除前导和尾部连续的*之外,其余的*全部删除。例如字符串: ***a*b**,处理后为: ***ab**。在 main函数中,从键盘输入带*且无空格的字符串,调用 fun 函数处理字符串,并将处理后的字符串输出到屏幕上。说明:不得使用系统提供的字符串函数。
时间: 2023-07-23 09:20:52 浏览: 94
好的,这是一个比较基础的字符串处理问题,以下是实现该函数和 main 函数的代码:
```c++
#include <iostream>
using namespace std;
void fun(char *a) {
int len = strlen(a);
int start = 0, end = len - 1;
// 找到第一个非 * 字符的位置
while (a[start] == '*') {
start++;
}
// 找到最后一个非 * 字符的位置
while (a[end] == '*') {
end--;
}
// 将中间的连续 * 字符删除
int i, j;
for (i = start, j = start; i <= end; i++) {
if (a[i] != '*') {
a[j++] = a[i];
} else if (i > 0 && a[i-1] != '*') {
a[j++] = a[i];
}
}
// 在结尾添加 '\0' 字符串结束符
a[j] = '\0';
}
int main() {
char str[100];
cout << "请输入带*且无空格的字符串: ";
cin >> str;
fun(str);
cout << "处理后的字符串为: " << str << endl;
return 0;
}
```
函数 `fun` 的实现思路是:
1. 找到第一个非 * 字符的位置和最后一个非 * 字符的位置。
2. 遍历字符串,将中间的连续 * 字符删除。
3. 在结尾添加字符串结束符 '\0'。
在 main 函数中,我们首先从键盘输入带*且无空格的字符串,然后调用 fun 函数处理该字符串,并将处理后的字符串输出到屏幕上。
阅读全文