免費開始練習
高考申論題 106年 [資訊處理] 程式語言

第 三 題

三、下列是以 C,Java,Javascript,C++,PHP 及 JSP 六種語言撰寫存取陣列(array)的 程式片斷,請問此程式片斷執行後,會產生什麼結果?如果有結果錯誤,錯誤訊息 為何?各用什麼方法可避免錯誤?請寫出完整的程式來說明你的方法。(25 分) C: int a[] = {0, 1, 2, 3}; for(i=0; i<=sizeof(a); i++) printf("%d", a[i]); Java: int[] a = {0, 1, 2, 3}; for(i=0; i<=a.length; i++) System.out.print(a[i]); Javascript: var a = [0, 1, 2, 3]; for(i=0; i<=a.length; i++) document.write(a[i]); C++: int a[] = {0, 1, 2, 3}; for(i=0; i<=sizeof(a); i++) printf("%d", a[i]); PHP: $a = array(0,1,2,3); for($i=0; $i<=count($a); $i++) echo $a[$i]; JSP: int[] a = {0, 1, 2, 3}; for(i=0; i<=a.length; i++) out.print(a[i]);
📝 此題為申論題

思路引導 VIP

看到這題先確認各語言的『陣列長度取得方式』與『陣列邊界檢查機制』。注意到所有程式碼的迴圈條件都誤用了 <=(導致存取到 index=length),且 C/C++ 誤用 sizeof(a)(取得的是總 Bytes 數而非元素個數)。接著依據各語言的型別特性及例外處理機制(Exception, Notice, undefined, 或印出垃圾值),分別精確寫出執行結果、錯誤訊息與修正代碼。

🤖
AI 詳解 AI 專屬家教

【破題】本題考查各主流程式語言對「陣列邊界存取(Array Bounds Access)」的處理機制與記憶體管理特性。程式片段共同的邏輯錯誤在於「迴圈終止條件設定不當(誤用 <=sizeof)」,導致陣列越界存取(Out of Bounds)。 【論述】 一、 C 語言

▼ 還有更多解析內容

📝 同份考卷的其他題目

查看 106年[資訊處理] 程式語言 全題

升級 VIP 解鎖