C C 反序輸出字串總結

2021-09-08 01:54:45 字數 1696 閱讀 3269

2年前去t公司面試,面試官給了我一張紙一支筆,說寫個程式吧,輸入乙個字串然後反序輸出。我問輸入輸出是用函式引數呢還是系統i/o,面試官說隨你便,寫完了說說各有什麼優缺點吧。當時我大三,沒有參加過acm沒有實驗室經歷除了課程設計也沒寫過什麼程式,完全小白。當然至今也仍然是菜鳥乙隻,不堪回首啊。

方法一:據說有庫函式strrev()啊

123

4567

891011

1213

14

#include #include int main(int argc, char* ar**)

char* str = ar**[1];

strrev(str);

printf("reversed string: %s/n", str);

return 0;

}

結果linux下編譯報錯,說找不到strrev()這個函式,我勒個去,坑爹呢這是?vs2010編譯通過正常執行。好吧,還是自己來寫乙個吧~

方法二:首尾互換

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

#include #include using namespace std; 

char *reverse(char *str)

return str;

}int main(int argc, char* ar**)

cout << "reversed string: " << reverse(ar**[1]) << endl;

return 0;

}

終於都通過了啊。就用了個迴圈把字串裡的字元逐個首尾互換了。啥?效能?有啥問題?沒看到每次進迴圈都要新建變數tmp嗎?這這這。。。這也有影響?好吧,把這個宣告放到迴圈外面。還能提公升麼?去掉字元互換操作!!直接從尾巴倒過來輸出不就得了~

方法三:從尾到頭

123

4567

891011

1213

1415

1617

18

#include #include using namespace std;

int main()

cout << endl;

return 0;

}

這回用了i/o做輸入,並且還能保留原來的字串不變。嗯,不錯不錯,其實我們連字串長度都不需要知道。再寫乙個~

方法四:遞迴

123

4567

891011

1213

1415

1617

1819

#include using namespace std;

void reverse(char *str)

int main()

; cout << "input: ";

cin >> str;

reverse(str);

cout << endl;

return 0;

}

估計一般沒人會這麼寫吧。。。

輸出字串

5.連線字串 半形句號 是字串連線符,可以把兩個字串連線成乙個字串。例如7 5 echo str.url 技巧 我們可以使用字串連線符累加字串。例如7 6 第一句我們給 str賦值,str表示字串 php中文社群位址是 第二句表示在 str的值上累加字串 www.phpnet.cn 所以,str最後...

輸出字串Count and Say

最近研究輸出字串,稍微總結一下,以後繼續補充 標題如下 the count and say sequence is the sequence of integers beginning as follows 1,11,21,1211,111221,1is read off as one 1 or11...

C C 18 3 遞迴反向輸出字串

遞規反向輸出字串的例子,可謂是反序的經典例程 遞規反向輸出字串 include include include include include using namespace std void inverse char p int main 對於檔案操作 遞規反向輸出字串 檔案為逐行倒敘 inclu...