一、本周教學內容&目標
第4章 循環結構 4.1-4.2 熟悉使用while和do-while結構解決問題。
二、本周作業頭
問題 | 答案 |
---|---|
這個作業屬於哪個課程 | C語言程序設計II |
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977 |
我在這個課程的目標是 | 熟練使用c語言進行編程 |
這個作業在那個具體方面幫助我實現目標 | 使我靈活使用while和do-while結構解決問題 |
參考文獻 | https://wenku.baidu.com/view/152b703359fb770bf78a6529647d27284b73372c.html |
三、本周作業
1.PTA實驗作業
請再此處列出自己的排名圖片,如:
從PTA題目集中選出2個你最滿意的題目完成以下內容:
1.1求整數的位數及各位數字之和
對於給定的正整數N,求它的位數及其各位數字之和。
1.1.1數據處理
(1)數據表達:我先用int定義i,m(正整數N),a(各個位數)及sum(各位數字之和)我在這里主要用的是for語句,然后用式子a=m%10得出正整數m的各個位數,用m/=10得出位數,最后根據sum+=a得出各位數之和。
(2)數據處理:(偽代碼):
int /定義變量/
scanf()
for()/循環/
a=m%10;/正整數m的各個位數/
m/=10;/得出位數/
sum+=a;/各位數之和/
輸出結果
1.1.2實驗代碼貼圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
321 | 3 6 | 這個數是三位數,位數之和是6 |
345 | 3 12 | 這個數是三位數,位數之和是12 |
89877 | 5 39 | 這個數是五位數,位數之和是39 |
1.1.4 PTA提交列表及說明
說明:(1)編譯錯誤:在輸出時沒加上“i”。
改正錯誤:在“printf”輸出里面加上“i”。
1.2 韓信點兵
在中國數學史上,廣泛流傳着一個“韓信點兵”的故事:韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點兵的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數:
按從1至5報數,記下最末一個士兵報的數為1;
再按從1至6報數,記下最末一個士兵報的數為5;
再按從1至7報數,記下最末一個士兵報的數為4;
最后按從1至11報數,最末一個士兵報的數為10;
請編寫程序計算韓信至少有多少兵。
1.2.1數據處理
(1)數據表達:我先用int定義士兵數m,且我在這里主要用的是for語句,並根據題意列出“(m % 5 == 1) && (m % 6 == 5) && (m % 7 == 4) && (m % 11 == 10)”,最后得出結果。
(2)數據處理:(偽代碼):
int /定義變量/
for()/循環/
if(m % 5 == 1) && (m % 6 == 5) && (m % 7 == 4) && (m % 11 == 10)/士兵數目/
printf()/輸出結果/
1.2.2實驗代碼貼圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
無輸入數據 | 2111 | 韓信至少擁有士兵為2111人 |
1.2.4 PTA提交列表及說明
說明:(其實這題我本來並不想講,只是我寫這題用的時間僅次於第三題,且問題較大,所以拉出來講)(1)編譯錯誤:很明顯這是要做一個判斷語句,但我在寫“(m % 5 == 1) && (m % 6 == 5) && (m % 7 == 4) && (m % 11 == 10)”時用的都是“=”號,結果就有錯誤
改正錯誤:在里面加上雙“=”
(2)編譯錯誤:我本想用while語句,就直接寫的“while(m = 1;; m++)”結果發現有問題,因為我后面又用了if語句,而while后面要加(條件) { 執行的語句 }。還有其實我不知道為什么"m = 1和m++"之間是兩個分號,同學說是要多加一個分號,這里我倒還沒弄懂。
改正錯誤:剛開始我是想把if去掉徹底改成while語句格式,但想了想,發現可以直接把while改成for就可以了,所以我就直接把while改成了for.在"m = 1;m++"之間多加個分號。
2.代碼互評(7-1) 求整數的位數及各位數字之和
同學截圖:
我的截圖:
區別:(1)說實話,這位同學第一排的意思我不咋懂(2)這位同學主要用的while語句而我用的是for語句(3)相較來說我們兩個的思路是一樣的,但我的相對於更簡便。
同學截圖:
我的截圖:
區別:(1)這位同學同樣也用的while語句(2)他定義的量相比我的更少,就更易懂,其它方面的話就差不多了。
3.學習總結
3.1 學習進度條
周/日期 | 這周所花時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
1/21-1/23 | 三天 | 47 | 基礎的代碼知識 | 代碼符號不了解 |
2/26-2/29 | 四天 | 64 | 學會用MinGw-w64來編譯C程序 | 編譯的錯誤點難找 |
3/9-3/11 | 三天 | 99 | 學會了賦值和“If-else句式”的運用 | 編程的熟練度不高 |
4/16-4/18 | 三天 | 87 | 學會運用代碼進行計算 | 對於式子難以列出來 |
5/22-5/25 | 四天 | 98 | 對函數的調用有了初步認識 | 對於一些c語言的符號和語法還是不懂 |
6/30-6/1 | 三天 | 113 | 初步熟悉了多分支結構、字符型數據類型和邏輯運算符 | 在看到某個數字和符號一起時還是會迷茫 |
7/5-7/7 | 三天 | 112 | 初步熟悉了多分支結構switch語句的使用 | 對於用什么表達式還比較迷 |
8/12-8/14 | 三天 | 110 | 初步熟悉使用while和do-while結構解決問題 | 在寫字符時有點對字符的含義理解模糊 |
3.2 累積代碼行和博客字數
3.3 學習內容總結和感悟
3.3.1 學習內容總結
請用思維導圖的形式將到目前為止所學的內容進行整理。
3.3.2 學習體會
轉眼間C語言作業已經寫到了了第八周,我對於這八次的學習其實收獲還挺大的,學會到了各個C語言編程語句(for語句,if-else語句,switch語句等等),以及各種字符(雖然現在對於某些字符含義還是不懂),但我相信,只要我繼續去熟記C語言方面的句型和字符意義,我一定會有很大進步的,天不生我,萬古如長夜,加油吧,少年!