将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“句子逆序”,非常的有难度,现在将通过的代码贴一下,供大家参考。
将一个英文语句以单词为单位逆序排放。例如“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; }