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語言的考試的,學了一學期了,我感覺沒什么大的進步,每次作業做的時候都是非常迷的