民國111年 地方四等 電子工程 計算機概要
第30題
考慮下列的C 語言程式:#include <stdio.h>int main(void){int a;printf("%d", a=strcmp("XYZ",…
題目
考慮下列的C 語言程式:#include <stdio.h>int main(void){int a;printf("%d", a=strcmp("XYZ", "abc"));return 0; }下列何者是這個程式的輸出結果? A. 編譯錯誤 B. -1 C. 0 D. 1
官方答案
- 答案:B. -1
解析
strcmp 會逐字元比較兩字串,並以字元的編碼值大小判斷先後。'X' 的 ASCII 值為 88,'a' 為 97,因此 "XYZ" 小於 "abc",函式會回傳負值,故輸出為 -1。C 標準只規定回傳值為負、零或正,並不規定一定是 -1;有些實作會直接回傳兩個字元編碼值的差(例如 -9),但本題以「負值代表小於」的慣例作答,選 B。程式碼中 `a=strcmp(...)` 是合法的指定運算式,其值即為函式回傳值,可直接交給 printf 的 %d 輸出,因此不會編譯錯誤;選項 A 不成立。回傳 0 代表兩字串完全相同,回傳 1 代表前者較大,均與本題情況不符,故 C、D 不對。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。
官方資料
答案以考選部公告之測驗式試題標準答案 PDF 為準。