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


(一)改錯題
序列求和:輸入一個正實數eps,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精確到最后一項的絕對值小於eps(保留6位小數)。

錯誤信息:

錯誤原因:第17行的while( item < eps)的后面沒有加分號
改正方法:在while( item < eps)的后面加分號

錯誤信息:

錯誤原因:第八行輸入格式有問題
改正方法:將scanf("%f",&eps)里的“%f”改成“%lf”

錯誤信息:

錯誤原因:第13行中的運算為整型運算,並不能出現實數
改正方法:將“item = 1/ n”中的“1”改成“1.0”

錯誤信息:

錯誤原因:第17行中while()語句的括號里的表達式錯誤,與題目不符
改正方法:將“while( item > eps)”里的“<”改成“>”
改正完畢后輸入樣例“1E-4”,結果如下圖:

(二)學習總結
1.語句while(1)和for(;;)是什么意思?,如何保證這種循環能正常執行?
①因為“1”表示真,所以語句while(1)表示它內部的語句無限循環;
②for循環判斷依據是根據for(;;)括號內的三個表達式來判斷真假,當括號內三個表達式為空時,即判斷條件為空,即條件永遠為真,因此循環無限次執行;
③當選擇結構中某條件為真時,可以通過break語句跳出循環,實現結束循環的目的。此時可以保證循環的正常執行。
2.針對下面三種情況,分別采用什么循環語句實現比較好?對每種情況,用我們完成的兩次循環結構作業中的題目加以說明。
(1)循環次數已知:采用for循環,例如循環結構1中的第1(求奇數分之一序列和),7(求交錯序列和)題
(2)循環次數未知,但循環條件在進入循環時明確:采用while循環,例如循環結構(2)中的第1(猜數字游戲)題
(3)循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確:采用do while循環,例如循環結構2中的第3(求奇數和),5(蠕蟲)題
3.有如下問題:輸入一批學生成績,以-1作為結束,計算學生的平均成績。
要求分別用for語句、while語句、do while語句三種循環語句實現,並說明你認為哪種形式更合適?
我認為while語句更合適一些,因為這個程序是循環次數未知,但循環條件在進入循環時明確,如果用for語句或者是do...while語句來寫的話會比while麻煩一點需要加判斷語句
4.運行程序,輸入1到10,結果分別是什么?為什么?
運行程序(1)結果如下圖:

原因:程序if語句后面的內容是break,表示跳出循環,當n = 1時不符合if語句條件執行s = s + n,s的值為1,然后再次執行循環體,此時n=2,符合if語句的條件則跳出循環體,此時s的值仍為1
運行程序(2)結果如下圖:

原因:程序if語句后面的內容是continue,它的作用就是結束當前循環,開始下一輪循環,同理符合if語句的條件時開始執行新一輪循環,而不是執行s = s + n,不符合時執行s = s + n,所以s得輸出值為25
根本原因在break與continue語句的不同,break語句執行時,程序會強制結束距離break語句最近的循環,而continue語句則是結束本次循環,並進入下一次循環的判斷。
(三)實驗總結
1.求給定精度的簡單交錯序列部分和
(1)題目
本題要求編寫程序,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一項的絕對值不大於給定精度eps。
(2)流程圖

(3)源代碼

(4)實驗分析
問題:
原因:題目要求item的絕對值不大於給定精度eps,而源程序的while判斷條件卻是while(item > eps)
解決辦法:將while(item > eps)改成while(fabs(item) > eps)
(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)實驗分析
本題沒有遇到問題,但需要認真仔細
(5)本題PTA提交列表

3.求奇數和
(1)題目
本題要求計算給定的一系列正整數中奇數的和。
(2)流程圖

(3)源代碼

(4)實驗分析
本題沒有遇到問題
(5)本題PTA提交列表

(四)博客互評
http://www.cnblogs.com/english123-/p/7853709.html
http://www.cnblogs.com/zxh980818/p/7842242.html
http://www.cnblogs.com/Reloaded/p/7825734.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM