標籤:複製粘貼 數列 相等 提交 組合 基本 知識點 idt 結構
一.迴圈PTA實驗作業
題目一.7-2 求平方根序列前N項和
1.本題PTA提交列表
2.設計思路
本題調用了sqrt數學Function Compute平方根,其次只用了一層迴圈,計算平方根之後使用迴圈累加計算總和sum。
藉助了中間值item去接收每一次的平方根值,再將其累加到sum中。
程式較為簡單明了,使用for迴圈較為簡單。
3.本題調試過程碰到問題及PTA提交列表情況說明。
(1) for迴圈使用錯誤。
因為for語句只控制緊跟其後的一條語句,
而在第一次的提交過程中沒有在for語句後加中括弧,
沒有將for語句後的迴圈括起來,這就導致了答案錯誤。
(2)格式錯誤。
PTA是一個很嚴謹的平台,這次的錯誤我找了很久經過同學的提醒知道,在輸出的時候格式錯誤。
在輸出的時候sum後應加一個空格,“=”後也應加一個空格,這樣再次提交就對了。
這個錯誤警醒自己一定要按照題目要求去做,要仔仔細細地讀懂題目。
4.代碼。
題目二.7-7 計算階乘
1. 本題PTA提交列表
2. 設計思路
本題使用了兩層迴圈。
外迴圈用來將每次的階乘累加在sum中,內迴圈用來計算階乘值記錄在item中。
在外迴圈裡有一個非常重要的就是對每次的item賦初值,以免上次的item值仍然存在而導致答案錯誤。
外迴圈和內迴圈嵌套使用是一個重要的關於迴圈的知識點。
3.本題調試過程碰到問題及PTA提交列表情況說明。
本題由於在Dev中修改運行了直接複製粘貼在PTA上,所以沒有什麼較大的錯誤。
由於粗心而在Dev中出現了如下錯誤:
經過檢查後發現,字母拼字出錯了。此後還出現了很多類似的錯誤,總結出關於這種錯誤一般是由於單詞拼字出錯。
4.代碼。
題目三.7-32 求1到100的和
1.本題PTA提交列表
2. 設計思路
使用一層迴圈將一到一百累加起來,儲存在sum中,最後輸出。
本題是較為簡單的迴圈體,但還是要細心去做。
3.本題調試過程碰到問題及PTA提交列表情況說明。
(1)由於粗心導致答案錯誤。
本題剛開始提交錯誤,自己找了半天沒找出來錯誤,在Dev上也沒有提示。
又提交了第二次還是答案錯誤,我找了同學幫我尋找了一下錯誤,printf語句中出現錯誤。
printf("sum = %d",&sum);
sum前不應加&,由於粗心打了上去,在尋找錯誤中浪費了很長時間。
所以,以後在打代碼的時候一定要細心,一方面為了正確性,另一方面為了防止浪費時間。
二、同學代碼結對互評
1.互評同學:朱佳楠
2.My Code、互評同學代碼
朱佳楠同學的代碼:
My Code:
3.我和朱佳楠同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?
不同在於:朱佳楠同學使用的是while迴圈,我使用的是for迴圈。
各自優勢:朱佳楠同學的代碼更加簡潔,在變數的定義中只用了一個字母,這樣出錯率很低。如果在變數的定義中變數的名稱太長的話會導致在之後的查錯中浪費很多時間。
我更喜歡朱佳楠同學的代碼。
三、本周題目集的PTA最後排名。
四、本周學習總結(2分)
1.我學會了簡單的迴圈結構去編寫程式,還掌握了一些迴圈嵌套的使用。
2.本周的內容,你還不會什嗎?
如果程式中要求三個三個以上的迴圈結構會有些吃力,對有些題目還是不會寫。
比如7-28 7-31 7-34等題目都不會寫。
3.迴圈結構考試總結
(1).哪題做錯了,怎麼改?
7-6這道題是部分錯誤。
具體的原因還不知道。準備再多問幾個同學或者老師看看如何修改。
(2).考試結果滿意麼,怎麼改進?
較為滿意,儘力就好。
希望自己還是要多看書多打代碼。
二.數組PTA實驗作業
題目一.7-1 數組元素迴圈右移問題
1.本題PTA提交列表
2.設計思路
使用數組去儲存一個數列,進而再用數組的性質去完成題目要求。
本題做了挺長時間的,剛開始一直想用一個迴圈去完成右移,不管怎麼樣都不對。
後來再想了想,用兩個迴圈來實現右移會比較容易。
使用內迴圈完成右移一次,再用外迴圈來實現題目所要求的迴圈右移n次。
而且在內迴圈中,使用遞減比累加更加容易,用item接受a[n-1]的值,在內迴圈結束的時候將item的值賦給新組成數組的a[0]。
3.本題調試過程碰到問題及PTA提交列表情況說明。
’
(1).段錯誤。
剛開始一直不知道錯在了哪裡。後來經過搜尋知道段錯誤一般就是給系統預留的空間不夠題目所要求的儲存空間的大小。
剛開始定義了整型數組a[10],後來改成a[100]就正確了。
其實在後來學了動態分配空間之後,如果使用動態分配空間就不會有這樣的問題了。
(2).在題目完成後,我想試試在內迴圈中如何用累加的方式而不是遞減的方式去實現右移一次,發現很麻煩而且答案錯誤,最終還是採用了遞減的方式。
4.代碼。
題目二.7-4 尋找整數
1. 本題PTA提交列表
2. 設計思路
使用數組儲存N個整數,再在數組中使用for迴圈尋找與x相等的數,如果找到就輸出其在數組中的下標i,然後退出迴圈。
如果沒找到就輸出"Not Found"。
3.本題調試過程碰到問題及PTA提交列表情況說明。
本題出沒有太大的錯誤,有些小錯誤在Dev上調試過之後直接複製在PTA上了。
在畫流程圖的時候發現在代碼中定義的flag可以省去,在找到x的值的時候直接輸出下標然後退出迴圈,如果沒找到,i的值一直進行累加,當累加到n的時候直接輸出"Not Found",就無需flag的存在了,代碼也會很簡潔一點。
4.代碼。
題目三.7-10 矩陣運算
1.本題PTA提交列表
2. 設計思路
本題使用了二維數組,這是數組應用中最重要的一部分。
使用二維數組去輸入一個n階矩陣,在使用數組的性質,進而使用for迴圈進行計算該矩陣除副對角線、最後一列和最後一行以外的所有元素之和,累加在sum中,最後輸出sum的值。
3.本題調試過程碰到問題及PTA提交列表情況說明。
(1)break使用錯誤。
第一次使用了if語句去判斷是否為副對角線元素,如果是就退出迴圈,這就導致了答案錯誤。
後來經過與同學討論沒有使用break語句,使用if語句,如果累加到副對角線元素則sum的值不變,即語句sum=sum。答案正確。
4.代碼。
二、同學代碼結對互評
1.互評同學:王慧婷
2.My Code、互評同學代碼
王慧婷同學的代碼:
My Code:
3.我和王慧婷同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?
不同在於:王慧婷同學代碼是將矩陣除最後一列和最後一行以外的所有元素累加起來,再減去副對角線上的元素。
而My Code是分類累加起來。
各自優勢:王慧婷同學的代碼用了另一種思路將代碼更加簡潔一些。
我更喜歡王慧婷同學的代碼。
三、本周題目集的PTA最後排名。
四、本周學習總結(2分)
1.我學會了簡單的數組去編寫程式,還掌握了一些二維數組的使用。
2.本周的內容,你還不會什嗎?
如果是較為簡單的二維數組程式我還可以較好的完成,稍加一些難度的二維數組完成的時候就很困難。
還有很多題目不會:7-5,7-7,7-8,7-9,7-11,7-13,7-15,7-16,7-17,7-19,7-20,7-23,7-24,7-25,7-27,7-28,7-29,7-30
3.數組考試總結
(1).哪題做錯了,怎麼改?
7-17這道題是部分錯誤。
具體的原因還不知道。準備再多問幾個同學或者老師看看如何修改。
(2).考試結果滿意麼,怎麼改進?
不滿意,有很多題目沒做,希望自己有時間去做一做。
三.函數PTA實驗作業
題目一.7-1 求組合數
1.本題PTA提交列表
2.設計思路
本題使用了兩個函數調用結構。
第一個ans(y,z) 函數的調用是為了簡單地實現求組合數的公式計算,進而將計算結果儲存在ans中,最後傳回值。
??第二個fact(x)函數的調用是為了計算球組合數公式計算中簡單的階乘,在計算階乘的時候使用函數,讓代碼能夠重複利用子Function Compute,進而將計算結果儲存在jc中,最後傳回值。
兩個函數的調用使代碼簡潔明了,這就體現了函數應用的重要性。
3.本題調試過程碰到問題及PTA提交列表情況說明。
(1).函數類型定義出錯。
題目明確要求,計算階乘的fact 函數類型為double,而我由於粗心將其類型定義為int,導致答案部分錯誤。
而且在調試中浪費了很多時間,重複提交了很多次。
4.代碼。
題目二.7-3 求冪之和
1. 本題PTA提交列表
2. 設計思路
本體是較為簡單的函數調用的題目。
調用函數mi(n)計算2的冪之和,在子函數中簡單地實現了2的冪次方的累加,進而將累加值儲存在sum中,最後傳回值。
3.本題調試過程碰到問題及PTA提交列表情況說明。
本題由於在Dev上已經調試好直接複製在PTA上,沒有錯誤。
但是在Dev的調試中我發現自己還是很粗心,某些語句沒有分號,字母拼字出錯之類的問題等等,還是要勤加練習,也要更加細心。
4.代碼。
題目三.7-5 近似求PI
1.本題PTA提交列表
2. 設計思路
本題代碼的基本架構沒什麼問題,但由於其中計算複雜還是有一點難度。
在主函數的基本架構下調用了函數pi(eps)實現了近似求PI/2的公式,進而將值儲存在pi中,返回pi的值到主函數中要乘2,最後輸出PI的值。
在子函數實現近似求PI/2的時候分子和分母的計算較為複雜,我們就將其分開計算使計算過程簡單明了了很多。
3.本題調試過程碰到問題及PTA提交列表情況說明。
(1)邏輯分析出錯。
在子函數的調用中,迴圈體語句中的item>x錯誤。
題目中要求最後一項小於給定精度eps,而子函數調用時的x就是eps,所以根據題目要求將item>x改成item<x即可。
(2)沒有保留小數點後五位。
又是由於粗心沒有認真審題,題目明確要求保留小數點後五位,我卻視而不見,導致答案錯誤。
希望自己以後打代碼一定要細心再細心!
4.代碼。
二、同學代碼結對互評
1.互評同學:高澗薇
2.My Code、互評同學代碼
高澗薇同學的代碼:
My Code:
3.我和高澗薇同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?
不同在於:高澗薇同學只調用了一次函數,而我調用了兩次函數。
各自優勢:高澗薇同學的代碼更加簡潔明了,她只調用了一次函數。我調用了兩次函數,雖然在練習中可以多練習函數的調用,但就實用意義來說高澗薇同學的代碼更好。
我更喜歡高澗薇同學的代碼。
三、本周題目集的PTA最後排名。
四、本周學習總結(2分)
1.我學會了如何使用函數調用去編寫程式,還瞭解了一些遞迴調用的使用。
2.本周的內容,你還不會什嗎?
對於老師後來補充的遞迴調用實在是難以理解,還有PTA上一些題不會做。
比如7-2,7-4,7-6,7-7,7-8,7-9,7-11題目都不會
3.函數考試總結
(1).哪題做錯了,怎麼改?
7-8這道題是答案錯誤。
自己嘗試了很多遍還是答案錯誤,找老師同學問問儘快把這道題做出來。
(2).考試結果滿意麼,怎麼改進?
較為滿意,儘力就好。
希望自己可以細心一些,答案錯誤的機率以粗心居高不下,不管做什麼一定要細心。
希望自己還是要多看書多打代碼。
PTA實驗報告(迴圈 數組 函數)