给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
第一种方法(因为50000限制,最后一个点过不了):
#include<stdio.h>
int main()
{
char s[100][5000];
char a[500000];
int i=0,j=0,count=0,k=0;
gets(a);
while(a[i]!='\0')
{
if(a[i]!=' ')
{
k=0;
while(a[i]!=' '&&a[i]!='\0')
{
s[count][k++]=a[i];
i++;
}
count++;
}
else i++;
}
for(i=count-1;i>=0;i--)
{
if(i==0) printf("%s",s[i]);
else printf("%s ",s[i]);
}
}
第二种: kong是为了判断输出最后一个单词不加空格
#include<stdio.h>
#include<string.h>
int main()
{
char a[500001],s[500001];
int i,j,k;
gets(a);
int len = strlen(a);
int kong=0;
for(i=0;a[i]==' ';i++)
{
kong++;
}
for(i=len-1;i>=0;)
{
if(a[i]!=' ')
{
k=0;
s[0]='\0';
while(a[i]!=' '&&i>=0)
{
s[k++]=a[i--];
}
for(j=k-1;j>=0;j--)
{
printf("%c",s[j]);
}
if(kong==i+1) ;
else printf(" ");
}
else i--;
}
}