標籤:考試總結 perfect 進位 主函數 images 思考 合數 原來 關係
一、PTA實驗作業題目1 (6-7)(1).本題PTA提交列表
(2)設計思路設計第一個函數判斷是否完數
int factorsum( int number )
- 定義sum、i;sum初始化歸0,迴圈變數i
- 若number=1,則sum=1
- i=1,當i小於number時迴圈
- 若number能被i整除,
- sum+=i
- 返回sum的值
設計第二個函數
void PrintPN( int m, int n )逐行輸出每個完數的因子累加形式的分解式
- 標誌變數flag=1,迴圈變數i
- for (;m<=n;m++)
- 若m等於1,
- flag=0
- 輸出1 = 1\n
- 若
factorsum( m ) == m &&m !=1
- flag=0
- 輸出m = 1;
- 進入迴圈
- i=2,當i小於m時迴圈,i++
- 若
m%i==0成立
- 輸出 + i的值
- 當內迴圈結束時再輸出分行符號
- 外迴圈結束
- 若
flag==1
- 輸出No perfect number
- 函數結束
(3)調試問題及解決方案
題目2(6-8)(1).本題PTA提交列表
(2)設計思路設計第一個函數
int fib( int n )實現輸出第t個fib數
- 定義迴圈變數i,Fibonacci數列初始兩數a、b(全為1),count(a+b之和)
- 若
n==1||n==2,
- return 1
- i=3,當i小於等於n時迴圈,i++
- count=b+a
- b=a
- a=count
- 迴圈結束
- return count
設計第二個函數
void PrintFN( int m, int n )實現一行中輸出給定範圍[m, n]內的所有Fibonacci數
- 定義迴圈變數i,標誌變數flag=0
- 當m小於等於n時迴圈;m++
- i=1,迴圈終止條件在迴圈中給出
- 若
m==fib (i) && flag==0,進入分支
- 若
m==1,
- 輸出1 1
- flag=1;
- 回到第一個迴圈(
break;)
- 若m不等於1,
- 輸出m,
- flag=1,
- 回到第一個迴圈
- 若
m==fib (i) && flag==1,
- 輸出空格+m的值
- 回到第一個迴圈
- 若
fib(i)>m,
- 回到第一個迴圈
- i迴圈結束
- 若
flag==0,
- 輸出No Fibonacci number
(3)調試問題及解決方案
題目3 (7-1)(1).本題PTA提交列表
(2)設計思路設計實現組合數計算功能的函數
double fact(int n)
- 定義迴圈變數i,雙精確度變數result,並將其初始化為1
- i=1;當i小於等於n時迴圈;i++
result=i*result;
- i迴圈結束
return result;
主函數
int main ()
- 設計變數m、n
- 輸入m、n的值
- 若
n==0,
- 輸出result = 1
- 若n不為0,
- 輸出
fact(n) / ( fact(m) * fact(n-m) )的值
(3)調試問題及解決方案
二、同學代碼結對互評1.同學互評照片
2.My Code、互評同學代碼
3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。1)不同在於對迴圈條件的確立,以及變數數的不同2)他的優勢在於能用較簡潔的代碼去實現題目要求的功能;而我多想了一些,將一些特殊情況單獨處理,並且我是使用m作為迴圈變數,上限是n,他則另取一變數i,使i等於m,我認為可以將i用m取代,這樣應該也是可以實現題目要求的;在內迴圈方面,他的條件是j<=0.5*i,而我的條件是i<m,計算量比他的多了許多。3)我更喜歡他那種簡潔且實用的風格三、本周題目集的PTA最後排名。PTA排名
四、本周學習總結1.你學會了什嗎?
- 整型、字元型、實型
- 加與不加 ‘‘ 的字母、數字不相等;字元型變數可以與整型變數轉換;逸出字元中 的應用;
- ++n與n++、--n與n--的區別
- 運算子的優先順序的區別
- 對合法浮點數的定義
- 關係運算子運算順序從左至右
- 逗號運算子的運算順序從左至右
2.本周的內容,你還不會什嗎?
- 位元運算符的應用;位邏輯運算子的使用:如位非運算的具體使用
- 移位元運算的三種方式的的實際應用
3.迴圈結構考試總結(1)哪題做錯了,怎麼改?7-3 二進位的前置的零
- 開始思路錯誤,以為要先將十進位數轉為位元再迴圈去末位得到位元,再用32減去得到的位元
- 回去分析二進位和十進位之後發現只要使十進位數每次除2並使計數變數+1,最後得到的計數變數的值就是該十進位數轉換成二進位之後的位元,再用32減去計數變數就能得到最後結果
- 然後錯在當十進位數為負數
- 由於負數在轉換為位元時需要進行反碼,即1變成0、0變成1,所以此時應輸出0
- 以及當輸入的數是0時,和負數一樣做特殊處理,應輸出32
7-5 單詞長度
- 第一次出錯在於“空句子”和“開頭結尾多空格”、“連續多空格”
- 加入另一個字串變數b,使其初始化為空白格符,用來記入前一個字元;若前一個字元為空白格,且現字元為空白格,則不輸出,解決“連續多空格”問題
- 再加入標誌變數flag,用來控制空格的輸出,但是並沒法解決問題
- 在迴圈外加入判斷,當b!=‘ ‘時輸出字元個數,並且前面做對應修改,解決“空句子”問題
- 用了各種各樣的方法和語句嘗試了兩個多小時,不是“開頭結尾多空格”問題就是“連續多空格”問題, 最後發現只要在原來的代碼裡的flag的判斷中加入b!=‘ ‘的判斷就可以實現
(2)考試結果滿意麼,怎麼改進?
不滿意,多做題多思考,鍛煉對題目的靈敏感覺,學會靈活運用所學知識解決問題
(3)其他總結
- 通過這次的考試,我發現我對迴圈語句的掌握還是不夠,總是在一些細節的地方犯錯;
- 以及對於將其他語句同迴圈語句結合也是一般,經常的以為能把它們沒有出錯的結合起來就行了,對於這個過程中花費的時間不是很在意
- 思路的差異是解題速度不同的原因之一,我應該要多鍛煉自己的思路的可行性和嚴謹性,去觀摩和學習大神的代碼
C語言部落格作業--函數