假設指令PUSHX是將變數X的內容放入堆疊(stack),指令POPX是從堆疊中取出一個值存在變數X中,下列哪 一程式片段恰可將A及B的內容對調?
(A)PUSHB;POPA;PUSHA;POPB;
(B)PUSHA;POPB;PUSHB;POPA;
(C)PUSHA;PUSHB;POPA;POPB;
(D)PUSHA;PUSHB;POPB;POPA;

答案:登入後查看
統計: A(15), B(21), C(66), D(56), E(1) #28701

詳解 (共 6 筆)

#195984

(A)PUSHB;POPA;PUSHA;POPB→這只是把同一個值從B放到stack,再放到A,然後又從A放回stack,再放回B

(B)PUSHA;POPB;PUSHB;POPA→這也是把同一個值從A放到stack,再放到B,然後又從B放回stack,再放回A

(C)PUSHA;PUSHB;POPA;POPB→這才是先把一個值從A放到stack,再從B把另一個值放到stack,然後將stack最上方的值(從B出來的)放到A,再把stack裡剩下的值(從A出來的)放到B→所以A出來的跑去B,B出來的跑去A,匠就交換了!

(D)PUSHA;PUSHB;POPB;POPA→這個是先把一個值從A放到stack,再從B把另一個值放到stack,然後將stack最上方的值(從B出來的)放回B,再把stack裡剩下的值(從A出來的)放回A→所以A出來的還是回到A,B出來的也是回到B,並沒有交換!

2
0
#31399
以A = 24 , B=48為例

當做完push A; push B;後

STACK裡面是     |         |
                              |  48   |
                              |  24   |
                              |____|

當第一個pop時,會先pop出48

因為要把 A ,B 兩個數值對調

所以第一個pop出來的數值應該要給 A   => pop A

         第二個pop出來的數值才是要給B  => pop B

---------------------------------------------------------------------




1
0
#21252


疑?是不是弄錯了???

好像是D耶~~

0
0
#23588

疑?是不是弄錯了???

好像是D耶~~

0
0
#31846
所以...
pop出來的數字,可以隨意指定給想要的變數囉??
0
0
#32623
按照題目的定義

 POP X  就是代表從Stack中pop出一個數字  然後把數字的值指定給 X 變數

以上

0
0