一、本周教學內容&目標
第4章 循環結構 4.1-4.2 熟悉使用while和do-while結構解決問題。
二、本周作業頭
這個作業屬於那個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | <C語言I作業08> |
我在這個課程的目標是 | <學會循環結構,了解並熟悉while和do-while結構解決問題> |
這個作業在那個具體方面幫助我實現目標 | <能讓我更加熟系while和do-while結構> |
參考文獻 | <<集美大學林麗老師>> |
三、本周作業
1.PTA實驗作業
2.代碼互評
3.學習總結
四、作業格式
1.PTA實驗作業(20分/題)
請再此處列出自己的排名圖片
從PTA題目集中選出2個你最滿意的題目完成以下內容,選擇題目難度越大,分值越高,每題20分(每項5分),內容要求如下:
1.1 題目名1 (7-2 韓信點兵 (10 分))
題目內容描述:
在中國數學史上,廣泛流傳着一個“韓信點兵”的故事:韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點兵的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數:
按從1至5報數,記下最末一個士兵報的數為1;
再按從1至6報數,記下最末一個士兵報的數為5;
再按從1至7報數,記下最末一個士兵報的數為4;
最后按從1至11報數,最末一個士兵報的數為10;
請編寫程序計算韓信至少有多少兵。
輸入格式:
本題無輸入
輸出格式:
輸出韓信至少擁有的士兵人數。
1.1.1數據處理
介紹實現本題過程中,你的數據表達、數據處理是怎么做的。注意:請務必按照以下方式書寫。
數據表達:定義了一個整型變量i用於控制循環變量
數據處理:
表達式:i%51&&i%65&&i%74&&i%1110
結構式:用了for循環語句以及使用break跳出循環
偽代碼:
include<stdio.h>
int main()
{
int i=0; //定義變量i,i用來表示韓信的兵
while(7)
for (i = 1;; i++) //使用for循環結構
{
if ((i % 5 == 1) && (i % 6 == 5) && (i % 7 == 4) && (i % 11 == 10)) //根據題意寫出每次報數的數據
{
printf("%d\n", i);
return 0;
}
}
}
1.1.2實驗代碼截圖
貼圖展示代碼,不要復制。請給出名字標識。
1.1.3 造測試數據
輸出你的程序面向各種測試數據結果,除了題目給出的測試數據,可以自己再造其他臨界數據,越多越好,並加上必要說明
輸入數據 | 輸出數據 | 說明 |
---|---|---|
7本題無輸入 | 本題無輸入 | 2111人 |
1.1.4 PTA提交列表及說明
根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法
答案錯誤:在(i % 5 == 1) && (i % 6 == 5) && (i % 7 == 4) && (i % 11 == 10))加上了;
本題的難點就在於i%51&&i%65&&i%74&&i%1110 這個條件,在這上面多花一點功夫就好。
1.2 題目2(7-5 爬動的蠕蟲 (15 分))
題目內容描述
一條蠕蟲長1寸,在一口深為N寸的井的底部。已知蠕蟲每1分鍾可以向上爬U寸,但必須休息1分鍾才能接着往上爬。在休息的過程中,蠕蟲又下滑了D寸。就這樣,上爬和下滑重復進行。請問,蠕蟲需要多長時間才能爬出井?
這里要求不足1分鍾按1分鍾計,並且假定只要在某次上爬過程中蠕蟲的頭部到達了井的頂部,那么蠕蟲就完成任務了。初始時,蠕蟲是趴在井底的(即高度為0)。
輸入格式:
輸入在一行中順序給出3個正整數N、U、D,其中D<U,N不超過100。
輸出格式:
在一行中輸出蠕蟲爬出井的時間,以分鍾為單位。
輸入樣例:
12 3 1
輸出樣例:
11
1.2.1 數據處理
介紹實現本題過程中,你的數據表達、數據處理是怎么做的。注意:請務必按照以下方式書寫。
數據表達:使用了N,U,D,L,time.5個變量,N代表井的深度,U和D分別代表蠕蟲一分鍾能向上爬與向下滑了多少寸,L表示蠕蟲爬行的距離,time表示爬行所用的時間
數據處理:
數據類型:year,mouth, day, number都為整型。
表達式:while(L<N){
time++;
L=L+U;
流程結構:while結構。
偽代碼
include <stdio.h>
int main()
{
int N,U,D,L; //n為井的深度,u為蠕蟲一分鍾爬的距離,D為休息時下滑的距離,time為爬出井的總時間,L為蠕蟲爬行的距離。
scanf("%d %d %d",&N,&U,&D);
int time;
time=L=0;
while(L<N){ //當爬行的距離小於井的深度時
time++; //time=time+1
L=L+U; //蠕蟲爬行的距離等於之前的加上所爬的距離
if(L>=N) //當爬行的距離大於等於井的深度時
break; //跳出語句
L=L-D; //計算爬蟲總距離減去下滑的距離
time++; //加上爬蟲休息的時間
}
printf("%d",time);
return 0;
}
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
15 4 3 | 23 | 如果井深為15寸,蠕蟲每分鍾爬行4寸,休息時下降3寸,則需要23分鍾才能爬上去 |
10 5 2 | 5 | 如果井深為10寸,蠕蟲每分鍾爬行5寸,休息時下降2寸,則需要5分鍾才能爬上去 |
9 5 4 | 9 | 如果井深為9寸,蠕蟲每分鍾爬行5寸,休息時下降4寸,則需要9分鍾才能爬上去 |
15 5 2 | 9 | 如果井深為15寸,蠕蟲每分鍾爬行5寸,休息時下降2寸,則需要9分鍾才能爬上去 |
1.2.4 PTA提交列表及說明
根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法
1.編譯錯誤:在第5行的函數定義上多加了一個;導致語句停止。
2.代碼互評(5分)
找2份同學代碼,和自己代碼比較,建議互評代碼盡量找代碼風格差異較大。
第一張 (7-2 韓信點兵)
同學代碼截圖 <<[C語言I作業08 戳你臉 (https://www.cnblogs.com/lky-29/p/11858200.html)>>
自己代碼截圖
答:第一個同學的代碼和我的有很多不同
1.我用的代碼定義了變量i,運用while語句,而他則定義n運用for循環語句。
第二張 (7-13 整數的分類處理)
同學代碼截圖
自己代碼截圖
答:第二個同學
1.同學的代碼用的是for循環,而我的代碼用的是while語句以及if-else語句
3.學習總結(15分)
$3.1 學習進度條(5分)
|周/日期 |這周所花的時間| |代碼行 |學到的知識點簡介 |目前比較迷惑的問題|
|-|-|-|-|-|
|第六周| 8小時 |300行 |常用的數學函數,if-else語句,for語句,自定義函數 |不會用自定義函數|
|第七周 |7小時 |400行 |二分支結構和用char輸入字符 |對於字符型的代碼有點看不懂|
|第八周| 10小時 |420行 |多分支結構,switch語句 |switch語句用得有點混亂|
|第九周 |13小時 |450行 |自定義函數的用法,怎樣用一個算法來運算多個式子 |if語句的嵌套不明白是怎樣分支的|
|第十周| 18小時 |500行 |多分支結構、字符型數據類型和邏輯運算符 |目前不太熟練並且字符型還沒熟悉|
|第十一周|12小時|600行|熟悉多分支結構switch語句的使用|switch后的表達式是否有要求|
|第十二周 |8 |205 |do-while語句和while,for語句的區別 |continue不知道怎么去用|
3.2 累積代碼行和博客字數(5分)
時間 | 博客字數 | 代碼行數 |
---|---|---|
第六周 | 585 | 300 |
第七周 | 1366 | 400 |
第八周 | 1624 | 420 |
第九周 | 1583 | 400 |
第九周 | 1891 | 500 |
第十周 | 1921 | 550 |
第十一周 | 2377 | 600 |
第十二周 | 1656 | 620 |
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
請回顧自己的本周的學習過程,描述學習感受,也可以提出你不理解的地方、對教師教學建議等。如果你有新的想法或者新的方法,請及時記錄下來。
1.本周我們學習了do-whule語句,並且把while語句,do-while語句和for語句的區別弄清楚了。
2.for語句和do-while語句都是先判斷符不符合條件再執行循環體,一般在知道循環次數的情況下使用for語句,不知道循環次數則使用while語句。
3.do-while語句是不管怎樣都會先執行一次循環體,再判斷是否符合條件,再執行循環體
4.百度是個好東西,尤其是對於初學者來說!
5.希望自己多學一點,走在老師前面