| 問題 | 答案 |
|---|---|
| 這個作業屬於那個課程 | C語言程序設計II |
| 這個作業要求在哪里 | C語言I博客作業08 |
| 我在這個課程的目標是 | 熟練掌握C語言 |
| 這個作業在哪個具體方面幫助我實現目標 | 學會並熟練掌握了while循環 |
| 參考文獻 | Markdown基本語法 |
一.PTA實驗作業

1. 求整數的位數及各位數字之和
題目內容描述:對於給定的正整數N,求它的位數及其各位數字之和。
輸入格式:
輸入在一行中給出一個不超過10的9次方的正整數N。
####### 輸出格式:
在一行中輸出N的位數及其各位數字之和,中間用一個空格隔開。
輸入樣例:
321
輸出樣例:
3 6
(1)數據處理
數據表達:
用了整形變量R,N,i=0,sum=0
N是用戶傳入的要求計算的數
sum、i分別用來保存用戶要求輸出的正整數N的位數和用戶要求輸出的正整數N的各位數字之和
R用來取余
數據處理:偽代碼
定義變量N來放用戶傳入的要求計算的數,R用來取余,i用來保存用戶要求輸出的正整數N的位數並且對它初始化為0,sum用來保存用戶要求輸出的正整數N的各位數字之和並且對它初始化為0,
輸入數N
while(N>0)
取出N的最后一位數賦值給R
將去除N最后一位數后的數后賦值給N
計算N的位數賦值給i
將N的各位數字加起來賦值給sum
end while
輸出題目要求的正整數N的位數和N的各位數字之和
end
(2)實驗代碼截圖

(3)造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 10001 | 5 2 | 數字中間有連續0 |
| 999999999 | 9 81 | 最大N |
| 1 | 1 1 | 最小N |
| 982 | 3 19 | 隨機實驗 |
(4)PTA提交列表及說明

提交列表說明
1.編譯錯誤:從編譯器上復制粘貼的時候不知道出了啥問題導致編譯錯誤,第二次復制粘貼就對了。
2. 整除光棍
題目內容描述:這里所謂的“光棍”,並不是指單身汪啦~ 說的是全部由1組成的數字,比如1、11、111、1111等。傳說任何一個光棍都能被一個不以5結尾的奇數整除。比如,111111就可以被13整除。 現在,你的程序要讀入一個整數x,這個整數一定是奇數並且不以5結尾。然后,經過計算,輸出兩個數字:第一個數字s,表示x乘以s是一個光棍,第二個數字n是這個光棍的位數。這樣的解當然不是唯一的,題目要求你輸出最小的解。
提示:一個顯然的辦法是逐漸增加光棍的位數,直到可以整除x為止。但難點在於,s可能是個非常大的數 —— 比如,程序輸入31,那么就輸出3584229390681和15,因為31乘以3584229390681的結果是111111111111111,一共15個1。
輸入格式:
輸入在一行中給出一個不以5結尾的正奇數x(<1000)。
輸出格式:
在一行中輸出相應的最小的s和n,其間以1個空格分隔。
輸入樣例:
31
輸出樣例:
3584229390681 15
(1)數據處理
數據表達:用了變量x=0,s=1,n=0,i=0
x為用戶要求輸入的值
s用來儲存符合要求的最小光棍
n用來儲存最小光棍的位數
數據表達:偽代碼
定義變量x用來放用戶要求輸入的值,s用來儲存符合要求的最小光棍並且對它初始化為1,n用來儲存最小光棍的位數並且對它初始化為0
輸入題目要求的x
while(1)
if(s/x>0||i) Then 輸出s/d 對i加上1后賦值給i
if(s%x==0) Then 輸出n+1
else
對將s除以x的余數賦值給s
對n加上1並賦值給n
end whlie
end
(2)實驗代碼截圖

(3)造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 999 | 111222333444555666777889 27 | 最大x |
| 111 | 1 3 | x是光棍 |
| 1 | 1 1 | 最小x |
(4)PTA提交列表及說明

提交列表說明
1.部分正確:因循環太多次超過了規定的0.40S時間限制,未做改動。
2.部分正確:重新整理思路在while中加入一個if和一個if-else語句使循環次數減少
二.代碼互評
同學(彭傑)代碼:

同學(柏朝暉)代碼

自己代碼:

比較
(1)第一份代碼用了數組而我只用了while語句,結構上該同學的更加整潔美觀,但我的更加簡單。
(2)第二份的代碼有23行,而我的只有15行所用空間更少。
(3)第二份用的for循環與if-else語句,而我只用了while循環,我的代碼更簡單,容易懂。
三.學習總結
1.學習進度條
| 周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 第四周 | 7小時 | 100行 | 在屏幕上顯示Hello World! | 暫無 |
| 第五周 | 8小時 | 100行 | 求華氏溫度對應的攝氏溫度 | 暫無 |
| 第六周 | 30小時 | 200行 | 如何用 MinGW-w64 來編譯C程序 | 暫無 |
| 第七周 | 24小時 | 300行 | 運用if語句完成各種數學程序 | 對於&&的用法不了解 |
| 第八周 | 24小時 | 300行 | 學會了for循環語句 | 暫無 |
| 第九周 | 24小時 | 300行 | 學會了如何去自定義一個函數 | 暫無 |
| 第十周 | 30小時 | 400行 | 學會了if-else語句的嵌入 | 對“(Y%100)這個表達式意味着當Y不能整除4時(Y%100的余數不等於0時)表達式為真”這句話不是很懂 |
| 第十一周 | 24小時 | 450行 | 學會了如何去使用switch語句來做編程題 | 暫無 |
| 第十二周 | 24小時 | 450行 | 學會了如何去使用while循環來做編程題 | 對字符型的輸入不太了解 |
2. 累積代碼行和博客字數
| 時間 | 博客字數 | 代碼行數 |
|---|---|---|
| 第四周 | 510 | 100 |
| 第五周 | 510 | 200 |
| 第六周 | 1149 | 400 |
| 第七周 | 2027 | 700 |
| 第八周 | 3791 | 1000 |
| 第九周 | 5294 | 1300 |
| 第十周 | 6900 | 1700 |
| 第十一周 | 8614 | 2150 |
| 第十二周 | 10495 | 2600 |

3 .學習內容總結和感悟
(1)學習內容總結

(2) 學習體會
這一次雖然PTA題目比上一次多了2題但是我還是很快的做完了,說明在慢慢的進步,雖然數學思維有點跟不上,但是我會繼續努力的。雖然這次博客園更新導致未能在8點前提交讓我心態有點炸了,但是我沒有產生反正已經加不了分了慢慢拖着做的想法。

