刚开始写的时候是用一个数组记录所有的单词反过来的,然后一起输出会超时(这个是超时的)
#include<iostream>
using namespace std;
int main()
{
void change(char a[20],int l);
int t,l,k=0;
cin>>t;
for(int i=0;i<t;i++)
{
char a[1000]={0},b[20],c,d[1];
do
{
cin>>b;
c=getchar();
l=strlen(b);
change(b,l);
strcat(a,b);
l=strlen(a);
a[l]=c;
k++;
}while(c!='\n');
cout<<a;
}
}
void change(char a[20],int l)
{
int i,j,tem;
for(i=0;i<l/2;i++)
{
tem=a[i];
a[i]=a[l-i-1];
a[l-i-1]=tem;
}
}
现在不用转换单词顺序,只是改变输出顺序,这样就不用执行很多循环了,这样就不会超时了
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int t,l;
cin>>t;
getchar();
for(int i=0;i<t;i++)
{
char a[1000];
gets(a);
l=strlen(a);
a[l]=' ';a[l+1]='\0';
int j=0,m=0;
while(j<=l)
{
if(a[j]==' ')
{
for(int k=j-1;k>=m;k--)
cout<<a[k];
if(j!=l)
cout<<' ';
m=j+1;
}
j++;
}
cout<<endl;
}
}