關(guān)于字符串的逆序題目
今天做了一道關(guān)于字符串逆序的題目,題目為輸入I am a student,而輸出為student a am I。這道題的思路很清楚,就是先把整個(gè)句子逆序,然后將一個(gè)一個(gè)單詞逆序,這樣便得到了最終結(jié)果。而在將單詞逆序的時(shí)候,可以設(shè)置兩個(gè)指針,一個(gè)指針依次遍歷,當(dāng)遍歷到空格的時(shí)候,將此時(shí)的指針代表的值賦\0,然后將另一個(gè)指針傳到逆序函數(shù)中,函數(shù)結(jié)束后,再賦空格。
- /**********************************************************
- File Name:
- Description: 輸入一個(gè)英文句子,翻轉(zhuǎn)句子中單詞的順序,但單詞內(nèi)字符的順序不變。(筆試題)
- 句子中單詞以空格符隔開(kāi)。為簡(jiǎn)單起見(jiàn),沒(méi)有標(biāo)點(diǎn)符號(hào)。
- 例如輸入“I am a student”,則輸出“student a am I”
- Fuction List:
- ************************************************************/
- #include <stdio.h>
- #define N 50
- void overturn1(char *p)
- {
- char *h = p;
- while (*(++p) != '\0')
- {
- ;
- }
- p = p - 1;
- char temp;
- while(h <= p)
- {
- temp = *(p);
- *p = *h;
- *(h) = temp;
- p--;
- h++;
- }
- }
- void overturn2(char* p)
- {
- char *pre = p;
- char *cur = p;
- while (*(cur) != '\0')
- {
- if (*(cur) == ' ')
- {
- *cur = '\0';
- overturn1(pre);
- *cur = ' ';
- cur++;
- pre = cur;
- }
- else
- {
- cur++;
- }
- }
- overturn1(pre);
- }
- int main()
- {
- char phrase[N] = {0};
- printf("please input:\n");
- gets(phrase);
- overturn1(phrase);
- overturn2(phrase);
- puts(phrase);
- return 0;
- }
編輯:admin 最后修改時(shí)間:2019-06-17