从键盘输入一个字符串(保存到字符数组str1中,串中可以包含空格)和一个字符ch,删除str1中所有字符ch并输出删除后的字符串。请填空完成相应程序功能。
时间: 2023-05-31 14:18:20 浏览: 356
【Python练习】统计字符串中的字符个数
### 回答1:
以下是一个示例程序:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
const int MAX_LEN = 100;
char str1[MAX_LEN];
char ch;
cout << "请输入一个字符串(可以包含空格):";
cin.getline(str1, MAX_LEN);
cout << "请输入要删除的字符:";
cin >> ch;
int len = strlen(str1);
int j = ;
for (int i = ; i < len; i++) {
if (str1[i] != ch) {
str1[j++] = str1[i];
}
}
str1[j] = '\';
cout << "删除后的字符串为:" << str1 << endl;
return ;
}
```
程序的核心部分是一个循环,遍历输入的字符串,将不等于要删除的字符的字符复制到一个新的位置。最后,将新位置的字符数组末尾设置为'\',以表示字符串的结束。
### 回答2:
假设键盘输入的字符串为str1,需要删除的字符为ch,为了方便删除操作,可以定义一个新的字符数组str2,并遍历str1,将非ch字符逐个存入str2中。最后输出str2即为删除后的字符串。
具体实现可以采用以下思路:
1. 声明字符数组str1、str2和字符ch,利用scanf函数从键盘读入待删除的字符串和字符ch。
2. 声明变量i和j,初始化为0。
3. 用for循环遍历str1,如果字符不是ch,则存入str2中,即 str2[j++]=str1[i]。
4. 当循环结束后,将str2的末尾加上结束符'\0',确保输出的字符串是一个合法的字符串。
5. 最后输出str2即为删除后的字符串。
完整代码如下:
```
#include <stdio.h>
int main()
{
char str1[100], str2[100], ch;
int i = 0, j = 0;
printf("请输入一个字符串:");
scanf("%[^\n]%*c", str1); // 读入带空格的字符串
printf("请输入需要删除的字符:");
scanf("%c", &ch);
// 遍历str1,将非ch字符存入str2中
for (i=0; str1[i]!='\0'; i++) {
if (str1[i] != ch) {
str2[j++] = str1[i];
}
}
str2[j] = '\0'; // 加入结束符,确保是合法字符串
printf("删除后的字符串为:%s\n", str2);
return 0;
}
```
需要注意的是,由于输入的字符串可能含有空格,采用scanf函数时需要使用格式控制符"%[^\n]%*c",表示输入除了"\n"以外的所有字符,并消耗掉输入缓冲区中的换行符。另外,还需要加入结束符,确保删除后的字符串是一个合法的字符串。
### 回答3:
程序如下:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[100];
char ch;
printf("请输入一个字符串:");
scanf("%[^\n]%*c", str1); // 读取包含空格的字符串
printf("请输入要删除的字符:");
scanf("%c", &ch);
int len = strlen(str1);
for (int i = 0; i < len; i++) {
if (str1[i] == ch) {
for (int j = i; j < len; j++) {
str1[j] = str1[j+1]; // 删除字符ch
}
len--; // 字符串长度减一
i--; // 偏移下标i
}
}
printf("删除后的字符串为:%s\n", str1);
return 0;
}
```
这个程序先读取用户输入的字符串和要删除的字符,使用嵌套循环遍历字符串str1,如果找到字符ch,则将其从str1中删除,字符串长度len减一,i偏移一个位置。最后输出删除后的字符串str1。
阅读全文