C語言 巢狀迴圈

2022-06-02 21:15:11 字數 1680 閱讀 3297

改正後的**:把i加回原值,結果正確

-問題1:min、max、和flag的初值應該在**定義,scanf語句要怎麼放?

解決辦法:這個問題是我在寫出**後執行測試的時候發現的,明明按照預想我只需要輸入n個數就可以輸出結果,但是執行測試的時候卻要輸入n+1個數才能輸出結果。經過除錯我發現,在內迴圈的最後一次迴圈中,scanf語句還要執行一次,而輸進去的數字其實並沒有參與後面的運算。原來是因為為了取出min(最小值)和max(最大值),我開始時把min和max的初值定義放在外迴圈中,並定義它們的初值為第乙個grade,這樣scanf語句就要放在外迴圈中,這樣才能保證輸入的第乙個grade能賦給min和max;但是grade是要重複輸入的,因此我在內迴圈裡又放了乙個scanf語句,這樣在迴圈過程中就多出了一次scanf。最後我修改**,把第一次成績放在了外迴圈中,內迴圈從2開始,答案正確。

互評題目:7-5 :梅森數

互評同學:李重蕖1.我的**

int  n, number, i, j, r;//number表示要判斷的數字、i和j都用於迴圈計數、r用於判斷素數

scanf("%d", &n);

if(n>=20)

else if(n<=1)

else

}if(r==1)//是素數 }}

2.同學的**

這一題我和李同學的思路基本相同,不同的地方在於對n範圍的判斷,我習慣先寫n不符合題目要求時的的情況,而他則是先寫了符合要求時的情況。他說先寫符合要求再寫不符合要求這樣不容易漏掉某些情況,我覺得他說得對。在**注釋這方面,李同學的注釋很多很細緻,而我平時只習慣注釋一些主要的判斷點,其他注釋很少,我覺得這一點我要向他學習。原本我這一題的**對變數名是沒有注釋的,在他的提醒下,我加上了注釋。在這一題上我覺得我和他的**各有優勢,但是從他的**上我看到了很多良好的寫**習慣,這正是我缺少的。

我學會了怎麼呼叫函式,明白了區域性變數和全域性變數的區別。現在除錯程式的時候也不會太過於依賴除錯,會先在腦子裡按照自己的預想跟著自己的程式走一遍,然後尋找錯誤,如果還是找不到,再選擇除錯。這樣雖然一開始的時候會沒有直接用除錯來得快,但是熟悉之後,我發現通過這樣的方法我閱讀程式會快一些,也更能理解什麼是計算機的思維。

對於靜態變數的使用還不是很會,當區域性變數、全域性變數和靜態變數全部在一起的時候,這種題目我往往做不對。還有巢狀迴圈,有些題目還是不怎麼熟悉做,特別是涉及到字元這一類的題目。

C語言 迴圈的巢狀

1 for語句中嵌入for語句 for 2 for語句嵌入while語句 for 3 for語句中嵌入do while語句 for while 4 while語句中嵌入for語句 while 5 while語句中嵌入while語句 while 6 while語句中嵌入do while語句 while...

C語言部落格作業 巢狀迴圈

2.設計思路 3.本題除錯過程碰到問題及解決辦法 這是一句看似容易理解但是會忽略其重點的 按5.2.1分迴圈 從大到小輸出 先盡可能多地輸出5fen的數量然後2fen,1fen。如果意識到這個問題後就會發現一開始的 確實不符合題意,下面是正確 上 錯誤 下 進行對比,一目了然 1.定義整數型變數n,...

C語言部落格作業 巢狀迴圈

1.定義整形變數i 0為迴圈變數定義整形變數n儲存所要查詢水果 2.當i 5時執行迴圈 每次迴圈i 輸入乙個整數存於n中 如果n為1則輸出3.00 如果n為2則輸出2.50 如果n為3則輸出4.10 如果n為4則輸出10.20 如果n為0則跳出迴圈 如果n不為以上數則輸出0.00 迴圈條件錯誤導致答...