Re: [課業] 資料處理 程設題型種類

看板Examination作者 (RED)時間6年前 (2018/06/17 17:55), 6年前編輯推噓3(305)
留言8則, 3人參與, 6年前最新討論串2/2 (看更多)
※ 引述《lensfill (undo)》之銘言: : 輸入一個數字 : 解一個答案 : https://photos.app.goo.gl/rhQLYra1P2QJR6h8A : 要怎樣思維關鍵在哪? 第一題的程式碼如下: #include <stdio.h> int bar(int value){ static int tmp=0; tmp++; value++; return value + tmp;} int main(void) { int x=5; printf("%d\n",bar(x)); printf("%d\n",bar(bar(x))); } 說明: bar 副程式的 tmp 為 static 型態, 也就是說 tmp 這一個變數要等程式結束後才會歸還記憶體。 printf("%d\n",bar(x)); ←印出7,說明如下 int bar(int value){ ←這裡的value帶入5 static int tmp=0; tmp++; ←此時這裡的tmp是1 (後++) value++; ←value是6 return value + tmp;←傳回7} printf("%d\n",bar(bar(x)));←印出12,說明如下 先解內部的bar(x) int bar(int value){ ←這裡的value帶入5 static int tmp=0; ←這裡的tmp是1 tmp++; ←此時這裡的tmp是2 (後++) value++; ←value是6 return value + tmp;← 6+2 = 8 ,傳回8} 再算外部的bar(bar(x)),內部的bar(x)是8, 因此bar(bar(x))等同bar(8), int bar(int value){ ←這裡的value帶入8 static int tmp=0; ←這裡的tmp是2 tmp++; ←此時這裡的tmp是3 (後++) value++; ←value是9 return value + tmp;← 9+3=12, 傳回12} 第二題的程式碼如下: (鍵盤輸入100) #include <stdio.h> int foo(int v) {return (v/10+v%10);} int main(void) { int v1,v2; scanf("%d",&v1); v2=foo(foo(foo(v1))); printf("%d\n",v2); } 這一題的思維跟上一題一樣, v2=foo(foo(foo(v1))); printf("%d\n",v2);←印出 1 ,理由如下 先拆解,先解最內層的foo(v1), 最內層解完後再代入第二層的foo(), 第二層解完後再代入最外層的foo(), 最內層的foo(v1) int foo(int v)←v代入100 {return (v/10+v%10);} ← 10+0 = 10,傳回 10 第二層的foo(10) ←將內部層的結果代入第二層 int foo(int v)←帶入10 {return (v/10+v%10);} ← 1+0 = 1,傳回 1 最外層的foo(1) ←將第二層的結果代入最外層 int foo(int v)←帶入1 {return (v/10+v%10);} ← 0+1 = 1,傳回 1 結論,只要拆開分析計算就很快解決了... 以上如果說明有誤,煩請各位先進留言補充,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.104.8 ※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1529229321.A.EFB.html

06/17 20:06, 6年前 , 1F
我想問一下 在第一題 後置遞增 為什麼不是先把後面運
06/17 20:06, 1F

06/17 20:06, 6年前 , 2F
算跑完再遞增 而是先遞增完在算後面的運算式
06/17 20:06, 2F
方便說明,所以就沒有顧慮那麼多~~

06/17 20:27, 6年前 , 3F
如果把分號通通換行也許比較明顯? 實際上的觀念是
06/17 20:27, 3F

06/17 20:27, 6年前 , 4F
sequence point
06/17 20:27, 4F
※ 編輯: redspeed (114.42.112.236), 06/17/2018 20:56:55

06/18 20:31, 6年前 , 5F
剛查一下 前面有人提過, 你寫得最清楚 感謝
06/18 20:31, 5F

06/18 20:40, 6年前 , 6F
哈哈, 還是很沒感覺..
06/18 20:40, 6F

06/18 21:18, 6年前 , 7F
謝謝~~
06/18 21:18, 7F

06/18 21:46, 6年前 , 8F
我會了, 我人腦常當機
06/18 21:46, 8F
文章代碼(AID): #1R9Z09xx (Examination)
文章代碼(AID): #1R9Z09xx (Examination)