1. 程式人生 > >C語言第6次作業

C語言第6次作業

圖片 跳出循環 得到 源代碼 條件 選擇 all 操作 流程圖

(一)改錯題

序列求和:輸入一個正實數eps,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精確到最後一項的絕對值小於eps(保留6位小數)。
  輸入輸出樣例:
  Input eps:1E-4
  s = 0.835699
  
源程序(有錯誤的程序)
技術分享圖片
錯誤信息1:
技術分享圖片
錯誤原因:對循環語句的使用不熟悉,不能熟練使用各種循環語句
改正方法:do....while循環while後要加分號,改為while( item < eps);
錯誤信息2:
技術分享圖片
錯誤原因:開始定義item為double型,但在算式中item為1除以n,1與n都為整數,整數相除商還是整數,為整型變量,與定義不符。
改正方法:將item的算式中的1改為1.0。
錯誤信息3:
技術分享圖片


錯誤原因:do....while語句循環的條件寫成了循環結束的條件。
改正方法:將while後的語句中<改為>=。
錯誤信息4:
技術分享圖片
錯誤原因:錯誤原因:eps要求高精度,應用%lf。
改正方法:將輸入語句中的%f改為%lf。
(二)學習總結
1.語句while(1)和for(;;)是什麽意思?,如何保證這種循環能正常執行?
答:這兩者都表示無限循環,語句while(1)中循環條件為1,1表示正確,執行循環體,再循環,再執行,再循環往復。語句for(;;)中表達式1,2,3都為空白,所以無條件的循環。無限循環中,通過在循環體中加break語句對循環進行控制。
2.一般情況下,設計循環結構時,使用for、while、do while三種語句都可以,並且三種語句可以相互轉換,但是,在某些特定情況下,我們應該優先選擇某種語句來快速實現循環設計。如果有如下情況:
(1)循環次數已知
(2)循環次數未知,但循環條件在進入循環時明確
(3)循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確
針對上面三種情況,分別采用什麽循環語句實現比較好?對每種情況,用我們完成的兩次循環結構作業中的題目加以說明。
答:(1)7-1 求奇數分之一序列前N項和
本題要求編寫程序,計算序列 1 + 1/3 + 1/5 + ... 的前N項之和。
這道題已經知道了循環的次數,用for語句,當循環條件為i>(2*n-1)時循環結束。
(2)7-1 求給定精度的簡單交錯序列部分和
本題要求編寫程序,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最後一項的絕對值不大於給定精度eps。
這道題循環次數未知,但循環條件已知,用while語句,當fabs(item)>eps時,進入循環。循環條件在進入循環體時明確。
(3)7-6 掉入陷阱的數字
對任意一個自然數N0,先將其各位數字相加求和,再將其和乘以3後加上1,變成一個新自然數N1;然後對N1重復這種操作,可以產生新自然數N2;……多次重復這種操作,運算結果最終會得到一個固定不變的數Nk,就像掉入一個數字“陷阱”。
本題要求對輸入的自然數,給出其掉入“陷阱”的過程。
這道題循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確,用do....while語句,先執行一次循環體,再判斷是否符合循環條件。
3.有如下問題:輸入一批學生成績,以-1作為結束,計算學生的平均成績。
要求分別用for語句、while語句、do while語句三種循環語句實現,並說明你認為哪種形式更合適?
答:for語句:
技術分享圖片

while語句:
技術分享圖片
do while語句
技術分享圖片
題目中沒有說明循環的次數,所以用for語句不合適,但循環條件在進入循環時明確,所以用while比較合適。而do..while語句需要執行一次循環體才能判斷是否符合條件,有些繁瑣。所以還是用while語句比較合適。
(4)1.運行下面程序,輸入1到10,結果分別是什麽?為什麽?
技術分享圖片

break的功能是在循環語句和switch語句中,終止並跳出循環體或開關體。當輸入1時,符合選擇語句中的條件,執行break語句,終止循環。輸出sum=1。
2
技術分享圖片
continue的功能是結束本次循環,跳過循環體中尚未執行的語句,進行下一次是否執行循環體的判斷。當輸入n=1時,符合選擇語句中的條件,執行continue語句。判斷是否符合循環條件,然後再循環,最後輸出sum=25。

(三)實驗總結
1.求給定精度的簡單交錯序列部分和
(1)題目
本題要求編寫程序,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最後一項的絕對值不大於給定精度eps。
(2)流程圖
技術分享圖片
(3)源代碼
技術分享圖片
(4)實驗分析
註意標點是英文半角
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)實驗分析
pta提交列表
技術分享圖片
3.求奇數和
(1)題目
本題要求計算給定的一系列正整數中奇數的和。
(2)流程圖
技術分享圖片
(3)源代碼
技術分享圖片

pta提交列表
技術分享圖片
博客互評
未進行互評

C語言第6次作業