一.表格
這個作業屬於哪個課程 |
C語言程序設計II |
這個作業要求在哪里 |
C語言I博客作業10 |
我在這個課程的目標是 |
把C語言學精,熟練掌握編程技術,努力找到簡單代碼的寫法 |
這個作業在哪個具體方面幫助我實現目標 |
PTA上做題,devc++慢慢掌握調試,加強對於循環語句for與if-else以及嵌套的理解與應用 |
參考文獻 |
百度百科,其他同學作業,《C Primer Plus》,教科書,偽代碼的寫法 |
二.本周作業
1.PTA實驗作業

1.1梅森數
題目內容描述:形如2ⁿ−1的素數稱為梅森數(Mersenne Number)。例如2²−1=3、2³−1=7都是梅森數。1722年,雙目失明的瑞士數學大師歐拉證明了2³¹−1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。本題要求編寫程序,對任一正整數n(n<20),輸出所有不超過2ⁿ−1的梅森數。
輸入格式:
輸入在一行中給出正整數n(n<20)。
輸出格式:
按從小到大的順序輸出所有不超過2ⁿ-1的梅森數,每行一個。如果完全沒有,則輸出“None”。
輸入樣例:
6
輸出樣例:
3
7
31
1.1.1數據處理:
- 數據表達:n,i,j,sum(變量);運算,賦值(怎么來);int(整型)
- 數據處理:
定義變量n來放正整數,i來放1——n之間所有數,j來放素數因子,sum來放梅森數。
輸入正整數
if(n==1)
判斷是否有梅森數。
沒有便輸出"None"
for(i=2;i<=n;i++)
i賦值等於2進入循環;循環結束一輪后,若i小於等於n,i便在原來的基礎上+1,再次循環。
sum=pow(2,i)-1;
for(j=2;j<=sum/2;j++)
素數因子不會超過本身的二分之一。
if(sum%j==0)
判斷是否為素數。
不是便跳出循環。
if(sum%j!=0)
判斷是否為素數。
是便輸出梅森數,並換行。
程序結束。
1.1.2實驗代碼截圖

1.1.3造測試數據
輸入數據 |
輸出數據 |
說明 |
6 |
 |
題目樣例 |
1 |
None |
不符合題目給出條件 |
10 |
 |
最小二位數 |
19 |
 |
輸入給出最大數 |
1.1.4PTA提交列表及說明

題目說明:這個題目與以前作業求素數類似,我在Devc++上面寫,寫了幾分鍾就出來了。不過老是有錯誤,是我自己沒看題目,在最后加了換行說明,答案便對了。
1.2 同構數
題目內容描述:一個數恰好出現在它的平方數的右端,這個數就稱為同構數。找出1~1000之間的全部同構數。
輸出格式:
在一行中輸出所有滿足條件的同構數,每個數輸出占6列。沒有其它任何附加格式和字符。
輸出樣例:
1 5 6 25 76 376 625
1.2.1數據處理:
- 數據表達:i(變量)這題只需要用if-else嵌套就行,所以只需要設置一個變量;賦值(如何來);int(整型)
- 數據處理:
定義變量i來放1——1000所有正整數
for(i=1;i<=1000;i++)
保證1到1000所有數進入循環
if(i*i%10==i)
判斷一位數是否為同構數
空6列輸出同構數
else
if(i*i%100==i)
判斷兩位數是否為同構數
空6列輸出同構數
else
if(i*i%1000==i)
判斷三位數是否為同構數
空6列輸出同構數
程序結束
1.2.2實驗代碼截圖

1.1.3造測試數據
輸入數據 |
輸出數據 |
說明 |
無 |
1 5 25 76 376 625 |
程序自動輸出 |
1.1.4PTA提交列表及說明

這個題為這次挑戰題,但仔細閱讀題目便知道,這和上次作業計算分數差不多。我在Dev上寫,每次都答案不對,再仔細看題目,原來還要輸出6列才行。加上了,答案便和題目樣例一模一樣。
2.代碼互評
2.1.1 同學代碼截圖①

2.1.2自己代碼截圖①

- 我們的不同之處.
- 這位同學和我思路差不多,只是我用的是if-else嵌套結構,他只用一個if-else然后包括所有條件即可輸出。
- 他是把平方數定義為n,然后直接輸出,而我直接用一個變量i表示所有條件。
- 我應該有時候運用他這種總和條件的知識,看着很長,但有時候挺好用的。
2.2.1同學代碼截圖②

2.2.2自己代碼截圖②

- 我們的不同之處.
- 他的思路和我差不多,不過表達有些偏差。
- 他用count計梅森數;我是直接當n輸入為1時,輸出None。
- 最后判斷素數方法有點不一樣,他for循環判斷j的最大值沒有除以2后面也用了一次;我是前面用了,后面判斷直接是否等於0。
- 他的這種思維更加簡單,不過邏輯沒有我緊密。
3.學習總結
3.1學習進度條
周/日期 |
這周所花的時間 |
代碼行 |
學到的知識點簡介 |
目前比較迷惑的問題 |
十/26/11-29/11 |
2天 |
110 |
對循環語句for,if-else加強理解以及對嵌套掌握更加熟練 |
還有點不清楚字符怎么用 |
九/19/11-22/11 |
3天 |
100 |
break語句,continue語句用法和區別 |
不太清楚字符怎么用 |
八/12/11-15/11 |
3天 |
120 |
while和do-while循環語句用法和概念 |
暫時沒有 |
七/5/11-8/11 |
3天 |
140 |
switch語句用法 |
如果x為浮點型,y,z為整型為什么x=y/z答案不對 |
六/28/10-2/11 |
3天 |
130 |
嵌套if-else語句,格式以及如何應用 |
不太清楚Devc++怎么調試 |
五/22/10-25/10 |
3天 |
100 |
用法如何定義函數,格式以及如何應用 |
暫時沒有 |
四/15/10- 18/10 |
3天 |
80 |
循環結構,流程圖,數學函數 |
數學公式的表達,為什么整數除以變量有一個要用括號括起來還要乘以1.0 |
三/9/10-13/10 |
3天 |
70 |
if-else,&&用法,字母%用法,數學函數 |
PTA每次答案錯誤,都十分難找出來。不得已重打 |
3.2累計代碼行和博客字數

3.3學習內容總結和感悟
3.3.1學習內容總結

3.3.2學習體會
- 這周主要進行對上周作業的鞏固,以及分析同學的代碼。
- 彭老師讓我們寫完代碼后,盡量想想有沒有更簡單代碼,也要盡量考慮時間復雜度,也就是代碼運行的時間。
- 再過2周就要考試了,我得抓緊時間復習了,不懂的問題,我要虛心請教,不過也要用提問的智慧。
- 我覺得可以在實驗課的時候,彭老師能用實例再次教一下我們調試,,因為真的很多人不會。。