問題 |
答案 |
這個作業屬於那個課程 |
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點前提交讓我心態有點炸了,但是我沒有產生反正已經加不了分了慢慢拖着做的想法。
