[問題]計概93年29&31題

看板Army-Sir作者 (心之道)時間16年前 (2010/01/28 23:51), 編輯推噓12(12025)
留言37則, 9人參與, 最新討論串1/1
(B)29、下列C語言程式片段,其執行的結果為何? Int j=0; Printf("%d," ,j++); Printf("%d," ,++j); Printf("%d" ,j++);   (A)0,1,2(B)0,2,2(C)0,2,3(D)1,2,3 這個完全不懂.. 0++會變成什麼= =? (A)31、一個C函數定義如下: Int Fn(int x){ If(n==0||n==1) return |; else return (Fn(x-1)+Fn(x-2)); } 則Fn(10)之結果為下列何値? A)89(B)20(C)76(D)86 這題我的問題是看不懂前半段的式子(到return |) 所以我化簡化到式子都變成一大堆Fn(1)+Fn(0)的組成後 不知道要怎麼算下去... 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.179.54

01/28 23:52, , 1F
++j是先遞增再印出,j++是印出再遞增
01/28 23:52, 1F

01/28 23:53, , 2F
第二題是費氏數列第十項,所以是89
01/28 23:53, 2F

01/28 23:54, , 3F
遞增為什麼會變022..
01/28 23:54, 3F

01/28 23:54, , 4F
不是應該012嘛
01/28 23:54, 4F

01/28 23:55, , 5F
請注意 "印出" 和 "j遞增" 的順序
01/28 23:55, 5F

01/28 23:55, , 6F
費氏數列第十項是55才對吧!!???
01/28 23:55, 6F

01/28 23:55, , 7F
一個+ = +1 吧 這樣懂了 可是第二個怎麼知道 F0是多少?
01/28 23:55, 7F

01/28 23:55, , 8F
印出>遞增>遞增>印出>印出>遞增,所以是印出 022
01/28 23:55, 8F

01/28 23:55, , 9F
樓上 因為他有兩個++
01/28 23:55, 9F

01/28 23:56, , 10F
依上列程式碼的定義,其數列第0和第1項為1
01/28 23:56, 10F

01/28 23:56, , 11F
所以第十項是89
01/28 23:56, 11F

01/28 23:56, , 12F
喔喔~THX
01/28 23:56, 12F

01/29 00:01, , 13F
原來是return 1 不是 | 感謝cj大解惑!
01/29 00:01, 13F

01/29 00:03, , 14F
還是看不懂怎樣遞增...總共遞增三次 是從0 0 0開始遞
01/29 00:03, 14F

01/29 00:05, , 15F
j++跟++j都是j=j+1 差別在前者先動再加 後者先加再動
01/29 00:05, 15F

01/29 00:08, , 16F
所以Int j=0; j為0 然後Printf("%d," ,j++);輸出0 j變1
01/29 00:08, 16F

01/29 00:09, , 17F
B選項沒有1@@
01/29 00:09, 17F

01/29 00:09, , 18F
Printf("%d",++j); j變2 輸出2 Printf("%d",j++);輸2變3
01/29 00:09, 18F

01/29 00:11, , 19F
答案不是B嘛??為什麼會跑出3
01/29 00:11, 19F

01/29 00:12, , 20F
他是程式結束J最後變成3 可是沒有輸出3啊
01/29 00:12, 20F

01/29 00:12, , 21F
螢幕上看到的會是輸出(022)=>(B) 非j暫存的(123)
01/29 00:12, 21F

01/29 00:14, , 22F
Printf是 輸出!? 的指令 不知道該叫什麼~我都叫印出啦XD
01/29 00:14, 22F

01/29 00:16, , 23F
所以...是一開始0 因為是j++所以她先印出來就還是0
01/29 00:16, 23F

01/29 00:17, , 24F
另外第二題return |; 應該是return 1; 是嗎?
01/29 00:17, 24F

01/29 00:17, , 25F
然後第二行接第一行結果 因為是++J 所以先+2在印出2
01/29 00:17, 25F

01/29 00:18, , 26F
最後就跟第一行一樣 直接印出2..是這樣嗎...
01/29 00:18, 26F

01/29 00:19, , 27F
第一句對 第二句 接第一行結果(1) 因為++J 先+1(2)印出2
01/29 00:19, 27F

01/29 00:20, , 28F
有點寫錯 應該是先加"1"再印出2 因為上一行結束j=1了
01/29 00:20, 28F

01/29 00:20, , 29F
第三句是跟第"二"行一樣 直接印出2
01/29 00:20, 29F

01/29 00:22, , 30F
喔喔~~了改 感謝
01/29 00:22, 30F

01/29 00:25, , 31F
第2題x==0跟x==1傳回(return)1 其他傳回Fn(x-1)+Fn(x-2)
01/29 00:25, 31F

01/29 00:27, , 32F
也就是當x為0或1時答案為1 其他就一直遞迴
01/29 00:27, 32F

01/29 00:31, , 33F
最後會變很多Fn(1)+Fn(0) 也就是一堆1相加 得到答案89
01/29 00:31, 33F

01/29 00:32, , 34F
不過這樣太慢了 Fn(x)=Fn(x-1)+Fn(x-2) 其實是費式數列
01/29 00:32, 34F

01/29 00:34, , 35F
所以是1,1,2,3,5,8,13,21,34,55,89.. 前兩個1為x=0跟x=1
01/29 00:34, 35F

01/29 05:49, , 36F
第一題第1行(印出,+1),第二行(+1,印出),第三行(印出,+1)
01/29 05:49, 36F

07/06 10:10, , 37F
希望對您有幫助 http://www.94istudy.com
07/06 10:10, 37F
文章代碼(AID): #1BORA7mM (Army-Sir)