| 問題 | 答案 |
|---|---|
| 這個作業屬於哪個課程 | c語言程序設計I |
| 這個作業的要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10129 |
| 我在這個課程的目標是 | 學好怎樣精確地打代碼,快速准確的完成PTA,在博客園上將自己的錯誤總結與歸納 |
| 這個作業在具體哪個方面幫助我實現目標 | 對自己打的代碼進行糾錯與記錄,對別人的代碼進行挑錯與學習 |
| 參考文獻 | Brian W.Kernighan, Dennis M.Ritchi |
作業格式
1.PTA實驗作業

1.1 6-1 統計某類完全平方數
* 題目內容描述:本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等
1.1.1 數據處理
* 1.數據表達:
int IsTheNumber ( const int N )
{
int ← sqrt(N);
int n ← N;
int a[10] ← {}; //變量r,n,a,
if(r*r = N){ //篩選是否為完全平方數
int d;
while(n){
d ← n%10;
a[d]++;
if(a[d]←2){ //設a[d]==2定義
return 1;
break;
}
n/←10;
}
}
return 0;
}
* 2.數據處理:用int整型n1,n2的變量
1.1.2 實驗代碼截圖

1.1.3造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 121 440 | cnt=4 | ![]() |
| 169 225 | cnt=1 | ![]() |
1.1.4提交列表及說明

* 編譯錯誤: int r=sqrt(N); int n=N; int a[10]={};一開始將這三個用int定義的變量合並為一個了,結果發現是編譯錯誤,放在devec++上運行,發現是好像說的是不能這樣放,所以就把他們分開了,重新弄了三個用int定義的。
1.2 6-2 統計各位數字之和是5的數
* 題目內容描述:本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於5;另一個函數統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和。
1.2.1 數據處理
* 1.數據表達:
int is( int number )
{
int sum ← 0,n;
while(number≠0) //while的語句
{
n ← number%10; //定義n,賦值number%10
sum ← sum+n;
number ← number/10;
}
if(sum==5) //用if語句,賦sum的值
{
return 1;
}
else
{
return 0;
}
}
void count_sum( int a, int b )
{
int i,count←0,sum←; //用int定義i,count,sum全為原始值0;
for(i←a;i<←b;i++)
{
if(is(i))
{
count++;
sum←sum+i;
}
}
printf("count ← %d, sum ← %d\n",count,sum); //printf輸出
}
1.2.2實驗代碼截圖

1.2.3造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 104 999 | 104 is counted.count = 15, sum = 3720 | 這個的各位數之和為5 |
1.2.4提交列表及說明

* 編譯錯誤:對於這一系列的編譯錯誤,無非還是小細節上的錯誤,比如說這一系列的操作【void count_sum( int a, int b ){ i,count=0,sum=0; if(is(i)){ count++;】,其實很難想到去這樣做,然而這些卻又是這道題的關鍵,審題不清,導致變量以及變量擺放的位置有點差異,所以會導致編譯錯誤。
二.代碼互評


* 第一個是我的,第二個是同學的,這兩個代碼差別不大,區別在於定義的變量數不一樣,前者比較定義得多,后者則比較簡潔,所以,整體看下來后者的代碼比較清晰易懂,他的思路也很清楚,這道題他的代碼優勢更突出。
3-1.學習進度條
| 周/日期 | 這周所花時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 第一周(9.19-9.27) | 7天 | 28行 | 學到了最簡單的格式以及一些些語法,懂得一些編譯的注意事項 | 不懂為什么要那樣注意編譯,錯一個像欠一個空格這樣的就都不對還有一些特定的符號的用處 |
| 第二周(9.25-10.4) | 5天 | 20行 | 學會了對於程序設計的一些東西,比如計算啊,就會自己開始編程,解決問題時就會簡潔許多 | 不知道一些符號代表什么意思,就只是死記了下來 |
| 第三周(10.8-10.11) | 3天 | 102行 | 這周PTA作業較多,難度系數較大,因為都不是書上的,要自己開始琢磨,怎么去排列和提出問題,學會的東西也更多,知道自己編程和自己想辦法去找錯誤,以及怎樣思考這樣的一些步驟 | 很多很多的#include代表什么意思,還增添了許多新符號,不知道是什么意思,只知道一些淺顯的表層使用 |
| 第四周 | 8個小時 | 84行 | 學到了新的“for"循環語句,又多懂了一些格式的注意事項 | 有時候自己的循環體有點搞不清楚,到底該怎樣去設 |
| 第五周 | 3天 | 89 | 學到了什么是調用函數(主調函數和被調函數)還有聲明函數 | 有些函數類型還不是特別熟悉 |
| 第六周 | 3天 | 124 | 學了分支結構,更加熟練運用if和else語句 | 感覺還行,沒有特別不會的地方 |
| 第七周 | 3天 | 91 | 學了switch語句,覺得更加好用,全是case比較簡單實用 | switch語句掌握得還不是特別好,老是一下想不起來 |
| 第八周 | 3天 | 72 | 學了while語句和do while語句 | pta作業有點難,還有一些搞不清的地方,while和do while做題目的時候不知道用哪個 |
| 第九周 | 3天 | 60 | 本周學了foe循環的嵌套語句 | 本周作業沒有完成得很好,還需要改進很多,對於for循環的使用得多多寫寫代碼,才能越來越熟練。 |
| 第十周 | 3天 | 123 | 本周算是將上幾周的內容概括了一遍 | pta題目很難,問了許多人,改了許多遍才完成,也算記憶深刻一些吧 |
| 第十一周 | 3天 | 51 | 本周題目難度較大,學了新的函數名的調用,實參和形參,還有全局變量和局部變量 | 分不清全局變量跟局部變量,然后參數形式也不太懂 |
累計代碼行和博客字數

思維導圖

3.3學習感悟
* 這周學習了關於形參和局部變量以及全局變量,我覺得有點難懂,函數名也挺多的,這次的pta作業超級難,我大部分題目都是猜加查資料,一個題目需要花費很長時間,所以印象自然會深一點點,但是還是有很多不懂得地方,我會多看看例題或問問其他人來解決。


