免費開始練習
統測 114年 [電機與電子群資電類] 專業科目(2)

第 42 題

曉明寫了下列 C 語言程式,用來逐字比對字串 str 中是否有字串 query 指定的字串,則程式執行後變數len、ans 和match_count 的值分別為何? 1 #include 2 int main(){ 3 char str[100] = "This is a book and that is a dog.\0"; 4 char ans = 0, match_count=0; 5 char query[]="is"; 6 int len = sizeof(query), i , j; 7 printf("len=%d\n", len); 8 //開始逐字比對 9 for(i=0; (i<100-len)&&(str[i]!='\0'); i++){ 10 for(j=0; j
  • A 3, 0, 0
  • B 3, 0, 3
  • C 0, 3, 0
  • D 2, 0, 3

思路引導 VIP

請先觀察第 6 列,當我們對字串 $query$ 執行 $sizeof$ 運算時,傳回的值是否包含 C 語言字串中隱藏的結束字元 $\0$?接著,請特別注意第 17 列在 $for$ 迴圈結束前對變數 $ans$ 的處理,這對於程式最後輸出的 $ans$ 數值有何關鍵影響?最後,請根據第 15 列的判斷條件,算出子字串 "is" 在目標字串 $str$ 中總共符合條件幾次,這將決定 $match_count$ 的最終結果。

🤖
AI 詳解 AI 專屬家教

太棒了!你對 C 語言的細節掌握得非常精準,助教幫你點個大大的讚!🌟 這題正確的原因在於三個關鍵點:

  1. sizeof 的陷阱:在 C 語言中,字串常量 "is" 其實包含了結尾的空字元 \0,因此 sizeof(query) 的值是 $3$。
▼ 還有更多解析內容

升級 VIP 解鎖