C/C++编程题之句子逆序

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

将一个英文语句以单词为单位逆序排放。例如“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;
}

猜你喜欢

转载自blog.csdn.net/lzyzuixin/article/details/111387388