這個作業屬於那個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | C語言I作業08 |
我在這個課程的目標是 | 熟練掌握C語言 |
這個作業在那個具體方面幫助我實現目標 | 在PTA上各種題型的練習和老師布置的類型作業 |
參考文獻 | 百度 |
一、PTA作業
1.1求整數的位數及各位數字之和
對於給定的正整數N,求它的位數及其各位數字之和。
輸入格式:
輸入在一行中給出一個不超過十的九次方的正整數N。
輸出格式:
在一行中輸出N的位數及其各位數字之和,中間用一個空格隔開。
輸入樣例:
321
輸出樣例:
3 6
1.1.1 數據處理
數據表達:用了整形變量number, temp, i = 0, sum = 0;
sum表示各位數字之和,i表示它的位數
數據處理:用了while語句,
用了表達式sum += temp % 10除以10取余數
用了表達式 temp /= 10除以10取余數
用了表達式 i++使用i之后再加一
偽代碼
include <stdio.h>
int main(void)
{
定義整形變量number, temp, i = 0, sum = 0
scanf("%d", &number);
temp = number;
while (temp) {
sum += 除以10取余數;
temp 除以10取商;
i++;
}
printf("%d %d\n", i, sum);輸出它的位數及其各位數字之和
return 0;
}
1.1.2 實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
28 | 2 10 | 28它的位數是2及其各位數字之和是10 |
327 | 3 12 | 327它的位數是3及其各位數字之和是12 |
527 | 3 14 | 527它的位數是3及其各位數字之和是14 |
1.1.4 PTA提交列表及說明
提交列表說明:
在編譯器中提前編譯,所以沒有錯誤
1.2爬動的蠕蟲
一條蠕蟲長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下滑了D寸,L表示高度,N表示深為N寸,向上爬U寸
數據處理:用了while語句和if語句,
用了表達式time表示時間的變化;
用了表達式 L=L+U表示蠕蟲爬的高度;
用了表達式 L>=N,break;L=L-D;time++;表示蠕蟲爬出的時間
偽代碼:
include <stdio.h>
int main()
{
定義爬蟲的高度,向上爬的寸數,下滑的寸數,井的深度
scanf("%d %d %d",&N,&U,&D);
定義爬蟲需要的時間
time=L=0;
while(蠕蟲的高度<井的深度){
time++;
L=L+U;
if(蠕蟲爬的高度>井的深度)
退出
L=L-D;
time++;
}
printf("%d",time);輸出蠕蟲所需的時間
return 0;
}
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
15 6 2 | 7 | 深為15寸的井,蠕蟲每1分鍾可以向上爬6寸,蠕蟲需要7分鍾才能爬出井 |
13 4 2 | 11 | 深為13寸的井,蠕蟲每1分鍾可以向上爬4寸,蠕蟲需要11分鍾才能爬出井 |
14 5 3 | 11 | 深為14寸的井,蠕蟲每1分鍾可以向上爬5寸,蠕蟲需要11分鍾才能爬出井 |
1.2.4 PTA提交列表及說明
提交列表說明:
在編譯器上提前編譯,所以沒有錯誤,在編譯器上的錯誤已經記下
2.代碼互評
同學代碼截圖
自己代碼截圖
該同學用了整形變量x,d,i,n,字符型數組s[100];我用了整型變量num,n,mask,i
該同學用了數組的知識點,而我只用了while語句和if語句的結合
結構上該同學的更加整潔美觀,而我的有點復雜難懂
同學代碼截圖
自己代碼截圖
該同學的代碼是分開列舉距井口的距離是否大於零,距離井口的距離和一分鍾內爬的距離的大小,最后輸出時間;我的代碼是判斷蠕蟲的高度和井口的距離,最后輸出時間
該同學的代碼整潔美觀,更容易讓人看懂,我的代碼相較之下,有點復雜
3.學習總結
3.1 學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第六周 | 21小時 | 400行 | 如何用 MinGW-w64 來編譯C程序 | 無 |
第七周 | 24小時 | 478行 | 運用if語句完成各種數學程序 | 對於&&的用法不了解,現在操作不熟練 |
第八周 | 20小時 | 349行 | 掌握使用for循環語句實現指定次數的循環程序設計 | 無 |
第九周 | 23小時 | 264行 | 學會使用自定義函數 | 目前不太熟練 |
第十周 | 22小時 | 167行 | 熟悉多分支結構、字符型數據類型和邏輯運算符 | 還沒有完全熟悉 |
第十一周 | 18小時 | 150行 | 熟悉多分支結構switch語句的使用 | 無 |
第十二周 | 16小時 | 130行 | 熟悉使用while和do-while結構解決問題 | 目前還不太熟練 |
3.2 累積代碼行和博客字數
時間 | 博客字數 | 代碼行數 |
---|---|---|
第四周 | 525 | 50 |
第五周 | 645 | 100 |
第六周 | 645 | 400 |
第七周 | 2659 | 478 |
第八周 | 3586 | 597 |
第九周 | 4769 | 698 |
第十周 | 5897 | 787 |
第十一周 | 6289 | 897 |
第十二周 | 7594 | 1056 |
3.3 學習內容總結和感悟
3.3.1 學習內容總結
3.3.2 學習體會
學習c語言有一段時間了,越是學到后面越難,上周學習了分支結構的嵌套的又一個語句,這周學習了do while語句,並且知道了while語句,for語句和do while語句的區別,又增加了一項編碼技巧,也學到了新的C語言知識,現在編代碼時沒有以前那么吃力了,但是仍然不太熟練,而且題目也越來越難了,我還欠缺很多的鍛煉,也欠缺很多知識,我以后還需要更努力的去練習,花更多的時間在這里,朝着我的目標前進