1 //要求:给一个英文句子,逆序输出
2 //比如:输入"I am a student.";输出"student. a am I"
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7
8 char str[100];
9 char tmp;
10
11 void reverse(char *arr, int start, int end)
12 {
13 char tmp;
14 while(start < end)
15 {
16 tmp = arr[start];
17 arr[start++] = arr[end];
18 arr[end--] = tmp;
19 }
20 }
21
22 void reverseSentence(char *arr, int len)
23 {
24 int i = 0;
25 int pos = 0;
26 //先所有字符翻转
27 reverse(arr, 0, len-1);
28 //再单词翻转
29 while(arr[i] != '\0')
30 {
31 if(arr[i] != ' ')
32 {
33 i++;
34 }
35 else
36 {
37 reverse(arr, pos, i-1);
38 pos = ++i; //为下个单词记录首字母下标
39 }
40 }
41 reverse(arr, pos, i-1); //反转最后一个单词
42 }
43
44 int main(void)
45 {
46 gets(str);
47 int len = strlen(str);
48 reverseSentence(str, len);
49 printf("%s\n", str);
50 return 0;
51 }