#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cout<<"input a number:";
cin>>n;
while((n>1000)||n<1)
{
cout<<"please input a real number:";
cin>>n;
}
string s_name[1000],f_name[1000];
for(int i=0;i<n;i++)
{
cin>>s_name[i]>>f_name[i];
}
//防止比较过程中断的先被找到,要对缩略语进行从长到段的排序 冒泡排序
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
{
if(s_name[i].length()<s_name[j].length())
{
swap(s_name[i],s_name[j]);
swap(f_name[i],f_name[j]);
}
}
string s;
cout<<"\n please input the content:"<<endl;
cin>>s;
for(int i=0;i<n;i++)
{
while(s.find(s_name[i])!=string::npos)
{
int index=s.find(s_name[i]);
s.erase(index,s_name[i].length());//删除简写的名称
s.insert(index,f_name[i]);//插入全称
}
}
cout<<"the full content is:"<<endl;
cout<<s<<endl;
return 0;
}
#include<iostream>
using namespace std;
struct Baidu
{
char s_name[10];
char f_name[100];
};
void sort_name(Baidu baidu[],int n)
{
for(int i=0;i<n-1;i++)
for(int j=i;j<n;j++)
{
if(strlen(baidu[i].s_name)<strlen(baidu[j].s_name))
swap(baidu[i],baidu[j]);
}
}
void replace_name(Baidu baidu[],char s[],int n)
{
int length;
char tmp[1000];
for(int i=0;i<n;i++)
{
char *p=strstr(s,baidu[i].s_name);
while(p!=NULL)
{
length=strlen(baidu[i].s_name);
*p=0;
strcpy(tmp,p+length);//把简称后面的内容全部拷贝到tmp内
//strcat(s,baidu[i].f_name);
strcat(p,baidu[i].f_name);
//strcat(s,tmp);
strcat(p+strlen(baidu[i].f_name),tmp);
p=strstr(s,baidu[i].s_name);
}
}
}
int main()
{
int n;
cout<<"input the number of s-f word:";
cin>>n;
Baidu baidu[10];
for(int i=0;i<n;i++)
cin>>baidu[i].s_name>>baidu[i].f_name;
sort_name(baidu,n);
cout<<"input the content:"<<endl;
char s[1000];
cin>>s;
replace_name(baidu,s,n);
cout<<"replaced content is:"<<endl;
cout<<s;
}
本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/archive/2012/10/02/2710518.html,如需转载请自行联系原作者