首页 > 试题广场 >

将一个句子按单词反序。比如“hi baidu com mia

[问答题]
将一个句子按单词反序。比如“hi baidu com mianshiti”,反序后变为“mianshiti com baidu hi”。
#include<stdio.h>
(737)#include<string.h>
int main()
{
	char a[256];
	int i,j,judge=0;
	scanf("%[^\n]",&a);
	while(judge==0){
	for(i=strlen(a);a[i]!=' '&&i>=0;i--);	//找到最后一个单词前面空格处位置 
		if(i==-1)judge=1;//输出最后将原字符串第一个单词输出后,改变条件,跳出循环 
		j=i;//记录该位置,以便清除最后一个单词 
	for(i=j+1;i<=strlen(a);i++){//输出该单词 
		printf("%c",a[i]);
	}
	 a[j]=0;//清除最后一个单词 
	}	
	return 0;
}

编辑于 2020-03-02 21:06:16 回复(0)
可以分两步走: 
第一步按字母反序,“hi baidu com mianshiti”变为“itihsnaim moc udiab ih”。 
第二步将每个单词中的字母反序,“itihsnaim moc udiab ih”变成“mianshiti com baidu hi”。 
这个方法可以在原字符串上进行,只需要几个整数变量来保持指针即可,空间复杂度低。
发表于 2014-11-15 14:34:58 回复(0)