给定一句英语,要求将所有单词按颠倒顺序输出
输入:包含一个测试用例,在一行内给出总长度不超过80的字符串,字符串有若干单词和若干空格组成,其中单词是由英文字母(大小写有区别
)组成的字符串,单词之间用一个空格分开,输入保证句子末尾没有多余的空格
输出:没个测试用例的输出占一行,输出倒序后的句子
#include<stdio.h>
#include<string.h>
/*
给定一句英语,要求将所有单词按颠倒顺序输出
输入:包含一个测试用例,在一行内给出总长度不超过80的字符串,字符串有若干单词和若干空格组成,其中单词是由英文字母(大小写有区别
)组成的字符串,单词之间用一个空格分开,输入保证句子末尾没有多余的空格
输出:没个测试用例的输出占一行,输出倒序后的句子
*/
int main(){
char str[80];
printf("请输入字符串:");
while (gets(str))
{
/* code */
char temp[80] = {' '}; //用来临时存放字符串
printf("%d\n",strlen(str));
int rear = strlen(str)-1,front; //前后标记指针
int num = 0;
for(int i = strlen(str) - 1;i>=0;i--){
if(str[i] == ' '){ //遇到了空格
front = i; //空格所在的位置下标
for(int j = front+1;j<=rear;j++){ //从空格所在的位置往后一位必是字母
temp[num++] = str[j];
}
temp[num++] = ' '; //每一轮输入一个单词后,加一个空格
rear = front-1; //后指针变化
}
if(i == 0){
front = 0;
for(int j = front;j<=rear;j++){ //从空格所在的位置往后一位必是字母
temp[num++] = str[j];
}
}
}
//输出
printf("逆转结果:");
for(int i = 0;i<=strlen(temp) - 1;i++){
printf("%c",temp[i]);
}
printf("\n");
}
return 0;
}