目錄表
國立屏東大學 資訊工程系 程式設計(一)
Turnin作業4(c.hw4)
- Turnin Code: c.hw4
- Due Date: 2024/11/12(週二) 23:59 Hard Deadline
- 涵蓋範圍: 至第7章while迴圈
作業說明
每次Turnin作業會包含多個程式題目(p1、p2、…、pN),每題將提供其題目、檔案命名規定、功能要求以及參考的執行結果。建議同學可以為每次的Turnin作業建立一個資料夾以便於管理,例如本次的作業可以使用mkdir hw4
指令來建立一個名為hw4的資料夾,並在該資料夾裡編寫此次作業的程式檔案。另外要注意的是,每一題都必須依據題目要求為程式檔案命名,例如此次turnin作業的p1,其檔案名稱要求命名為 IsPrimeNumber.c,請務必注意大小寫一致,任何錯誤的檔案命名都將不予計分。
繳交方式說明
請注意每次turnin作業都必須在截止時間前完成繳交,逾時不候且不得補交。以此次作業為例,其turnin code為c.hw4,當你完成p1的程式碼撰寫,並經編譯執行確認無誤後,可以使用下列指令完成繳交(請自行注意是否在正確的資料夾裡操作):
[7:17 user@ws in hw4] turnin▴c.hw4▴IsPrimeNumber.c↵
後續還可以使用同樣的方式,將p2、p3、…、p10的程式檔案加以繳交。當然,你也可以等到所有小題都作答完成後,再整批地將資料夾下的所有作業上傳,請參考以下指令將目前資料夾(hw4)內所有副檔名為.c的檔案整批繳交:
[7:17 user@ws in hw4] turnin▴c.hw4▴*.c↵
註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用淺灰色方框
顯示。
p1 判斷是否為質數(IsPrimeNumber.c,此處首字母為大寫的I(ㄞ))
質數是在比1大的自然數中,除了能被1還有該數本身整除以外,無法被其他自然數整除。
請設計一個C語言程式IsPrimeNumber.c,讓使用者輸入一個正整數,檢查該整數是否為質數。本題的輸出結果可以參考如下:
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴2↵
The▴integer▴2▴is▴a▴prime▴number.↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴30↵
The▴integer▴30▴is▴not▴a▴prime▴number!↵
[7:17 user@ws in hw4]
p2 是否為2的冪次(IsPowerOf2.c,此處首字母為大寫的I(ㄞ))
請設計一個C語言的程式IsPowerOf2.c,讓使用者輸入一個正整數(不超過10000),並判斷該數是否為2的冪次,其執行結果可參考如下:
注意:此題批改時將不會加入 -lm
編譯參數。
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴16↵
16▴is▴2▴to▴the▴power▴of▴4.↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴50↵
50▴is▴not▴a▴power▴of▴2.↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴-2↵
Input▴error!↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴0↵
Input▴error!↵
[7:17 user@ws in hw4]
p3 四角錐數(SquarePyramidalNum.c)
四角錐數(或稱爲金字塔數)是一個表示底面為正方形的金字塔能堆積的球數總和,其公式如下: $$S_n=1^2+2^2+3^2+...+n^2$$ 其中,n是金字塔的層數。 其輸出結果可以參考以下的內容:
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴7↵
1▴+▴4▴+▴9▴+▴16▴+▴25▴+▴36▴+▴49▴=▴140↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴1↵
1▴=▴1↵
[7:17 user@ws in hw4]
p4 階乘(Factorial.c)
一個正整數的階乘,表示從 1 到該數之間所有正整數的乘積。例如,5 的階乘記作$5!$,計算方法如下: $$5!=1\times2\times3\times4\times5$$ 此外,根據數學定義,$0!$的值被定義為$1$。
請設計一個C語言的程式Factorial.c,根據使用者輸入的整數,將其階乘的值輸出,其輸出結果可以參考以下的內容:
注意:本題的輸入不會是大於20的非負整數。
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴7↵
7!▴=▴1▴*▴2▴*▴3▴*▴4▴*▴5▴*▴6▴*▴7▴=▴5040↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴1↵
1!▴=▴1↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴0↵
0!▴=▴1↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴-1↵
Input▴Error↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴an▴integer:▴21↵
Input▴Error↵
[7:17 user@ws in hw4]
p5 最大公因數(GCD.c)
注意:此題批改時將不會加入 -lm
編譯參數。
最大公因數是能夠同被兩個數整除的最大正整數。
請設計一個C語言的程式GCD.c,讓使用者輸入兩個不超過10000的正整數,並且使用迴圈去找出這兩個數字的 greatest common divisor(GCD,最大公因數),其輸出結果可以參考以下的內容:
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴two▴numbers(a,b):▴18,4↵
GCD(18,▴4)▴=▴2↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴two▴numbers(a,b):▴256,40↵
GCD(256,▴40)▴=▴8↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴two▴numbers(a,b):▴80,80↵
GCD(80,▴80)▴=▴80↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴two▴numbers(a,b):▴-1,1↵
Error!↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴two▴numbers(a,b):▴1,0↵
Error!↵
[7:17 user@ws in hw4] ./a.out↵
Please▴input▴two▴numbers(a,b):▴10001,1↵
Error!↵
[7:17 user@ws in hw4]
【提示:同學可以使用輾轉相除法來求得兩個整數的最大公因數-使用兩個數字中較大者作爲被除數、較小者作爲除數進行除法,並將此回合的除數與餘數作爲下一個回合的被除數與除數,再繼續進行除法,反覆執行直到某一回合的餘數為0爲止,則該回合的除數即爲兩數的最大公因數。】