题目描述:
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如:第一个字符串是"They are students.",第二个字符串是”aeiou"。删除之后的第一个字符串变成"Thy r stdnts."。保证两个字符串的长度均不超过100。
输入描述:
输入两行,每行一个字符串。
输出描述:
输出删除后的字符串。
示例1
输入:
They are students.
aeiou
输出:
Thy r stdnts.
解题思路:
在本题中,需要将b字符串包含的字符在a中都进行删除,所以可以设立两个字符数组,用于存储字符信息,然后利用两个for循环将b中所有的字符在a中查找出来,并进行标记,本次是将查找到的字符替换为‘\\’即\,然后将替换过后的a字符数组中的非\字符提取出来到数组c中,这样就得到了想要的结果。
注意:
①本题是将所有b字符串包含的字符在a中都进行删除,不是进行字符串的匹配。
代码:
#include<iostream>
#define MAX 101
using namespace std;
int main()
{
int num_a = 0; //记录字符串a的个数
int num_b = 0;
char a[MAX] = {'\0'};
char b[MAX] = {'\0'};
char ch;
//输入字符串a
for(int i=0;(ch=getchar()) != '\n';i++) //表示输入不换行
{
a[i] = ch;
num_a++;
}
//输入字符串b
for(int i=0;(ch=getchar()) != '\n';i++)
{
b[i] = ch;
num_b++;
}
//查找
for(int i=0;i<num_a;i++)
{
for(int j=0;j<num_b;j++)
{
if(a[i] == b[j]) //表示匹配成功
{
//将对应字符进行标记
a[i] = '\\';
}
}
}
//将新字符串存储出来(删除被标记的字符)
char c[MAX] = {'\0'}; //用于存储新的字符串
int num_c = 0;
for(int i=0;i<num_a;i++)
{
if(a[i] != '\\')
{
c[num_c++] = a[i];
}
}
//输出
for(int i=0;i<num_c;i++)
{
cout<<c[i];
}
system("pause");
return 0;
}
标签:字符,传智杯,ch,int,第六届,num,字符串,输入
From: https://blog.csdn.net/weixin_66512566/article/details/142816803