主题:初学者请教高手们一道关于字符串逆序输出的问题
donkey777
[专家分:0] 发布于 2007-12-23 11:00:00
使用基于对话框的应用完成功能,要求:输入任意一个字符串,字符串的格式为空格分隔的单词,没有其他标号符号,将该字符串作基于单词的逆序排列,即每个单词保持不变,但是单词的顺序颠倒.例如:I am a student 逆序变换后结果为: student a am I 要做到算法简练和界面美观.
回复列表 (共9个回复)
沙发
骑猪拱地 [专家分:100] 发布于 2007-12-24 10:50:00
初学者,才更应该尝试着去写代码!!!!!!!!!!!!!!!
板凳
华山论剑 [专家分:5310] 发布于 2007-12-24 14:10:00
对话框用向导默认的,代码只需要两三句。
3 楼
moonblade [专家分:120] 发布于 2007-12-24 14:48:00
我的想法是先把字符串打散成字符数组,从后往前找,以空格作为单词与单词之间的分界
4 楼
华山论剑 [专家分:5310] 发布于 2007-12-24 15:06:00
哦,再一看,我上面复错了。
我以为是完全逆序,仔细一看是部分逆序,单词不逆,但是单词的顺序逆。那两三句就未必能搞掂了。
5 楼
华山论剑 [专家分:5310] 发布于 2007-12-24 15:28:00
下面代码中m_szSentence是一个编辑控件的成员变量:
CString s;
int i;
while ( (i=m_szSentence.ReverseFind(' '))!=-1)
{
s += m_szSentence.Mid(i+1) + " ";
m_szSentence = m_szSentence.Left(i);
}
m_szSentence = s + m_szSentence;
UpdateData(false);
6 楼
moonblade [专家分:120] 发布于 2007-12-24 16:11:00
还是论剑比较厉害
8 楼
lpf46261479 [专家分:970] 发布于 2007-12-25 20:25:00
这个算法很简单
测试字符串的长度
然后用FOR反过来输出就可以了.
9 楼
Raylee [专家分:1090] 发布于 2007-12-28 10:37:00
string str;
list<string> l;
while(cin>>str)
l.push_front(str);
for (list<string>::iterator it=l.begin();it!=l.end();++it)
cout<<*it<<endl;
我来回复