問題描述:
有乙個字元陣列的內容為:「student a am i」,
請你將陣列的內容改為"i am a student".
要求:不能使用庫函式。
只能開闢有限個空間(空間個數和字串的長度無關)。
student a am i
i ma a tneduts
i am a student
思路:
對字串內容進行逆轉,可以先逆轉整個句子的順序,再逆轉每個單詞的順序。
用到的函式及作用:
void
reverse_one
(char
*left,
char
*right)
}
這一部分函式,對指定長度的字串進行逆轉(長度為right-left),當left < right成立時,交換left和right指向的內容
void
reverse
(char
*p,int len)
right = p -1;
//對每個單詞進行逆轉
reverse_one
(left, right);if
(*p ==
' ')
}}
在這一部分函式中,首先,將整個字串逆轉,結果是:
然後,在對每乙個單詞進行逆轉,結果是:
即可完成題目要求
用到的知識點:
1、陣列傳參會發生降維,降維成指向陣列內容的指標;
2、對指標解引用表示的是指標所指向的目標;
3、指標加一,加的是其所指向型別的大小;
執行結果:
完整**:
#include
#include
void
reverse_one
(char
*left,
char
*right)
}void
reverse
(char
*p,int len)
right = p -1;
reverse_one
(left, right);if
(*p ==
' ')}}
void
main()
(C語言)楊氏矩陣 逆轉字串 左旋字串
時間複雜度小於o n 2 逆轉字串 3 左旋字串 題目 有乙個二維陣列,陣列的每行從左到右是遞增的,每列從上到下是遞增的,在這樣的陣列中查詢乙個數字是否存在 一般方法 define crt secure no warnings 1 include include include define col...
字串逆轉
題意 輸入乙個字串,逆向輸出該串。sample input 3frankly,i don t think we ll make much money out of this scheme.madam i m adam sample output hcum ekam ll ew kniht t nod...
逆轉中文字串 逆轉字串
要顯示中文必須使用unsigned char型,如果使用char 就裝不下了。然後要明白乙個unsigned char 其實只是裝了乙個中文字元的一半。列印的時候如果只列印乙個unsigned char有可能什麼都看不到。所以逆轉的時候要把兩個unsigned char看成乙個整體來交換。如下 in...