我的思路:
1、利用getchar()输入带空格的字符串,并判断输入‘\n’时停止输入。
(PS:因为scanf函数遇到空格时自动视为结束输入。如果想使用scanf(),可以建立二位数组存储多个单词,输出时以行为单位逆序输出即可)
2,for循环逆序遍历,用j标记每个单词的长度,i为遍历数组的当前位置,遇到空格时,就数组当前位置输出长度为j的单词。
#include<stdio.h>
#include<string.h>
int main(){
char s[90];
int len=0;
s[len]=getchar();
while(s[len]!='\n'){ //输入数组,遇到换行符结束
len++;
s[len]=getchar();
}
int j=0;
for(int i=len-1;i>=0;i--){ //逆序遍历数组
if(s[i]!=' '){
j++; //逆序单词的长度
}
if(s[i]==' '){ //遇到空格时
for(int t=i+1;t<=i+j;t++){
printf("%c",s[t]); //输出整个单词
}
printf("%c",s[i]); //输出单词之间的间隔
j=0;
}
if(i==0){ //字符串逆序的最后一个单词
for(int t=i;t<j;t++){
printf("%c",s[t]);
}
}
}
return 0;
}