程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 翻轉單詞順序,翻轉單詞

翻轉單詞順序,翻轉單詞

編輯:C++入門知識

翻轉單詞順序,翻轉單詞


題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入“I am a student.”,則輸出“student. a am I”。

思路:首先將整個句子按字符翻轉,然後再將其中每個單詞的字符旋轉。

 1 #include <string>
 2 #include "stdafx.h"
 3 
 4 void Reverse(char *pBegin, char *pEnd)
 5 {
 6     if(pBegin == NULL || pEnd == NULL)
 7         return;
 8     
 9     while(pBegin < pEnd)
10     {
11         char temp = *pBegin;
12         *pBegin = *pEnd;
13         *pEnd = temp;
14         
15         pBegin ++, pEnd --;
16     }
17 }
18 
19 char* ReverseSentence(char *pData)
20 {
21     if(pData == NULL)
22         return NULL;
23 
24     char *pBegin = pData;
25 
26     char *pEnd = pData;
27     while(*pEnd != '\0')
28         pEnd ++;
29     pEnd--;
30 
31     // 翻轉整個句子
32     Reverse(pBegin, pEnd);
33 
34     // 翻轉句子中的每個單詞
35     pBegin = pEnd = pData;
36     while(*pBegin != '\0')
37     {
38         if(*pBegin == ' ')
39         {
40             pBegin ++;
41             pEnd ++;
42         }
43         else if(*pEnd == ' ' || *pEnd == '\0')
44         {
45             Reverse(pBegin, --pEnd);
46             pBegin = ++pEnd;
47         }
48         else
49         {
50             pEnd ++;
51         }
52     }
53 
54     return pData;
55 }
56 
57 
58 int main()
59 {
60     char input[] = "I am a student.";
61     printf("%s\n\n",input);
62     printf("After reverse.\n\n");
63     ReverseSentence(input);
64     printf("%s\n", input);
65     
66     return 0;
67 }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved