高考申論題
112年
[統計] 資料處理
第 四 題
請列舉“This is a book”中間有空格的連續字串,經過下列程式執行後,兩個 printf 的輸出內容。(25 分)
#include
#include
void reverse(char str[], int start, int end) {
char temp;
while (start < end) {
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
char str[] = "This is a book";
int len = strlen(str);
reverse(str, 0, len - 1);
printf("%s\n", str);
int word_start = 0;
for (int i = 0; i < len; i++) {
if (str[i] == ' ') {
reverse(str, word_start, i - 1);
word_start = i + 1;
}
}
reverse(str, word_start, len - 1);
printf("%s\n", str);
return 0;
}
📝 此題為申論題
思路引導 VIP
看到此題應先辨識出這是一個經典的「字串中單字順序反轉」演算法。程式碼分為兩個階段:第一步將整個字串作鏡像反轉,第二步則利用空白字元作斷點,將每個被顛倒的單字再次反轉回來。解題時請畫出字串陣列,依序追蹤索引值變化即可得出結果。
🤖
AI 詳解
AI 專屬家教
【解題思路】逐步追蹤字串陣列在執行過程中的內容變化,理解整體反轉與局部單字反轉的演算法邏輯。
【詳解】
已知:初始字串 str 為 "This is a book",字串長度 len 為 14(陣列索引為 0 至 13)。
▼ 還有更多解析內容