描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例1
输入:I am a boy
输出:boy a am I
我的思路是:给一个数组把每个空格的位置取出来,通过循环打印两个空格之间的字母,两端单独写。
今天悟出一个重要收获,可以写一点调试一点,比较省时间。
#include <stdio.h>
#include<string.h>
int main() {
int i, j,k,len,x=0,count=0;
char str[1000];
int temp[1000];
scanf("%[^\n]\n",str);
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]==' ')
{
temp[count]=i;
count++;
}
}
x=count;
if(x==0)
{
for(i=0;i<str;i++)
{
printf("%c",str[i]);
}
}
else
{
for(j=temp[x-1]+1;j<len;j++)
{
printf("%c",str[j]);
}
for(j=1;j<=x-1;j++)
{
printf(" ");
for(k=temp[x-j-1]+1;k<temp[x-j];k++)
{
printf("%c",str[k]);
}
}
printf(" ");
for(i=0;i<temp[0];i++)
{
printf("%c",str[i]);
}
}
return 0;
}