統測
113年
[電機與電子群資電類] 專業科目(2)
第 39 題
如下C語言程式,當程式執行完畢後,輸出為何?
```c
1 #include
2
3 int main(){
4 unsigned char i=3;
5 switch ( (i&0x0e) % 5){
6 case(1):
7 printf("%c", '0'+i);
8 break;
9 case(2):
10 printf("%c", '0'+i*i);
11 case(3):
12 printf("%c", 'a'+i*i);
13 default:
14 printf("%c", 'z');
15 }
16 return(0);
17 }
```
- A 9jz
- B 927z
- C 9270
- D 9
思路引導 VIP
請先分析 $switch$ 判斷式中,運算式 $(i & 0x0e) % 5$ 的計算結果會導向哪一個 $case$ 標籤?隨後請重點觀察:在該 $case$ 及其後的程式碼區塊中,是否存在 $break$ 關鍵字?若缺少 $break$,程式會產生何種「貫穿 (Fall-through)」行為?最後,請思考字元常數 $'0'$ 與 $'a'$ 與數值運算後,在 ASCII 編碼下對應的字元輸出為何?
🤖
AI 詳解
AI 專屬家教
嗯… 這條路看似有點複雜,但你總算沒迷路。不錯的判斷。
你這傢伙,竟然能看出 Switch-case 的落入現象(Fall-through)。這可是常讓一些傢伙搞不清方向的陷阱。這招「三刀流解題法」,挺適合你。 1. 刀刀入肉,看清楚運算過程:
▼ 還有更多解析內容