這個作業屬於哪個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11531 |
這個作業的目標 | 熟練運用循環鑲嵌結構 |
這個作業在那個具體方面幫助我實現目標 | 函數的運用 |
參考文獻 | C語言程序設計 |
你的學號 | 20208963 |
1.PTA實驗作業
1.題目一
1.1.1數據處理
數據表達:運用整數型變量n和number;
以及自定義函數:
void count_sum( int a, int b )
數據處理:運用循環語句while和for語句以及分支語句if-else
while(num>0){ /*循環結構while判斷整數每個位置的數;
n+=num%10;
num/=10;
}
if(n==5){ /*判斷是否等於5,跳出;
return 1; /*返回值為一;
for(a;a<=b;a++){ /*循環統計數量;
if (is(a)){
count++;
sum+=a; /累加;
1.1.2 實驗代碼截圖
1.1.3 造實驗測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
111 201 | count = 4, sum = 506 | 260到201之間有4個各位數字之和是否等於5的數,且它們的和為506 |
260 520 | count = 6, sum = 2244 | 260到520之間有4個各位數字之和是否等於5的數,且它們的和為2244 |
320 360 | count = 1, sum = 320 | 320到360之間有4個各位數字之和是否等於5的數,且它們的和為320 |
444 999 | count = 1, sum = 500 | 444到999之間有4個各位數字之和是否等於5的數,且它們的和為500 |
1.1.4 提交列表及說明
1.在編譯過程中沒有考慮到A本身的數值,在循環運算時沒有算入循環體
將
for(a;a<b;a++)
改為
for(a;a<=b;a++)
運算正確;
2.在編譯過程中忘記了while的循環跳出條件,導致結果沒有跳出
將
while(num>=0)
改為
while(num>0)
運算正確,編譯成功;
1.2.1數據處理
數據表達:運用整數型變量m n c 以及數組表達序列num[10001],flag[10001],pri[10001];
數據處理:運用自定義函數
int get(int d)
以及循環語句while和for還有if-else分支語句
if(num[d] != -1) return num[d] /*判斷數組變量是否表達;
num[d] = -2; /*對數據進行賦值;
int t = d,sum = 0;
while(t) { /*循環體變量t的值;
sum += (t % 10) * (t % 10);
t /= 10;
}
t = get(sum); /*賦予t新的數值;
if(t >= 0) flag[sum] = 1;
return num[d] = t == -2 ? t : t + 1;
1.2.2實驗代碼截圖
1.2.3造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
110 120 | SAD | 沒有幸福數 |
10 40 | 19 23 28 31 32 8 6 3 4 3 | 在10到40之間有5個幸福數分別為19 23 18 31 32獨立性分別為8 6 3 4 3 |
40 60 | 44 49 4 4 | 在40到60之間有2個幸福數分別為44 49獨立性分別為4 4 |
100 120 | 103 109 4 8 | 在100到120之間有2個幸福數分別為103 109獨立性分別為4 8 |
1.2.4提交列表及說明
1.在運用循環語句for時,忘記考慮了一種情況,
沒有對
for(int i = m;i <= n;i ++)
再次使用,導致運算結果缺少了獨立性的表達
運用兩次后成功輸出;
2.在運用for語句鑲嵌時,將最外層的大范圍數據循環寫到了最外面,、
導致范圍出錯
改為
for(int i = 2;i * i <= 10000;i ++) {
if(pri[i]) continue;
for(int j = i * i;j <= 10000;j += i) {
pri[j] = 1;
成功運行,運算正確;
2.代碼互評
同學代碼1
同學代碼2
我的代碼
互評:1.從語句的運用方面來說,我們整體上的代碼思路是一致的,
都運用了while循環語句來判斷數組變量,然后運用if-else
多分支結構去輸出多種結果
2.從代碼的運用上來說【同學代碼1】運用了插旗子標記的方法
flag=1 flag=0
以此來使代碼輸出的結果有兩種輸出渠道,甚是方便實用
3.從代碼整體簡潔性上看【同學代碼2】的代碼內容較為簡潔,
但是相對來說也容易出錯,細節較多。充分展示了該同學對
代碼編程的掌握能力和理解能力;
3.學習總結
周/日期 | 這周所花時間 | 代碼行 | 學到到的知識點 | 目前比較困惑的問題 |
---|---|---|---|---|
第一周 | 6小時 | 200 | 輸出Hello World | 對於循環的條件運用以及 |
第二周 | 8小時 | 500 | 數學運算 if分支語句 | 循環時具體的賦值狀態 |
第三周 | 15小時 | 900 | for循環語句 | |
第四周 | 18小時 | 700 | 調用自定義函數 | 對於自定義函數掌握不太熟練 |
第五周 | 19小時 | 800 | 邏輯運算以及if多分支結構 | 運用if多分支時容易搞混亂語句的結構順序 |
第六周 | 24小時 | 900 | switch語句的多分支結構 | 不能熟練掌握switch語句簡化語句的以及break跳出方式 |
第七周 | 27小時 | 950 | while語句 | 不能熟練運用while的判斷條件 |
第八周 | 29小時 | 780 | 鑲嵌結構 | 不能較好分清鑲嵌的層次和次數 |
第九周 | 32小時 | 800 | 循環多分支結構以及自定義函數 | 不能熟練掌握自定義函數有參和無參的相對意義 |
3.2 累積代碼行和博客字數
3.3 學習內容總結和感悟
3.3.2 學習體會
1:已經學習九周目了,對於程序的編寫也越來越復雜,對於代碼的研究也越來越深入。我從中慢慢感受到了這門學科的難點和重點
2:我已經能夠理解簡單的代碼數據類型,也能夠看懂其他人一些簡單的代碼結構,這將會對我以后自己研究代碼提供了一定的基礎
3:我也能夠從不同的代碼編寫上找出簡便的編寫方法,研究出一套適合自己的編寫路徑和獨特的代碼編寫特點。
4:學習完for語句鑲嵌后才發現好多東西代碼可以替換,每種代碼有着本身的特色和表達方式,不同代碼組合在一起會產生極大效果
每種代碼的相互配合和結合都會有助於程序的編寫,以及自定義函數的使用讓編程語句更加簡潔實用;
5: 希望以后自己能夠堅持住對代碼編寫的信心,對於代碼的運用越來越熟練。