C++ 在主函数中定义一个一维宇符数组,从键盘输入一串末排序的字符存入数组,在被调函数(del) 中删除一维数组中所有相同的字符,使之只保留一个,被调函数返回删除的字符个数,主调函数输出删除后的字符串。
时间: 2024-03-02 13:54:29 浏览: 70
好的,以下是实现该功能的C++代码:
```c++
#include <iostream>
using namespace std;
int del(char arr[], int n) {
int cnt = 0; // 记录删除的字符个数
for (int i = 0; i < n; i++) {
if (arr[i] == '\0') continue; // 已删除的字符,跳过
for (int j = i + 1; j < n; j++) {
if (arr[j] == '\0') continue; // 已删除的字符,跳过
if (arr[i] == arr[j]) {
arr[j] = '\0'; // 标记为已删除
cnt++;
}
}
}
return cnt;
}
int main() {
const int MAX_LEN = 100;
char arr[MAX_LEN];
cout << "请输入一串末排序的字符:" << endl;
cin >> arr;
int n = strlen(arr);
int cnt = del(arr, n);
cout << "删除了" << cnt << "个字符,删除后的字符串为:" << endl;
for (int i = 0; i < n; i++) {
if (arr[i] != '\0') cout << arr[i];
}
cout << endl;
return 0;
}
```
首先在主函数中定义一个一维字符数组 `arr`,并从键盘输入一串末排序的字符存入该数组。然后调用 `del` 函数进行字符删除操作,并将删除的字符个数保存在变量 `cnt` 中。最后输出删除后的字符串。
在 `del` 函数中,我们使用两个循环来遍历一维字符数组。第一个循环控制比较的起始位置,第二个循环控制比较的终止位置。如果发现有相同的字符,就将后面的字符标记为已删除,然后继续比较下一个字符。最后返回删除的字符个数。注意,我们使用字符 `\0` 来标记已删除的字符,而不是真正删除字符。这是因为在后面输出删除后的字符串时,我们需要保留未删除的字符,而不是留下空洞。
阅读全文