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

#0.展現PTA總分 編程

#本章學習總結 ##1.1學習內容總結 ###1.1.1while語句函數

while(表達式1)
         {
              循環體語句;
          }
do
{
循環體語句;
}while(表達式一);

do while語句和while主要的區別在於do while對於循環體中的語句先執行一次再判斷條件,而while則是先判斷條件再看是否執行循環體中的語句;而while語句和for同爲循環語句,對於何時用while語句何時用for語句有一些區別,當不清楚循環次數時用while顯然要簡單一些,當清楚循環次數則用for; ###1.1.2判斷素數的一些技巧方法 咱們來看下面這個例子學習

for(i=2;i<=m/2;i++)
{
     循環語句;
}

or測試

for(i=2;i<=m;i++)
{
     循環語句;
}

這雖然在通常的題中沒有什麼問題,但我以爲從時間角度來講,上面的句子節省了一半的循環時間,提升了程序的運行效率;因此我以爲在之後的編程中,多思考思考,也許能找到更好的方法來解決這些問題; ###1.1.3 break和continue語句 舉個例子:大數據

for(i=1;i<=3;i++)
{
     printf("*");
     continue;
}

and調試

for(i=1;i<=3;i++)
{
      printf("*");
      break;
}

第一種輸出的結果爲‘’**‘’,而第二種輸出的結果爲‘’‘’,雖然都是跳出循環,但continue只是跳出此次循環,執行下次循環;而break則是跳出循環語句,再也不執行它;固然break也能夠用於switch語句; ###1.1.4 嵌套循環 嵌套循環無非就是for中for,for中while,while中for;我以爲語法只要單獨的掌握了for和while循環,嵌套循環就不是問題,我以爲重要的仍是實際例子中的運用;好比初始化變量應該放在for中的哪一個地方,以及什麼時候恰當的運用break和continue,使語句恰當的執行; ###1.1.5 經過超星學習通學習的知識 須要清空多餘字符時用fflush(stdin); 清屏system(「cls」); 鞏固了隨機數rand(),它存在於#include<stdlib.h>; 隨機種子srand(time(NULL));隨機種子存在於#include<time.h>;code

##本章學習體會 ###1 在本章學習中,我以爲已經掌握了基本語法,差的只是實際中的運用,多作點題目,我以爲能夠掌握,惟一讓人就是這星期太多做業了,不是在預習的路上就是在預習,但也讓人很充實,沒有一點的偷懶; ###2 上週總共代碼量爲300行 這周的代碼量爲400行,距離預約的差太多了,這周得再接再礪了;blog

#2.PTA實驗做業 ##2.1 題目名1 水仙花數是指一個N位正整數(N≥3),它的每一個位上的數字的N次冪之和等於它自己。 ###2.1.1僞代碼 數據處理:循環變量 int i,j;計算總和的int sum;取餘後最後一位數:int num;去掉最後一位數的變量:int item;it

定義變量
初始化變量sum;
輸入變量N;

for(i=最小的N位數;i<=最大的N位數;i++)
{
        初始化item=i,sum=0;
         for(j=1;j<=N位數;j++)
         {
                 取出最後一位數爲num;
                 去掉最後一位數爲item;
                 計算N位數的各個數字的立方和;
          }
          if(判斷是否爲水鮮花數)
          {
              輸出
          }

}

###2.1.2代碼截圖 for循環

###2.1.3造測試數據 輸入數據|輸出數據|說明 ----------:|------|----: 3|153\n370\n371\n407|最小數據,題目數據 7| 1741725\n9800817\n9926315 |最大數據 ###2 .4PTA提交列表

###2.1.5說明 1.編譯錯誤:未定義變量item 2.答案錯誤:sum沒有在內部初始化,致使下一次循環有原來的值;經過調試,在內部初始化了sum=0; 3.答案錯誤:沒有使item=i,致使每一次item都爲原來的值,循環出不來;在一個for內使item=i; 4.部分正確:在改正了前兩個後,還有一個在屢次調用pow函數形成的運行超時問題;我直接造了一個po函數,讓主函數直接調用它,雖然在vs上看不出有多少差異,但在pta上卻經過了,事實證實本身寫的函數應該比調用系統函數庫裏的要快一點;

##2.2 題目名2 已知函數ex能夠展開爲冪級數1+x+x​2​/2!+x3/3!+⋯+x​k /k!+⋯。現給定一個實數x,要求利用此冪級數部分和求e​x的近似值,求和一直繼續到最後一項的絕對值小於0.00001。 ###2.1.1僞代碼 數據處理:輸入實數double x和double sum;循環變量int i;階乘double temp;

定義變量;
輸入x;

for判斷條件
{
     階乘temp;
     求和sum;
}
輸出sum;

###2.1.2代碼截圖

###2.1.3造數據測試 輸入數據|輸出數據|說明 ----------:|------|----: 1.2|3.3201|題目數據 0|1.0000|最小數據 5|148.1432|最大數據 ###2.1.4PTA提交列表

###2.1.5說明 1.運行超時:起先運行錯誤,我用vs結果顯示5的時候,答案是負數,我就加了一個fabs,結果超時,就覺得是調用的問題,解決:沒法找出緣由,就換了一個方法寫; 2.答案錯誤:換了方法後顯示答案錯誤,這種題用vs查錯我也不會,設斷點也不行,用printf輸出也不行;解決:叫同窗幫忙看後,才知道階乘的定義錯了,將int改成double就行了,之前知道但不覺得然,此次讓我浪費了這麼多時間才讓我長了教訓

##2.3題目名 烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊能夠隨地進行休息。烏龜每分鐘能夠前進3米,兔子每分鐘前進9米;兔子嫌烏龜跑得慢,以爲確定能跑贏烏龜,因而,每跑10分鐘回頭看一下烏龜,若發現本身超過烏龜,就在路邊休息,每次休息30分鐘,不然繼續跑10分鐘;而烏龜很是努力,一直跑,不休息。假定烏龜與兔子在同一塊兒點同一時刻開始起跑,請問T分鐘後烏龜和兔子誰跑得快? ###2.3.1僞代碼 數據處理:定義了循環變量int i;烏龜兔子的路程int rabbit;int tortoise;總時間int time;

定義變量;’
初始化路程;
輸入時間;

for循環條件
{
     烏龜兔子的路程;
     if判斷是否到了十分鐘
          if判斷誰跑的遠
             if判斷是否加了三十分鐘超過了總時間time;
      輸出結果;
}

###2.3.2代碼截圖

###2.3.3造數據測試 輸入數據|輸出數據|說明 ----------:|------|----: 242|@@ 726|最後未滿30分鐘的 9|^^ 81|未滿10分鐘的 40|@_@ 120|恰好滿30分的 ###2.3.4PTA提交列表

###2.3.5說明 1.答案錯誤:未將兔子在跑中獲勝的算進去。解決:放個if語句進去,判斷滿30和沒滿30的狀況,分別輸出 2.部分正確:輸出平局是未將路程寫進去,解決:將兔子或烏龜的路程放進去便可

#代碼互評 ##第一題

or

1.代碼的複雜度不一樣,一個打印空心菱形用的的一段直接打印,一個用的兩段打印上下 2.定義的變量一個多一個少,一個有用到字符變量 ##第二題

or

1.一個輸入菜單時用了函數,一個直接打印 2.一個將==0的狀況放在了switch語句裏,一個單獨用了一種狀況

相關文章
相關標籤/搜索