C博客做業02--循環結構

0.展現PTA總分


1.本章學習內容

1.1學習內容總結

while循環

while
{
語句;
}
語句;

說明:

1.首先判斷while後面括號內的語句是否爲真,若爲真則進入循環,執行大括號內的語句,若爲假,則跳過while循環執行循環體外的語句。
2.若在while的大括號內執行了break語句,則循環馬上終止,跳出循環去執行循環體外的語句。
3.一直循環到while後面小括號的表達式爲假,循環才結束。

do while循環

do
{
循環語句;
}while(循環條件);

說明:

1.先無條件執行一次循環體內的語句而後再判斷循環條件的真假,除此以外與while循環結構一致。
2.特別注意在循環條件後面加上一個分號,表示循環的結束。

嵌套循環

int i,j,n;
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
}
}

說明:

1.外層循環一次,內層循環一輪。
2.若是在內層循環遇到break語句,則跳出內層循環,外層循環繼續。

while,do while和for循環的使用場合

1.若是已經知道循環次數,則選擇使用for循環更適合。
2.在不知道循環次數的狀況下,更適合使用while循環或者do while循環,若是有可能一次循環都不執行,應該考慮使用while循環,若是至少循環一次,應該考慮使用do while循環。

break語句和continue語句

1.在沒有循環結構的狀況下,break不能用在單獨的if-else語句中。
2.在多層循環中,一個break語句只能跳出當前循環。
3.continue語句的做用是跳過循環體後面的語句,繼續下一次循環。
4.continue語句和break語句的區別在於,break語句結束循環,而continue語句只是跳事後面的語句繼續循環。break語句除了能夠停止循環,還用於switch語句,而continue語句只能用於循環。

1.2本章學習體會

  • 本章咱們學習了while循環,do while循環,for循環還有嵌套循環,感受比以前的順序、分支結構難。特別是嵌套循環,不容易看懂,由於用到的變量比較多,結構也是比較複雜,須要用的大括號多,一不當心漏掉一個就會編譯錯誤,檢查起來比較麻煩。因此,代碼規範很重要,一個大括號佔一行纔不容易出錯。另外,打代碼特別須要耐心,可能要改不少次才提交正確,平時寫代碼的時侯細心一點,就能避免一些沒必要要的錯誤。
  • 代碼量爲800行左右,離目標還差一大截。安全

    2.PTA實驗做業

    2.1 7-9 龜兔賽跑

    2.1.1僞代碼

輸入比賽時間T
do
{
    if(十分鐘後兔子仍是比烏龜快)
{
    if(30分鐘後比賽沒有結束)
{
tortoise = tortoise + 3 * 30;
time = time + 30;
}
else沒有到30分鐘比賽結束
{tortoise = tortoise + (T - time) * 3;
    break;
}
}
tortoise = tortoise + 3;
rabbit = rabbit + 9;
time++;
}while(比賽時間不等於比賽結束用時)
輸出比賽結果及勝利者所跑距離

2.1.2代碼截圖


2.1.3造測試數據

輸入數據 輸出數據 說明
242 @_@ 726 正常數據
9 ^_^ 81 小於十分鐘
30 -_- 90 臨界數據

2.1.4PTA提交列表及說明

  • 提交以後顯示答案錯誤,一時真看不出來哪裏錯,後來從新看一遍題目,是把兔子和烏龜每分鐘前進的距離搞反了。
  • 把rabbit=rabbit+3改爲rabbit=rabbit+9後提交仍是不對,再檢查發現輸出有問題,當rabbit>tortoise 時,輸出的是烏龜跑的距離。
  • 改完後提交發現輸出仍是有問題,再從新審題,發現輸出表情後面多了一個空格。學習

    2.2 7-8 查詢水果價格

    2.2.1僞代碼

輸出菜單
for(循環五次)
{
輸入選擇的編號
if(輸入的編號爲零)
退出,程序結束;
switch(編號)
{
                case 1:price = 3.00;
            break;
        case 2:price = 2.50;
            break;
        case 3:price = 4.10;
            break;
        case 4:price = 10.20;
            break;
        case 0:break;
                default:輸入其餘編號,價格爲零;退出;
}
輸出價格
}

2.2.2代碼截圖


2.2.3造測試數據

輸入數據 輸出數據 說明
3 price=4.10 正常數據
0 0數據
6 price=0.00 非正常數據

2.2.4PTA提交列表及說明

  • 提交屢次一直都是答案錯誤,一開始給choice定義的是字符型,因此就把case 1改爲case '[1]',而後仍是錯。
  • 後來把choice的類型改成整型,case '[1]'改爲case 1,結果提交仍是有錯。
  • 檢查題目以後在for循環內,switch語句外加一個判斷編號是否爲零的if語句,提交仍是有錯啊。
  • 從新檢查每一次輸出都有菜單出來,因而把輸出菜單放到for循環外面。測試

    2.3 7-2 梅森數

    2.3.1僞代碼

輸入一個正整數n
if(n<20)
{
for(從2^2-1開始循環)
{
num = pow(2, i) - 1;
for(判斷素數)
{
if(不是素數)退出;
if(是素數)
{
輸出素數的值
count++;
}
}
}
}
if(count==0)
輸出「None」

2.3.2代碼截圖


2.3.3造測試數據

輸入數據 輸出數據 說明
6 3 7 31 正常數據
2 3 特殊數據
0 None 0數據

2.3.4PTA提交列表及說明

  • 提交後找錯發現把num= pow(2, i) - 1 寫成i = pow(2, i) - 1,改完後仍然有錯。
  • 再把i<n改成i<=n,感受沒什麼變化,仍是不對。
  • 再檢查發現給j的初值是1,而後把j=1改爲j=2。3d

    代碼互評

    同窗代碼截圖

    代碼1


    代碼2


    本身代碼截圖


  • 第一個同窗所用的變量比較少,使程序變得更簡化,整個思路也比較清晰,for循環裏面用了三個if語句,比較容易理解。她的代碼寫得規範,沒有什麼安全問題。
  • 第二個同窗的代碼相對於個人就更簡潔,引入了變量flag,使整個程序更簡潔明瞭,值得學習。另外,代碼的排版整潔有序,可讀性強。代碼規範

相關文章
相關標籤/搜索