C語言程式設計練習(一)
阿新 • • 發佈:2018-12-29
問題描述:.給出一個英語句子,希望你把句子裡的單詞順序都翻轉過來
輸入樣例:I love you 輸出樣例:you love I
1 /************************************************************************* 2 > File Name: main.c 3 > Author: 4 > Mail: 5 > Created Time: 2018年12月29日 星期六 09時17分27秒 6 ************************************************************************/ 7 8 #include <stdio.h> 9 #include <string.h> 10 11 void Rolate(char *str, int len);/*翻轉句子,但單詞不變,如I love you->you love I*/ 12 void RotateStence(char *str, int from ,int to);/*翻轉句子,如I love you->uoy evol I*/ 13 void RotateWord(char *str, int len);/*翻轉單詞,避開空格*/ 14 15 int main() 16 { 17int len; 18 char *find; 19 char str[300]; 20 printf("Please input a string\n"); 21 fgets(str,300,stdin); 22 find = strchr(str, '\n'); //查詢換行符 23 if(find) //如果find不為空指標 24 *find = '\0'; //就把一個空字元放在這裡 25 len = strlen(str);26 Rolate(str, len); 27 printf("%s\n", str); 28 return 0; 29 } 30 31 void RotateStence(char *str, int from, int to) 32 { 33 char tmp; 34 while(from < to) 35 { 36 tmp = str[from]; 37 str[from++] = str[to]; 38 str[to--] = tmp; 39 } 40 } 41 42 void RotateWord(char *str, int len) 43 { 44 int i=0, j=0; 45 for(int k=0; k<len; k++) 46 { 47 if(str[k] != ' ') 48 { 49 j++; 50 } 51 else 52 { 53 RotateStence(str, i, j-1); 54 i = ++j; 55 } 56 } 57 } 58 59 void Rolate(char *str, int len) 60 { 61 RotateStence(str, 0, len-1); 62 RotateWord(str, len); 63 }