题目描述:

将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。字符串长度不超过100。

输入描述:

输入一个仅包含小写字母、空格、'.' 的字符串,长度不超过100。
'.' 只出现在最后一个单词的末尾。

输出描述:

依次输出倒置之后的字符串,以空格分割。

示例:

输入 输出
I like beijing. beijing. like I

题解:

#include<stdio.h>
#include<string.h>
//数组倒置函数
int reverse(char str[],int left,int right){
	char ins=0;
	while(left<=right){
		ins=str[left];
		str[left]=str[right];
		str[right]=ins;
		left++;
		right--;
	}
}
int main(){
	char str[100]={"\0"};
	while(gets(str)!=NULL){
		int left=0;
		int right=strlen(str)-1;
		reverse(str,left,right);//先进行整体倒置
		left=0;
		//按部分倒置
		for(int i=0;i<strlen(str);i++){
			if(str[i]==' '){
				right=i-1;
				reverse(str,left,right);
				left=right+2;
			}//前面的部分
			if(i==strlen(str)-1){
				right=i;
				reverse(str,left,right);
			}//最后一部分
		}
		//输出
		for(int i=0;i<=strlen(str);i++){
			printf("%c",str[i]);
		}
		printf("\n");
	}
	return 0;
}