這個作業屬於那個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | C語言I作業0011 |
我在這個課程的目標是 | 對於學過的內容,可以很熟練的進行編程,而且還可以看懂代碼的每一步代表着什么意思,訓練自己找錯的能力 |
這個作業在那個具體方面幫助我實現目標 | 思維導圖可以幫我建好學習框架,PTA的題目讓我鞏固知識點 |
參考文獻 | 百度、《C Primer Plus》第六版,C語言程序設計 |
1.PTA實驗作業
1.1題目名1
本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於5;另一個函數統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和。
1.1.1數據處理
數據表達:第一個函數定義了兩個整型變量:num1,sum,並且給sum賦值為0;第二個函數定義了3個整型變量:count,sum2,i,並且給count、sum賦值為0
數據處理:
int is( int number )
定義num1和sum兩個變量
sum=0;
用do-while循環{
num1=number%10;
sum=sum+num1;
number=number/10;
}終止條件是number等於0
然后用if-else語句判斷{
if(sum==5)
return 1;
else
return 0;
}
void count_sum( int a, int b )
定義count、sum2、i三個變量
count=0;
sum=0;
用for循環語句,里面包含一個if語句
for(i=a;i<=b;i++){
if(is(i)){
count++;
sum2=sum2+i;
}
}
如果滿足第一個函數就進行累加,否則就不執行
最后輸出結果:printf("count = %d, sum = %d",count,sum2);
1.1.2實驗代碼截圖
1.1.3造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 | 例題上的數據 |
5 60 | 5 is counted. count = 6, sum = 165 | 隨機輸入的數據進行測試 |
1000 1999 | count = 15, sum = 17220 | 隨機輸入的數據進行測試 |
10 30 | count = 2, sum = 37 | 隨機輸入的數據進行測試 |
1.1.4PTA提交列表及說明
1.運行超時:我開始用的while循環,用DevC++測試發現一直循環,而且根據題目發現要用do-while循環
2-4多種錯誤:改了幾次才知道是第二個函數中間函數出了問題,於是把第二段函數全刪了,重新弄(有過忘記打上計數的代碼、忘記給變量賦值)
5.格式錯誤:在答案輸出的那里等號兩邊要空格
1.2 題目名2
本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等
1.2.1 數據處理
數據表達:定義了i, a[100],b, count,j五個變量,其中a[100]是數組,都是整型變量,給count賦值為0,令i=N、b=sqrt(i)(開根號);
數據處理:
int IsTheNumber(const int N)
定義i, a[100],b, count,j;
count=0;
i = N;
b = sqrt(i);
if (b*b==i)
while(i>0)
a[count]=i%10;
i=i/10;
for (j = 0; j < count; j++)
{
if (a[count] == a[j])
return 1;
}
這里開始判斷是否是完全平方數,中間有判斷是否有兩個數字是一樣的,就是用數組儲存每次計算的結果,然后進行比較是否相等
count++;
然后返回程序
1.2.2 實驗代碼截圖
輸入數據 | 輸出數據 | 說明 |
---|---|---|
105 500 | cnt = 6 | 例題上的數據 |
140 463 | cnt = 4 | 隨機輸入的數據進行測試 |
501 666 | cnt = 0 | 隨機輸入的數據進行測試 |
668 999 | cnt = 2 | 隨機輸入的數據進行測試 |
1.2.4 PTA提交列表及說明
因為要用到數組這個知識點,所以現在Devc++上測試,直達對了才謄到上面來,我來說說思路:這個題目其實想了很久,因為確實不知道怎么下手,后來覺得用數組會更簡單,但因為這個知識點上課還沒有講到,所以不確定能不能用,但是不用數組的話我又想不出,所以最后決定還是用數組,數組可以用來儲存數據,所以每算一次,我就儲存在數組中,然后進行比較,看是否有相同的數,如果有,就返回計數。用數組解決這個問題簡單了很多,我現在還沒有想到不用數組怎么做,如果有知道的話,可以告訴我嗎?
2.代碼互評
2.1同學代碼截圖(計科3班李雙同學)
2.2自己代碼截圖
2.3比較結果
1.我們采用的方法不一樣,她采用了數組的方法,我沒有,我就是用都-while語句來進行計算
2.我們只是計算的方式那里有一點不一樣,其余的判斷和求累積和是差不多的,兩個方法都可以,看自己的習慣吧
2.4同學代碼截圖(計科1班李澤基同學)
2.5自己代碼截圖
2.6比較結果
1.這一題我是做了很久也沒有做出來,問了同學才知道要用宏這個知識點要判斷誤差,這個是同學教我做的,而他沒有用宏這個知識點,這點我很佩服他
2.我相信他一定做了很久,這個代碼我要向他學習,他沒有用我們沒學過的知識點做出來了,我要多向他請教
3.學習總結
3.1 學習進度條(5分)
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第一周(9.19-3.27) | 6天 | 26行 | Hello world編程和Markdown語法 | 現在沒有疑惑 |
第二周(9.25-10.4) | 4天 | 45行 | 華氏度與攝氏度的轉換 | 對於變量的類型還不是很懂 |
第三周(10.8-10.11) | 3天 | 大約100行左右 | 計算分段函數和學習if-else語句 | 對於if-else語句還是不那么熟練 |
第四周(10.15-10.17) | 3天 | 大約75行左右 | for循環語句和指定次數的循環程序設計 | 關於指定次數的循環程序設計還不是很清楚 |
第五周(10.22-10.25) | 4天 | 大約110行左右 | 使用自定義函數來編程和生成乘方表和階乘表 | 關於自定義函數的編程的細節還是不太懂 |
第六周(10.29-11.1) | 4天 | 大約120行左右 | 運用分支結構編程、字符型數據、邏輯運算符 | 對於邏輯運算符還不是很清楚,有一點點懵 |
第七周(11.6-11.8) | 3天 | 大約150行左右 | 運用switch語句來編程 | 現在感覺沒有什么疑惑點,可能還沒發現 |
第八周(11.12-11.15) | 3天 | 大約200行左右 | 進一步學習循環結構,學習了while和do-while語句 | 目前還沒有發現什么疑惑點 |
第九周(11.19-11.22) | 3天 | 大約170行左右 | 學習了break語句和continue語句的用法以及嵌套循環 | 可能是剛學,在做PTA不是很熟練 |
第十周(11.26-11.28) | 2天 | 大約185行 | 對之前學過的循環結構進行了總結 | 暫時還沒有發現問題 |
第十一周(12.3-12.5) | 3天 | 大約200行 | 進一步學習了函數,以及局部變量和全局變量 | 今天講的比較快,有點懵的感覺,自己還需要時間去消化 |
3.2 累積代碼行和博客字數(5分)
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
本學期的C語言的最后一節新課落下了帷幕,時間真的好快,一下子就要考試了,記得從最開始敲代碼時的崩潰到后面慢慢的習慣,這一個學期還是收獲了很多,雖然中間的路並不平坦(可以說很艱難哈哈),但我還是堅持下來了,並且我也完成了,雖然還是有瑕疵,但我相信自己會慢慢改正的,我也會變得越來越好。本學期雖然結束了,但我們的學習之路還沒有結束,我們這個專業是要不斷學習的,所以不能放松,下周就會有考試,加油啦!