首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

基础类知识(要求严格的字符串倒退输出),求最优解法,该如何处理

2012-03-07 
基础类知识(要求严格的字符串倒退输出),求最优解法本人很懒,积分很少..........................要求是将

基础类知识(要求严格的字符串倒退输出),求最优解法
本人很懒,积分很少
..........................
要求是将一个字符串倒序输出例如字符串“i love you”,输出为“you love i”
字符长度不限,并且字符保存在char类型变量里面。
用标准C++的基础知识回答,不能使用vector、string等高级方法
........................
希望高人给予回答,谢谢。


[解决办法]
本人小菜 虽然你说不能用vector 和string 

但是俺只会用他 呵呵

贴代码

C/C++ code
#include<iostream>#include<string>#include<sstream>#include<list>using namespace std;int main(){    string s;    getline(cin,s);    istringstream str(s);    string temp;    list<string> svec;    while(str>>temp)        svec.push_front(temp);    for(list<string>::iterator beg=svec.begin();beg!=svec.end();++beg)        cout<<*beg<<" ";    cout<<endl;    return 0;}
[解决办法]
C/C++ code
#include<stdio.h>void func(char*p){    char *t = p;    while( (*t!=0 )&&(*t !=' ') )        t++;    if( *t !=0 ){        *t = 0;        func( t+1 );    }    printf("%s ",p);}int main(){    char ch[]="i love you";    func( ch );    return 0;}
[解决办法]
char* pstr = "i love you";
char* pend = pstr+strlen(pstr);
char* pbeg = pend;
size_t cur = 0;
char* ptmp = new char[strlen(pstr)+1];
while(pbeg >= pstr)
{
if((*pbeg)!=' ' && (*pbeg)!='\t')
{
--pbeg;
continue;
}
memcpy(ptmp+cur, pbeg+1, pend-pbeg);
cur += pend-pbeg-1;
*(ptmp+cur) = *pbeg;
cur += 1;

pend = pbeg;
--pbeg;
}

if(pend > pbeg)
{
memcpy(ptmp+cur, pbeg+1, pend-pbeg);
}

cout << ptmp << endl;
delete [] ptmp;
ptmp = NULL;

老实说,我不喜欢自己写的这个,觉得有更好的。

热点排行