输入一个字符串,以回车结束(字符串长度不超过 100)。
该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。
现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入格式
输入共 3 行。
第 1 行是包含多个单词的字符串 s;
第 2 行是待替换的单词 a(长度不超过 100);
第 3 行是 a 将被替换的单词 b(长度不超过 100)。
输出格式
共一行,输出将 s 中所有单词 a 替换成 b 之后的字符串。
输入样例:
You want someone to help you
You
I
输出样例:
I want someone to help you
c++代码(方法1):
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string s,a,b;
getline(cin,s);
cin>>a>>b;
stringstream ssin(s);//将字符串转化为字符串流
string str;
while(ssin>>str)//ssin相当于cin
{
if(str==a) cout<<b<<' ';
else cout<<str<<' ';
}
return 0;
}
c++代码(方法2):
#include<iostream>
#include<string>
using namespace std;
int main(){
string s, a, b, t, ans;
getline(cin,s), getline(cin,a), getline(cin,b);
int len = s.size();
for(int i=0; i<len; i++){
while(s[i]!=' ' && i < len){
t += s[i];
i++;
}//通过while循环找到每一个单词并赋值给t
if(t == a)//判断该单词是不是所给的替换单词
{
t = b;
}
ans += t + ' ';//输出单词加空格
t = "";//每次while循环一次就要重置一次t的值
}
cout << ans;
return 0;
}
c语言代码:
#include<stdio.h>
#include<string.h>
int main()
{
int count=0,len0;
char str0[201],str1[101],str2[102],str3[102]={0};
gets(str0);
gets(str1);
gets(str2);
len0=strlen(str0);
for(int i=0;i<=len0;i++)
{
if(str0[i]!=' '&&str0[i]!='\0')//可以理解为一个单词一个单词找,找到该单词后退出if循环
{
str3[count++]=str0[i];
}
else
{
if(strcmp(str3,str1)==0)
{
printf("%s",str2);
}
else
{
printf("%s",str3);
}
if(str0[i]!='\0')
printf(" ");
memset(str3,0,sizeof(str3));//memset函数用把str的内存初始化,用于接收第二个单词并输出
count=0;//注意角标也要初始化为0
}
}
printf("\n");
return 0;
}