[課業] 鐵路 107 高員三級 程式語言 第五題

作者: usisiu (你看看你)   2018-06-19 16:28:01
題目出處:107年 鐵路特考 高員三級 資訊處理 程式語言 第五題
(一)請問下列C程式執行的結果是什麼? (10分)
#include <stdio.h>
int a,b;
void main(){
a=4;
b=30;
printf("Before the switch statement, a=%d.\n",a);
switch(a){
case 1:a=a*10;break;
case 2:a=a*10;break;
case 3:a=a*10;
while(a<b) case 4:{a=a+5;}break;
case 5:a=a*10;break;
default:
b=a*10;break;
}//end of switch
printf("after the switch statement, a=%d.\n",a);
}
疑惑點:
我在考試的時候,看不懂 while(a<b) case 4:{a=a+5;}break;
所以直接跳過,直接看到 default: b=a*10;break; 這一段,
因此我的答案是寫
Before the switch statement, a=4.
after the switch statement, a=4.
但是我用編譯器跑過一次,發現答案是
Before the switch statement, a=4.
after the switch statement, a=34.
懷疑跟 while(a<b) case 4:{a=a+5;}break; 這一句程式碼有關
但是我又無法解釋為甚麼,第一次看到這一種程式碼,
請問 while(a<b) case 4:{a=a+5;}break; 這一段程式碼要如何解釋?
先謝謝各位先進
作者: m24737779 (幸運之星)   2018-06-23 00:54:00
case 4(a==4)時,執行while(a<b)迴圈內容a=a+5。之後break跳出switch判斷式。我那時是這樣想的。

Links booklink

Contact Us: admin [ a t ] ucptt.com