笔试题---英文句子逆序,单词正序

 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 }

 

posted @ 2020-04-10 17:56  crazyCodeFarmer  阅读(241)  评论(0)    收藏  举报