102年四等計算機概要 - 考試

Table of Contents

一、下列C程式執行後,m3之值為何?
int m1=11,m2,m3=1;
for(m2=m3;m1>=m2;m1--){
m1=m1-m2;
m3=m1+m3;
m1=m1-1;
}
Ans(C)23
個人認為執行順序為
m2=m3 m1>=m2 m1=m1-m2 m3=m1+m3 m1=m1-1 m1--
1 True 10 11 9 8
1 True 7 18 6 5
1 True 4 22 3 2
1 True 1 23 0 -1
1 False
不知這樣的想法對不對,但是m2=m3部份在迴圈裡m3值有改變
這樣不會一直設值給m2嗎?
(雖然我上面寫m2=m3一直等於1,但只是為了配合答案
,一直覺得m3值應該不會一直等於1阿)


二、執行下列C語言程式所產生的輸出為何?
int x=0;
main(){
int y=25;
if(y>15){
int x=5;
x+=y;
}
printf("%d\n",x);
}
Ans(A)0
這題是跟生命週期有關嗎?所以就算if內x值變動,列印時x只會顯示主程式外的x值?
可是把int x=5給拿掉去跑,又會顯示25,疑惑?

三、某循序電路經狀態化簡後,剩餘10個狀態。若以D正反器作為此電路之記憶元件
,所需正反器個數最少為:
Ans(A)4個
這題完全沒想法,狀態是X+Y算一個狀態嗎?還是兩個?
若改成用其他T型、RS型或JK型答案還會一樣嗎?

--

All Comments

Daniel avatarDaniel2013-10-06
第一題:for迴圈分三部分,初值運算式/測試運算式/增量運算式
Damian avatarDamian2013-10-09
初值運算式只會執行一次,所以m3不會一直帶值給m2
Skylar Davis avatarSkylar Davis2013-10-11
第2題:當print x的時候,系統就會去尋找x的定義,if部分先不看
Oscar avatarOscar2013-10-16
x的定義是在最外面的全域變數的部分,所以印出0
Genevieve avatarGenevieve2013-10-20
若拿掉if裡面x的定義,則x+=y那邊,x的定義就會找到最外層的x
所以你就會得到25的答案
第3題有請高手...若有解釋不周延還請見諒^^"