微剋多資訊

 找回密碼
 註冊

Login

Login

搜索

該用戶從未簽到

發表於 2014-3-25 19:39 | 顯示全部樓層 |閱讀模式
本帖最後由 animejp 於 2014-3-25 19:59 編輯

因工作需要,回頭開始學最基本的C,參考了許多書籍都不符合自己學習方式,最後選擇了這本書 (但本書並未提供作業解答)
若您正在學習這本書,且跟我一樣尷尬(國中、高中數學忘光了),希望這系列的帖子能給您小小的幫助
因本身未學習過任何程式語言,初學中,所以這系列的帖子會出的很慢,請見諒

學習環境:Linux
編譯器:gcc

書名:由片語學習C程式設計
作者:劉邦鋒
出版者:國立臺灣大學出版中心
ISBN:978-986-03-3464-7

於 2014.03.21 獲得作者劉邦鋒教授許可,授權後學公開此書籍所有內容
小小心願:如果有討論需求,期請於「範例題目」或「作業題目」帖子回文討論;避免於「範例解答」及「作業參考解答」帖子回文討論
目的:希望能完整排版、依序記錄,供學習者參考

CHAPTER 5 迴圈 作業題目 (共10題)

作業5.1

寫一個程式讀入兩個整數i、j≧ 0並計算i^j。
注意當j為0時必須輸出1。

註:i^j 讀作i的j次方

輸入:7
輸入:5
輸出:16807

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:42 | 顯示全部樓層
作業5.2

寫一個程式讀入一正整數n。首先印出1到n,再印出n - 1到1。

輸入:3
輸出:1
輸出:2
輸出:3
輸出:2
輸出:1

回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:43 | 顯示全部樓層
作業5.3

寫一個程式讀入一正整數n並印出n組輸出。第i組輸出是1到i的數字。

輸入:5
輸出:1
輸出:1
輸出:2
輸出:1
輸出:2
輸出:3
輸出:1
輸出:2
輸出:3
輸出:4
輸出:1
輸出:2
輸出:3
輸出:4
輸出:5

回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:44 | 顯示全部樓層
作業5.4

寫一個式讀取一個正整數n,然後由n以反向順序列印直到1。

輸入:6
輸出:6
輸出:5
輸出:4
輸出:3
輸出:2
輸出:1

回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:45 | 顯示全部樓層
作業5.5

    有一輛卡車行駛在沙漠中,我們想知道它最後的位置。卡車最初是在置(0,0)以每小時10公里的速度向北移動。卡車會收到一系列依照時間戳記排序的命令,1表示「向左轉」,2表示「向右轉」,3表示「停止」。每個命令的前面有一個時間戳記,所以我們知道該命令是何時發出的。最後一個命令一定是「停止」。我們另外還假設,這輛卡車非常靈活,所以它可以在瞬間轉彎。
    以下輸入為例。卡車在時間5的時候收到一個「向左轉」的命令1,在時間10收到一個「向右轉」的命令2,在時間15收到一個「停止」的命令3。那麼最後在時間15的時候,卡車的位置將在(-50,100)。程式只需要輸出卡車的最後位置。第一行是x座標,第二行是y坐標。

輸入:5
輸入:1
輸入:10
輸入:2
輸入:15
輸入:3
輸出:-50
輸出:100
回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:46 | 顯示全部樓層
作業5.6

寫一個程式計算自1970年1月1日到某一特定日期的天數。如果日期有誤或是在1970年1月1日之前則輸出。

輸入:1970
輸入:1
輸入:5
輸出:5

回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:46 | 顯示全部樓層
作業5.7

    編寫一個程式模擬兩個球在一個盒子裡碰撞的情形。我們假設有兩個球在一個寬度為x高度為y的盒子內移動。這兩個球有不同的初始位置,表示為(x1,y1)和(x2,y2)。這兩個球的移動方向為(dx1,dy1)和(dx2,dy2),且移動方向均為45度角,因此所有的dx和dy均為1或-1。球的移動速度是一秒鐘在兩個座標各移動一單位長。例如(x1,y1)且(dx1,dy1)為(-1,1),則一秒後球將移動到(2,5)。
   球撞到盒子邊角時會反彈,由於球始終以45度角移動,所以很容易計算路徑。假設(x1,y1)為(3,4),(dx1,dy1)為(-1,1),那麼球的位置將會是(3,4)、(2,5)、(1,6)、(0,7)、(1,8)、(2,7)…等。如果球撞到角落,它會以相反的方向彈回來。
   兩個球如果移動到相同的位置則產生碰撞及反彈。假設(x1,y1)為(3,4),(dx1,dy1)為(-1,1),而(x2,y2)為(3,6),(dx2,dy2)為(-1,-1)。第一個球的路徑將會是(3,4)、(2、5)、(1、4)…而第二個球的路徑將會是(3,6)、(2、5)、(1,6)…等。請注意球只要沒移動進相同的位置則不會產生碰撞。
   輸入依序為x、y、x1、y1、x2、y2、dx1、dy1、dx2、dy2、t,而t是需要模擬的秒數。輸出是最後這兩個球的位置。順序是x1、y1、x2、y2。
   參數規範:0 < x,y < 20,0 < x1,y1 < x,0 < y1,y2 < y, (x1,y1)及(x1,y2)在不同點。

輸入:5
輸入:8
輸入:3
輸入:4
輸入:3
輸入:6
輸入:-1
輸入:1
輸入:-1
輸入:-1
輸入:2
輸出:1
輸出:4
輸出:1
輸出:6

回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:52 | 顯示全部樓層
作業5.8

寫一個程式在二進制、八進制、十進制之間做數字轉換。輸入第一個數字是輸入格式:2代表二進制,10代表十進制,8代表8進制。輸入的第二個數字n代表數字有幾位數。以下的n個數字為輸入數字由左到右的數字。最後一個數字是輸出的格式。格式同第一個數字。以下的輸出入範例即為十進位的12345轉換為八進制變成30071。注意輸出必須一行代表一位數。

輸入:10
輸入:5
輸入:1
輸入:2
輸入:3
輸入:4
輸入:5
輸入:8
輸出:3
輸出:0
輸出:0
輸出:7
輸出:1

回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:53 | 顯示全部樓層
作業5.9

寫一個程式分解質因數。輸入一正整數n。輸出為n的所有質因數及其次方。輸出時質因數由小排到大。先輸出質因數再輸出次方。例如以下輸出輸入範例表示123456 = 2^6 * 3^1 * 643^1。

輸入:123456
輸出:2
輸出:6
輸出:3
輸出:1
輸出:643
輸出:1
回覆

使用道具 舉報

該用戶從未簽到

 樓主| 發表於 2014-3-25 19:57 | 顯示全部樓層
作業5.10

    編寫一個程式將一個給定的數字作轉換。轉換的方法是將數字的最後一位數變成第一位數,例如1234年會變成4123。但當最後一位數是0時,0會變成第一位數然後被丟棄。舉例來說,1100100會變成110010然後變成11001,然後變成11100,然後是1110,然後111。
   輸入為兩個數字,第一個數字是要轉換的數字,第二個是轉換的次數。輸出則列出由給定的數字開始所有轉換的過程。

輸入:1100100
輸入:9
輸出:1100100
輸出:110010
輸出:11001
輸出:11100
輸出:1110
輸出:111
輸出:111
輸出:111
輸出:111
輸出:111

回覆

使用道具 舉報

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2016-12-7 05:47

Discuz! X

© 2009-2016 Microduo

快速回覆 返回頂部 返回列表