1. 程式人生 > >C語言程序設計第六次作業——循環結構(2).

C語言程序設計第六次作業——循環結構(2).

是什麽 絕對值 方法 程序設計 輸入一個數 系列 發生 自己 很好

(一)改錯題
序列求和:輸入一個正實數eps,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精確到最後一項的絕對值小於eps(保留6位小數)。
  輸入輸出樣例:
  Input eps:1E-4
  s = 0.835699 
源程序(有錯誤的程序):技術分享圖片
錯誤信息1:技術分享圖片
錯誤原因:輸入錯誤,eps以定義為double型,所以,輸入應該為%lf。
改正方法:將%f改為%lf :技術分享圖片
錯誤信息2:技術分享圖片
錯誤原因:計算形式錯誤,item為double型,而1/n為整型計算方式。
改正方法:將1改為1.0 :技術分享圖片
錯誤信息3:技術分享圖片
錯誤原因;表達式錯誤。
改正方法:將 < 改為 >= :技術分享圖片
錯誤信息4:技術分享圖片


錯誤原因:do.....while語句使用錯誤,句尾缺少分號。
改正方法:在while後加上分號 :技術分享圖片
錯誤信息5:技術分享圖片
錯誤原因:輸出格式錯誤,不符合題目要求。
改正方法:將%f改為%.6f :[](http://images2017.cnblogs.com/blog/1242757/201711/1242757-20171116212624921-2062351957.png
錯誤全部改正後的源程序及運行結果:技術分享圖片

(二)學習總結

1.語句while(1)和for(;;)是什麽意思?,如何保證這種循環能正常執行?
答:這兩種都是無限循環的意思。while(1)語句可以在結尾加一個break,保證循環會跳出。而for(;;)可以在循環中另加一個,使循環正常進行。
2.一般情況下,設計循環結構時,使用for、while、do while三種語句都可以,並且三種語句可以相互轉換,但是,在某些特定情況下,我們應該優先選擇某種語句來快速實現循環設計。如果有如下情況:
(1)循環次數已知
(2)循環次數未知,但循環條件在進入循環時明確
(3)循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確
針對上面三種情況,分別采用什麽循環語句實現比較好?對每種情況,用我們完成的兩次循環結構作業中的題目加以說明。
答:當循環次數已知的時候,用for語句。循環作業1中大多都用for語句,例如;7-1 求奇數分之一序列前N項和, 要求編寫程序,計算序列 1 + 1/3 + 1/5 + ... 的前N項之和。做這個題明確循環次數。用for語句。
當循環次數未知,但循環條件在進入循環時明確的時候,首選用while語句。循環作業2中 7-5 一條蠕蟲長1寸,在一口深為N寸的井的底部。已知蠕蟲每1分鐘可以向上爬U寸,但必須休息1分鐘才能接著往上爬。在休息的過程中,蠕蟲又下滑了D寸。就這樣,上爬和下滑重復進行。請問,蠕蟲需要多長時間才能爬出井?這裏要求不足1分鐘按1分鐘計,並且假定只要在某次上爬過程中蠕蟲的頭部到達了井的頂部,那麽蠕蟲就完成任務了。初始時,蠕蟲是趴在井底的(即高度為0)。對於這個題不明確循環次數,用while語句。
當循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確的時候,用do while語句。循環作業2中 7-1 求給定精度的簡單交錯序列部分和,要求編寫程序,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最後一項的絕對值不大於給定精度eps。不明確循環次數且循環條件不明確,需條件滿足才可執行。用do while語句。

3.有如下問題:輸入一批學生成績,以-1作為結束,計算學生的平均成績。
要求分別用for語句、while語句、do while語句三種循環語句實現,並說明你認為哪種形式更合適?
for語句:
技術分享圖片
while語句:
技術分享圖片
do while語句:
技術分享圖片
我認為用while比較好,雖然循環次數不知道,但不會太多,且操作較簡便。

4.運行下面程序,輸入1到10,結果分別是什麽?為什麽?
(1):運行程序及結果:
技術分享圖片
(2):運行程序及結果:
技術分享圖片
因為break在循環中是跳出的執行標誌,所以(1)在執行到break時會時程序結束。 而continue在循環中是再次返回執行的意思,所以程序執行到continue時會再使i加1,從而使程序繼續進行。

(三)實驗總結

本次實驗總結,完成循環結構(2)中的1、2、3題。
1:
(1)題目
求給定精度的簡單交錯序列部分和
本題要求編寫程序,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最後一項的絕對值不大於給定精度eps。
(2)流程圖
技術分享圖片
技術分享圖片
(3)源代碼
技術分享圖片
(4)實驗分析
問題1:結果總是輸出1.
原因:item的位數控制。
解決辦法:用double型控制。
問題2:結果s發生溢出現象。
原因:位數過多,整形變量不足以提供更多的字節。
解決辦法:用double來定義結果s.
(5)本題PTA提交列表
技術分享圖片

2:
(1)題目
猜數字遊戲
猜數字遊戲是令遊戲機隨機產生一個100以內的正整數,用戶輸入一個數對其進行猜測,需要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程序。程序還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程序。如果在到達N次之前,用戶輸入了一個負數,也輸出“Game Over”,並結束程序
(2)流程圖
技術分享圖片
技術分享圖片
技術分享圖片
(3)源代碼
技術分享圖片
技術分享圖片
技術分享圖片
(4)實驗分析
問題1:當輸入負數是的特殊情況,及所有輸出Game Over的條件很亂。
原因:對題目沒有詳細解讀,對分析情況思路不清晰。
解決辦法:耐心審題,細心做。
(5)本題PTA提交列表
技術分享圖片

3:
(1)題目
求奇數和
本題要求計算給定的一系列正整數中奇數的和。
(2)流程圖
技術分享圖片
(3)源代碼
技術分享圖片
(4)實驗分析:
暫無問題。
(5)本題PTA提交列表
技術分享圖片

(四)博客互評
評價 風離你在 的博客園作業.
風離你在 的博客鏈接:http://www.cnblogs.com/GX201701-/
他的本次博客園作業完成較為迅速,作業也很清晰,思路明確,利於別人理解。
評價郭玉霖 的博客園作業.
郭玉霖的博客鏈接:http://home.cnblogs.com/u/HBQ521/
他的本次博客園作業完成的比較好,改錯題很明確的指出了錯誤。也很清晰。作業題也很有自己的想法。
評價 孤寂一粒沙 的博客園作業.
孤寂一粒沙 的博客鏈接:http://home.cnblogs.com/u/HGD980425/
他的本次做業完成的較為迅速,而且,完成效果也很好,截圖很清晰,做題思路明確,整體感覺很整齊,應該多向他學習。

C語言程序設計第六次作業——循環結構(2).