回 帖 发 新 帖 刷新版面

主题:初学者请教高手们一道关于字符串逆序输出的问题

使用基于对话框的应用完成功能,要求:输入任意一个字符串,字符串的格式为空格分隔的单词,没有其他标号符号,将该字符串作基于单词的逆序排列,即每个单词保持不变,但是单词的顺序颠倒.例如:I am a student   逆序变换后结果为: student a am I   要做到算法简练和界面美观.

回复列表 (共9个回复)

沙发

初学者,才更应该尝试着去写代码!!!!!!!!!!!!!!!

板凳

对话框用向导默认的,代码只需要两三句。

3 楼

我的想法是先把字符串打散成字符数组,从后往前找,以空格作为单词与单词之间的分界

4 楼

哦,再一看,我上面复错了。

我以为是完全逆序,仔细一看是部分逆序,单词不逆,但是单词的顺序逆。那两三句就未必能搞掂了。

5 楼


下面代码中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 楼

还是论剑比较厉害

7 楼


这个我以前做过了, 不是太难啊

8 楼

这个算法很简单

测试字符串的长度

然后用FOR反过来输出就可以了.

9 楼

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;

我来回复

您尚未登录,请登录后再回复。点此登录或注册