問題詳情

追蹤下面程式片段:int i,y;y=i=20;while (++i<100)y=(i>40)?y+1:y;printf("%d %d",y,i);最後一行命令輸出結果為何?
(A)76 99
(B)77 100
(C)78 99
(D)79 100

參考答案

答案:D
難度:適中0.423913
統計:A(9),B(19),C(45),D(78),E(0)

用户評論

jade0727】評論

還是不太懂,有高手再說明嗎?

107新竹揮手】評論

int i,y;y=i=20;while (++I<100)           // i 加1加到99才停,所以答案印出 i 就是100  y=(i>40)? y+1:y;    // i >40,如果成立,就執行冒號前端,如果不成立,就執行冒號後端。printf("%d %d",y,i)※y分為符合i>40,成立=>y+1=>i從41~99符合,共(99-41)+1=59個,最終結果為59不符合i>40,不成立=>維持y =>所以20~40的情況不符合,y維持不動。所以,y=20+59=79

】評論

想問樓上y為甚麼變成是在算個數?如果i>40執行y+1按照題目問的最後一行命令輸出結果不是應該y要印出99?(雖然沒這個答案QAQ

Shirley】評論

條件運算子 ?: condition ? ...