您的位置:首页 > 其它

很恶心的一个关于字符串的题目!

2009-06-26 16:14 232 查看
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{ int n,c,i,j,h[10];       //n用来存储字符串长度,i j用来计数,h存放查找的字符串出现的位置
char st[100],s,z[20],x[20],m;  //s在空格转换和判断是否是用到,m判断是用到,z x用来存放要查询的字符串
cout<<"请输入一段英文句子:";
gets(st);
n=strlen(st);
while(st[n-1]==' ')      //把后面的空格放到前面
{ s=st[n-1];
for(i=n-1;i>=0;i--)
{ if(i==0) break;
st[i]=st[i-1];
}
st[i]=s;
}
for(i=n-1;i>=0;i--)     //把中间多余的空格去掉
{ if(i==0) break;
if(st[i]==' '&&st[i-1]==' ')
{ s=st[i];
for(j=i;j>=0;j--)
{ if(j==0) break;
st[j]=st[j-1];
}
st[j]=s;
}
}
i=0;
while(st[i]==' ')
{ i++;
}
//i=i+1;
string str(st);
str.erase(0,i);
cout<<"调整后的句子为:"<<str<<endl;            //输出调整后的语句
//i=0;
//h[i]=0;
cout<<"要查询?(y/n):";   //查询
cin>>s;
while(s=='y')
{ i=0;
h[i]=0;
cout<<"请输入要查询的单词:";
cin>>z;
c=strlen(z);
while(i<n)
{ if(i==0)
h[i]=str.find(z,0);
else
h[i]=str.find(z,h[i-1]+1);
if(h[i]==-1) break;
i++;
}
cout<<"出现的次数:"<<i<<endl;
if(i!=0)
{
cout<<"位置为:";     //输出位置
for(j=0;j<i;j++)
cout<<h[j]+1<<' ';
cout<<endl;
cout<<"是否要替换改单词?:(y/n)";   //替换单词
cin>>m;
if(m=='y')
{ cout<<"请输入要替换成的单词:";
cin>>x;

do
{ cout<<"要替换第几个:";
cin>>j;
}while(j<1||j>i);

str.replace(h[j-1],c,x);
}
}
else cout<<"你要查找的单词不存在!"<<endl;
cout<<"该句子变成:"<<str<<endl;
cout<<"是否要继续查询?(y/n):";
cin>>s;
}
//h=str.find("my");
cout<<"最后的句子为:"<<str<<endl;
return 0;
}


包含很多调试信息!

作业的第三题!

3、用字符数组保存一个英文句子。
(1) 删除该英文句子的前导空格、后导空格、句中多余空格(单词之间只留一个空格)。
(2) 统计句中某单词出现的次数。
(3) 查找并替换某单词。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐