C語言程式設計第六次作業——迴圈結構(2).

來源:互聯網
上載者:User

標籤:put   無限迴圈   整型   應該   2-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).

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.