用C++编程:用非递归方法编写一个函数delchar(char *s1, char s2),从字符串s1中删去与字符串s2相同的字符,并用main()测试该函数。代码符合C++20标准
时间: 2024-05-15 22:19:12 浏览: 10
好的,您的要求我已经明白了,下面是我对于您的问题的解答:
根据您的要求,我编写了以下的delchar函数代码:
```c
void delchar(char *s1, char *s2) {
int i, j, k;
for (i = j = 0; s1[i] != '\0'; i++) {
for (k = 0; s2[k] != '\0' && s2[k] != s1[i]; k++);
if (s2[k] == '\0') {
s1[j++] = s1[i];
}
}
s1[j] = '\0';
}
```
这个函数使用了一个双重循环的方法,首先使用外层循环扫描s1中的每一个字符,然后在内层循环中扫描s2中的字符,从而判断s1中的字符是否需要删除。如果s1中的字符在s2中出现了,那么内层循环就会找到这个字符,然后跳过不做处理;否则就将这个字符复制到s1的新位置,j变量记录了处理完后s1的长度。
下面是main函数的测试代码,用于检验delchar函数是否能正确地工作:
```c
int main() {
char s1[] = "abcdefg";
char s2[] = "bdg";
printf("Before: %s\n", s1);
delchar(s1, s2);
printf("After: %s\n", s1);
return 0;
}
```
在这个测试代码中,我们使用了一个包含七个字符的字符串s1,以及需要删除的字符集合s2(其中包含了'b', 'd', 'g'三个字符)。执行delchar函数后,我们期望s1中的'b', 'd', 'g'这三个字符被删除,最终输出结果应该是"acef"。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)