输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符 c 删除。 要求定义并调用函数delchar(str,c), 它的功能是将字符串 str 中出现的所有 c 字符删除,函数形参str的类型是字符指针,形参c的类型是char,函数类型是void。 输入输出示例:括号内为说明,无需输入输出
时间: 2023-05-31 18:19:06 浏览: 187
### 回答1:
代码如下:
#include <stdio.h>
#include <string.h>
void delchar(char *str, char c) {
int len = strlen(str);
int i, j;
for (i = , j = ; i < len; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\';
}
int main() {
int repeat;
scanf("%d", &repeat);
while (repeat--) {
char str[100], c;
scanf("%s %c", str, &c);
delchar(str, c);
printf("%s\n", str);
}
return ;
}
解释如下:
首先定义了一个函数delchar,它的功能是将字符串中出现的所有c字符删除。函数中使用了两个指针i和j,i指向原字符串中的字符,j指向新字符串中的字符。当i指向的字符不是c时,将它复制到新字符串中,同时j指针向后移动一位。最后在新字符串的末尾加上'\',表示字符串的结束。
在主函数中,先输入repeat的值,表示要进行几次操作。然后在每次操作中,输入字符串str和字符c,调用delchar函数将字符串中的c字符删除,最后输出处理后的字符串。
### 回答2:
题目要求我们定义一个函数delchar,功能是将字符串中的所有字符c都删除。那么我们可以依次遍历整个字符串,对于每一个字符,如果不是字符c,就将其加入到一个新字符串中,最后再将新字符串覆盖原字符串即可。下面是代码实现:
void delchar(char *str, char c){
char *p = str;
char *new_str = str; //新字符串从原字符串开始
while(*p){
if(*p != c){
*new_str = *p;
new_str++;
}
p++;
}
*new_str = '\0'; //新字符串结尾
}
int main(){
int repeat;
scanf("%d", &repeat);
while(repeat--){
char str[100];
char c;
scanf("%s %c", str, &c);
delchar(str, c);
printf("%s\n", str);
}
return 0;
}
示例输入:
2
hello l
world o
示例输出:
heo
wrld
### 回答3:
思路:首先我们需要读入 repeat,也就是要运算的次数。接着,我们需要一个循环来执行这个操作。在循环中,我们需要读入字符串 str 和字符 c,并且调用函数 delchar 将字符串 str 中所有的 c 字符删除。函数 delchar 的实现非常简单,我们只需要一个 for 循环遍历整个字符串,将不是 c 字符的字符依次添加到新字符串中即可。
代码如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void delchar(char *str, char c) {
int len = strlen(str);
char newStr[len];
int cnt = 0;
for(int i = 0; i < len; i++) {
if(str[i] != c) {
newStr[cnt++] = str[i];
}
}
newStr[cnt] = '\0';
strcpy(str, newStr);
}
int main() {
int repeat;
cin >> repeat;
while(repeat--) {
char str[100];
char c;
cin >> str >> c;
delchar(str, c);
cout << str << endl;
}
return 0;
}
```
此时,我们就可以通过以上代码来解决本题。
阅读全文