将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“句子逆序”,非常的有难度,现在将通过的代码贴一下,供大家参考。

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void reverse(char * inputstr,char *outputstr)
{
int len = strlen(inputstr);
int i;
int j;
int k;
int pos=len;
int m=0;
for(i=len-1;i>=0;i--)
{
if(inputstr[i]==' ')
{
//printf("aaaa\n");
k = i+1;
for(j=k;j<pos;j++)
{
outputstr[m++]=inputstr[j];
}
outputstr[m++]=' ';
pos = i;
}
}
for(i=0;i<pos;i++)
{
outputstr[m++]=inputstr[i];
}
}
int main()
{
char inputstr[1000]={0};
char outputstr[1000]={0};
//scanf("%s",inputstr);
gets(inputstr);
//printf("%s\n",inputstr);
reverse(inputstr,outputstr);
printf("%s",outputstr);
return 0;
}