| 問題 | 回答 |
|---|---|
| 這個作業屬於哪個課程 | C語言程序設計ll |
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/10127 |
| 我在這個課程的目標是 | 熟練掌握運用各語法,獨自寫出代碼解決許多計算題,編寫出一個小程序 |
| 這個作業在哪個具體方面幫助我實現目標 | 選擇題幫助更好的理解了概念,函數題幫助我更好的掌握語法 |
| 參考文獻 | 《C語言程序設計》 百度 CSDN |
1. PTA實驗作業
1.1 題目6-1 統計某類完全平方數
題目內容描述:本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。
1.1.1 數據處理
- 數據表達:定義了整型變量n,m,定義了數組a[10]
- 數據處理:使用了嵌套循環
int IsTheNumber ( const int N )
{
定義n,m;
n = N的根方並取整;
m = n*n;
if(m == N)
{
定義大小為10的數組a,同時a內所有元素均初始化為0;
while(m>0)
{
定義i,i = m % 10;
a[i]++計算有多少個這樣的整數;
if(a[i]==2)
{
滿足條件,返回1;
}
m = m/10;
循環計算
}
}
return 0;
}
1.1.2 實驗代碼截圖

1.1.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 105 500 | cnt = 6 | 105至500間有6個完全平方數 |
| 100 200 | cnt = 3 | 100至200間有3個完全平方數 |
| 1 1000 | cnt = 9 | 1至1000間有9個完全平方數 |
1.1.4 PTA提交列表及說明

提交列表說明:
- 編譯錯誤:用的不是數組,然后寫的整個代碼好像都有問題
- 編譯錯誤:a[10]={0}寫成了a[10]=0
- 編譯錯誤:a[i]++寫成了i++
- 編譯錯誤:n=(int)sqrt(N1.0)寫成了n=sqrt(N1.0)
- 編譯錯誤:m == N寫成了m = N
- 編譯錯誤:int IsTheNumber ( const int N )后面加了個分號
1.2 題目6-2 統計各位數字之和是5的數
題目內容描述:本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於5;另一個函數統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和。
1.2.1 數據處理
- 數據表達:定義了整型變量n,sum,i
- 數據處理:使用了while語句,if-else語句,for語句
{
定義n;
定義sum,賦初始值為0;
n = number;
while(n)
{
sum = sum+n%10;取余求和
n = n/10;去除個位數
}
if(sum == 5)如果各位數字之和等於5
{
返回1;
}
else
{
返回0;
}
}
void count_sum(int a, int b)
{
定義count,賦初始值為0;
定義sum,賦初始值為0;
for (int i = a; i <= b; i++)
{
if(is(i))調用函數
{
count++;
sum = sum+i;計算所有符合條件的值之和
}
}
輸出sum,count;
}
1.2.2 實驗代碼截圖

1.2.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 104 999 | ![]() |
104至999間有15個滿足要求的數 |
| 1 10000 | ![]() |
1至10000間滿足要求的數之和為77770 |
| 100 9990 | ![]() |
100至9990間有50個滿足要求的數 |
1.2.4 PTA提交列表及說明

提交列表說明:
- 運行超時:我不知道錯在哪,然后改了好幾個地方
- 編譯錯誤:for語句的條件中有一個分號寫成了逗號
- 編譯錯誤:沒有定義i,直接寫了i=a
- 編譯錯誤:沒有給sum賦初始值
- 編譯錯誤:沒有寫表達式n=number
2. 代碼互評
同學1代碼截圖

同學2代碼截圖

自己代碼截圖

代碼對比
- 同學1使用了do-while語句,同學2的嵌套循環中使用了兩個while語句
- 同學1使用了if(a>b)進行判斷,我沒有她進行她的這一步
- 同學2使用了兩次if-else語句,還有兩個不同意義的return 0;
- 我的代碼和同學1的代碼還是有很大一部分相似的,同學2的代碼最簡短,感覺很獨特,我不是很明白她的代碼,是一種值得學習的方法
3. 學習總結
3.1 學習進度條
| 周/日期 | 這周所花時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 7/10.9-7/10.11 | 21小時 | 120 | else-if從句,關系運算 | PTA顯示的答案錯誤究竟是什么 |
| 8/10.16-8/10.18 | 15小時 | 84 | 用for語句計算簡單的序列和 | 雙精度浮點型變量的定義 |
| 9/10.23-9/10.26 | 16小時 | 102 | 學到while語句的一點點知識,對自定義函數了解了一點 | while語句的具體用法 |
| 10/10.30-10/11.2 | 14小時 | 145 | 多分支結構,邏輯運算符 | 當分支較多時不太會使用if,else,for |
| 11/11.6-11/11.8 | 14小時 | 143 | 利於switch語句處理多分支選擇問題 | 偽代碼的具體定義 |
| 12/11.13-12/11.15 | 15小時 | 75 | 使用while語句進行循環計算 | do-while語句和while的區別還不是特別理解 |
| 13/11.20-13/11.22 | 13小時 | 91 | 使用continue語句進行循環,使用嵌套循環進行計算 | 還是有點分不清break語句和continue語句的區別 |
| 14/11.27-14/11.29 | 13小時 | 125 | 對循環結構進行了鞏固復習和總結 | 當遇到比較復雜的嵌套循環時會出現混亂 |
| 15/12.4-15/12.6 | 15小時 | 101 | 函數的聲明,調用,參數的傳遞 | 函數的調用,數組的定義 |
3.2 累積代碼行和博客字數
| 時間 | 博客字數 | 代碼行數 |
|---|---|---|
| 第四周 | 596 | 32 |
| 第五周 | 1288 | 54 |
| 第七周 | 2240 | 174 |
| 第八周 | 3254 | 364 |
| 第九周 | 6124 | 512 |
| 第十周 | 8085 | 796 |
| 第十一周 | 9625 | 1030 |
| 第十二周 | 11172 | 1185 |
| 第十三周 | 14142 | 1356 |
| 第十四周 | 15742 | 1567 |
| 第十五周 | 17427 | 1748 |

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


3.3.2 學習體會
- 看到這周的題目第一感覺就是難,同學也基本說不知道怎么做,然后就上網搜資料,一直錯,一直錯,特別絕望
- 做了思維導圖,這周的知識點在腦海中有了個大致的框架,但還是很懵,感覺函數好難
- 挺擔心c語言的考試的,學了一學期了,我感覺沒什么大的進步,每次作業做的時候都是非常迷的



