首页 > 技术文章 > 将一行字符串中的单词翻转

mutaohengheng 2016-01-07 07:37 原文

#include <stdio.h>
#include <stdlib.h>

int main(){
	char chs[100];
	gets(chs);
	int length = 0;
	for (; chs[length] != '\0'; ++length);	//求出字符串的总长度
	for (int i = 0; i < length / 2; ++i){	//将整个字符串串翻转过来
		char tmp = chs[i];
		chs[i] = chs[length - 1 - i];
		chs[length - 1 - i] = tmp;
	}
	int index1, index2;	//分别为目前单词的第一个字母和最后一个字母的位置
	for (int i = 0; i < length; ++i){
		//第一个字符不为空格,产生新单词
		//前一字符为空,当前字符不为空,产生新单词
		if (((i == 0) && (chs[i] != ' ')) || ((chs[i] != ' ') && (chs[i - 1] == ' ')))
			index1 = i;
		//最后一个字符不为空格,结束一个单词
		//当前字符不空,后一字符为空,结束一个单词
		if (((i == length - 1) && (chs[i] != ' ')) || ((chs[i] != ' ') && (chs[i + 1] == ' '))){
			index2 = i;
			for (int j = index1; j <= index2 / 2; ++j){	//将本单词翻转过来
				char tmp = chs[j];
				chs[j] = chs[index1 + index2 - j];
				chs[index1 + index2 - j] = tmp;
			}
		}
	}
	for (int i = 0; i < length; ++i)
		printf("%c",chs[i]);
	printf("\n");
	system("pause");
	return 0;
}

  

推荐阅读