這個作業屬於那個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | C語言I作業08 |
我在這個課程的目標是 | 熟悉使用while和do-while結構解決問題 |
這個作業在那個具體方面幫助我實現目標 | 在作業中不斷總結錯誤,更好地掌握了C語言 |
參考文獻 | C語言 |
1.PTA實驗作業
1.1題目1:7-3 jmu-c-二進制轉10進制
- 題目內容描述:輸入一組二進制字符,輸出其對應的十進制數。當輸入回車鍵時,輸入結束。若輸入非二進制字符,輸出error input!
1.1.1數據處理
數據表達
- 定義字符ch,整形變量sum存放結果,整形變量flag用於輔助判斷。
數據處理
- 使用了while循環語句,while(ch!='\n)回車作為結束標志。
- 使用了switch語句,switch(ch)當輸入新二進制字符十進制數*2+字符實現二進制轉十進制。
- default ch='\n'當輸入非二進制輸出“error input!”,並結束循環。
- if(flag==0)printf(“%d”,sum)輸入非法字符時不輸出sum。
偽代碼
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
1 | 1 | 二進制中1對應十進制中1 |
11111111 | 255 | 二進制中11111111對應十進制中255 |
34 | error input | 34是非二進制字符 |
1.1.4 PTA提交列表及說明
- 編譯錯誤:第十行“%c”打成‘%c’,未注意引用號,
- 部分正確:第二十行中"error input!\n"打成了"error input!",\n未打
- 編譯錯誤:第二十八行 printf("%d",sum);未打sum。
1.2 題目2:7-5 爬動的蠕蟲
- 題目內容描述:一條蠕蟲長1寸,在一口深為N寸的井的底部。已知蠕蟲每1分鍾可以向上爬U寸,但必須休息1分鍾才能接着往上爬。在休息的過程中,蠕蟲又下滑了D寸。就這樣,上爬和下滑重復進行。請問,蠕蟲需要多長時間才能爬出井?這里要求不足1分鍾按1分鍾計,並且假定只要在某次上爬過程中蠕蟲的頭部到達了井的頂部,那么蠕蟲就完成任務了。初始時,蠕蟲是趴在井底的(即高度為0)
1.2.1數據處理
- 數據表達:定義了整形變量N,U,D,L,time。N代表水井深度,U代表蠕蟲每分鍾向上高度,D表示蠕蟲每分鍾又下滑高度 ,L為蟲子消耗的時間 。
- 數據處理:用了while語句進行循環,if語句進行條件判定。用了表達式 L=L+U表示蠕蟲爬的高度。用了表達式 L>=N,break;L=L-D;time++;表示蠕蟲爬出的時間。
偽代碼
1.2.2實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
15 5 1 | 7 | 深15寸的水井,每分鍾上爬5寸,每分鍾下滑1寸,爬到井頂要7分鍾 |
20 3 1 | 19 | 深20寸的水井,每分鍾上爬3寸,每分鍾下滑1寸,爬到井頂要19分鍾 |
50 40 30 | 3 | 深50寸的水井,每分鍾上爬540寸,每分鍾下滑30寸,爬到井頂要3分鍾 |
1.2.4 PTA提交列表及說明
- 編譯錯誤:第7行將time=L=0打成了time=0
- 編譯錯誤:第10行將time++;打成L++。
- 編譯錯誤:第17行將printf("%d",time)打成printf("%d",L)。
2.代碼互評
- 同學代碼
- 自己代碼
比較
- 1.他定義了一個變量x,我定義了變量sum,並以存放十進制數字flag輔助判斷。
- 2.while循環語句進行條件的表達式是一樣的都是(ch!='\n')。
- 3.他case'0',case'1'的表達式分開表示,分別為x=2x+0,x=2x+1,我的表達式只有一條為sum=sum*2+ch-'0'。
- 同學代碼
- 自己代碼
比較
- 1.我定義了一變量N,U,D,L,time,而他定義了變量n,u,d,t,path,並給t,path賦了初始值。
- 2.他運用了do-while語句和if-else語句,而我用了while語句。
- 3.因為語句不同,所以對計算時間的消耗的表達式也不同,我分L<N和L>=N兩種情況討論,而他分了當t%2!=0的情況和除t%2!=0之外的情況。
- 4.我認為兩個代碼各有優點,是兩種不同的思路,表達式完全不同,有值得借鑒的地方。
3.學習總結
3.1 學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第六周 | 20小時 | 150行 | 無 | 無 |
第七周 | 24小時 | 150行 | 運用if,else語句 | 對符號的意思不太理解 |
第八周 | 18小時 | 200行 | 運用for循環語句 | 無 |
第九周/10.25 | 8小時 | 200行 | 學習了自定義函數 | 符號容易弄混 |
第十周/11.1 | 26小時 | 250行 | 熟悉並掌握了多分支結構 | 各個運算符的意思還不太理解 |
第十一周/11.8 | 24小時 | 300行 | 熟悉並掌握分支結構switch語句 | 對空格的使用還比較疑惑 |
第十二周/11.15 | 18小時 | 380行 | 學會使用while和do-while結構解決問題 | 無 |
3.2 累積代碼行和博客字數
3.3 學習內容總結和感悟
3.3.1 學習內容總結
3.3.2 學習體會
- 本周熟悉並掌握了while和do-while結構語句,其實在之前作業里就有用到,這次是加以鞏固。
- 同時也清楚了for語句和while語句的區別,對C語言的認識又有了更深層次的了解。對字符的使用也更得心應手了。