33,311
社区成员
发帖
与我相关
我的任务
分享
// Listing 17.7 Using getline()
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char stringOne[255];
int i=0,j=0;
cin.getline(stringOne,255);
int len=strlen(stringOne);
for(int i=len-1,j=len-1;i>=0;i--)
{
char str[256]="";
if(stringOne[i]==' ')
{
for(int k=i+1;k<=j;k++)
{
str[k-i-1]=stringOne[k];
}
str[strlen(str)]='\0';
cout<<str<<' ';
j=i-1;
}
else if(i==0)
{
for(int k=0;k<=j;k++)
{
str[k]=stringOne[k];
}
str[strlen(str)]='\0';
cout<<str;
}
}
return 0;
}
不知可行否
#include <stdio.h>
#include <string.h>
char s[50001];
void reverse(int begin,int end)
{
while(begin<end)
{
char temp=s[begin];
s[begin]=s[end];
s[end]=temp;
++begin;
--end;
}
}
int main()
{
while(gets(s))
{
int len=strlen(s),begin=0;
reverse(0,len-1);
for(int i=0;i<len;i++)
{
if(s[i]!=' ')
{
if(i>0&&s[i-1]==' ')
begin=i;
else if(i<len-1&&s[i+1]==' ' || i==len-1)
reverse(begin,i);
}
}
printf("%s\n",s);
}
}
void RS(char *bp, char *ep)
{
while(bp < ep)
{
char tem = *bp;
*bp = *ep;
*ep = tem;
bp++;
ep--;
}
}
void Reverse(char *s)
{
int len = strlen(s);
char *es = s + len -1;
RS(s,es);
char *p1 = s;
char *p2 = s;
while( *p2 != '\0')
{
while(*p2 != '\0' && *p2 != ' ')
p2++;
RS(p1,p2-1);
if( *p2 == ' ' && *p2 != '\0')
{
p2++;
p1 = p2;
}
}
}
char test[] = "you are a champion ";
Reverse(test);
#include <iostream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>
int main()
{
std::istream_iterator<std::string> st(std::cin), end;
//从控制台接受输入,直到输入流结束(Ctrl+Z)
std::vector<std::string> words(st,end);
//按单词逆序输出
std::reverse_copy(words.begin(),words.end(),
std::ostream_iterator<std::string>(std::cout," "));
std::cout << std::endl;
return 0;
}
//rock and roll
//^Z
//roll and rock