程式練習題庫
← 回題目列表
c難度 ●●●

把字串反過來(就地反轉)

Python 一行解決:s[::-1]。但那會產生一個新字串,原本的還在。

C 這題要你就地反轉——不另外開一塊空間,直接在原本的陣列裡把字元換位置。

題目

word 裡的字元順序反過來。

預期輸出:

反轉前:hello
反轉後:olleh

提示

用兩個索引,一個從頭、一個從尾,交換它們指到的字元,然後一個往右走、一個往左走,在中間相遇時停下。

交換兩個變數的值需要一個暫存變數——C 沒有 Python 的 a, b = b, a

迴圈條件想清楚:兩個索引相遇時要不要再換一次?

會照出 Python 藏了什麼

Python 的字串不能改。 s[0] = 'x' 會直接報錯,所有「修改字串」的操作其實都是產生新字串。C 的字串是一塊可寫的記憶體,你想改哪一格就改哪一格。

這個差別的代價很實際:Python 在迴圈裡一直 s += c,每一圈都在複製整個字串,字串越長越慢。C 可以直接動原地,但你得自己保證不會寫出界。

別碰結尾的 '\0' 反轉的範圍只到最後一個字元,把結尾記號也換到前面去,字串就毀了。

本機編譯

gcc main.c -o main.exe
./main.exe

需要先裝好 C 編譯器。Windows 可以用 MinGW-w64 或 w64devkit,macOS 與 Linux 通常內建或用套件管理器安裝。

C 題不提供線上執行,自己在本機編譯,寫完可以請 AI 看看。

討論區

登入後就能留言和評分。

    還沒有人留言。