目录
问题描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
解题分析
这道题跟 字符串反转一样,我们首先要解决的问题还是怎么接收。因为这次输入的是句子,而句子里面有空格,所以我们就不能用scanf接收了,要用gets()。
这道题要求把句子中的单词反向输出,所以我们可以先把句子全体逆序,然后在把单个的单词逆序,这样就解决问题啦(翻转的方法跟字符串反转一样,这里我就不加赘述了)
代码实现
#include<stdio.h>
void reverse(char* left,char* right)
{
while(left<right)
{
char tmp = *left;
*left = *right;
*right =tmp;
left++;
right--;
}
}
int main()
{
char arr[1000];
gets(arr);
int len = strlen(arr);
char* left=arr;
char* right=arr;
right+=len-1;
reverse(left,right);
char* start = arr;
char* end = arr;
while(*end !='\0')
{
while(*end!=' '&&*end!='\0')
{
end++;
}
reverse(start,end-1);
start = ++end;
}
printf("%s",arr);
return 0;
}