這個作業屬於那個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | C語言I作業07 |
我在這個課程的目標是 | 學會並熟練多分支結構switch語句的使用 |
這個作業在那個具體方面幫助我實現目標 | 在PTA上各種題型的練習和老師布置的類型作業 |
參考文獻 | 百度 |
一、PTA作業
1.1 計算天數
本題要求編寫程序計算某年某月某日是該年中的第幾天。
輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。
1.1.1 數據處理
數據表達: 用了4個整型變量year,month,day,date;
每個月的情況列出
date=每個月的天數加之前的天數將表達式列出
數據處理: 定義整型變量,用case列出閏年情況,判斷是否為閏年,在列出非閏年的式子,最后輸出
偽代碼
include<stdio.h>
int main()
{
int定義年,月,日;
int定義天數=0;
scanf("%d/%d/%d"輸入年月日三個值,&year,&month,&day);
switch(月份)
{
case 1:對應的天數;break;
case 2:對應的天數;break;
case 3:對應的天數;break;
case 4:對應的天數;break;
case 5:對應的天數;break;
case 6:對應的天數;break;
case 7:對應的天數;break;
case 8:對應的天數;break;
case 9:對應的天數;break;
case 10:對應的天數;break;
case 11:對應的天數;break;
case 12:對應的天數;break;
}
if((年數%40&&年數%100!=0||年數%4000)
{
if(月份>2)
{
天數+1 ;
}
}
printf("%d",date);輸出天數
return 0;
}
1.1.2 實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
2000/02/25 | 56 | 2月25日是2000年的第56天 |
2001/07/20 | 201 | 7月20日是2001年的第201天 |
2005/05/27 | 147 | 5月27日是2005年的第147天 |
1.1.4 PTA提交列表及說明
提交列表說明:
- 答案錯誤:第29行中%d前面加了空格
- 答案正確:把第29行%d前面的空格刪除
1.2統計學生成績
本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:
大於等於90分為A;
小於90且大於等於80為B;
小於80且大於等於70為C;
小於70且大於等於60為D;
小於60為E。
1.2.1 數據處理
數據表達:用了九個整型變量:N(學生數),i(控制變量),G(分數),sum(變量),A,B,C,D,E(五分制);
數據處理:定義整型變量,用for結構進行循環,用switch分支結構列出情況
偽代碼:
include<stdio.h>
main()
{
int 定義整型N(學生個數),i(控制變量),G(學生成績),sum(成績/10),A=0,B=0,C=0,D=0,E=0;
scanf("%d",&N)先輸出N;
for(i=1;i<=N;i++)循環N次的條件
{
scanf("%d",&G)輸出G;
sum=G/10;
switch(成績/10)
{
case 10:A++;break;A=A+1
case 9:A++;break; A=A+1
case 8:A++;break; B=B+1
case 7:A++;break; C=C+1
case 6:A++;break; D=D+1
default:E++;break
}
}
printf("%d %d %d %d %d",A,B,C,D,E);輸出ABCDE等級的人數
return 0;
}
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
3 68 49 63 | 0 0 0 2 1 | A等級的有0個,B等級的有0個,C等級的有0個,D等級的有2個,E等級的有1個 |
4 68 75 84 59 | 0 1 1 1 1 | A等級的有0個,B等級的有1個,C等級的有1個,D等級的有1個,E等級的有1個 |
5 65 73 24 89 94 | 1 1 1 1 1 | A等級的有1個,B等級的有1個,C等級的有1個,D等級的有1個,E等級的有1個 |
1.2.4 PTA提交列表及說明
提交列表說明:
- 部分正確:第14行中B后面少了一個+
- 部分正確:第17行中break后面少了;
- 部分正確:第20行中少了一個%d
- 答案正確:在第14行B后面再加一個+,在第17行break后面加上; 在第20行再加一個%d。
2.代碼互評
同學代碼截圖
自己代碼截圖
- 該同學定義了y,n,d,我定義了year,month,day,我定義了英文全稱,他定義了英文字母
- 該同學用if-else語句將閏年和非閏年的情況分開列出,我是直接將閏年的情況列出,再舉出非閏年情況的子式
- 該同學的代碼都將情況列出使人易懂,我的代碼行數較少看起來沒有那么多
同學代碼截圖
自己代碼截圖
- 該同學用了兩次for循環和一次switch結構,我只用了一次for循環和switch結構
- 該同學用了6個常量表達式,我用了7個表達式,而且該同學用到了數組的知識
- 該同學用了數組提前學習了后面的內容值得我學習,但是我的代碼相比較之下更簡單
3.學習總結
3.1 學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第六周 | 21小時 | 400行 | 如何用 MinGW-w64 來編譯C程序 | 無 |
第七周 | 24小時 | 478行 | 運用if語句完成各種數學程序 | 對於&&的用法不了解,現在操作不熟練 |
第八周 | 20小時 | 349行 | 掌握使用for循環語句實現指定次數的循環程序設計 | 無 |
第九周 | 23小時 | 264行 | 學會使用自定義函數 | 目前不太熟練 |
第十周 | 22小時 | 167行 | 熟悉多分支結構、字符型數據類型和邏輯運算符 | 還沒有完全熟悉 |
第十一周 | 18小時 | 150行 | 熟悉多分支結構switch語句的使用 | 無 |
3.2 累積代碼行和博客字數
時間 | 博客字數 | 代碼行數 |
---|---|---|
第四周 | 525 | 50 |
第五周 | 645 | 100 |
第六周 | 0 | 400 |
第七周 | 2659 | 478 |
第八周 | 3586 | 597 |
第九周 | 4769 | 698 |
第十周 | 5897 | 787 |
第十一周 | 6289 | 897 |
3.3 學習內容總結和感悟
3.3.1 學習內容總結
3.3.2 學習體會
學習c語言有一段時間了,越是學到后面越難,上周學習了分支結構的嵌套,這周又學了一個語句,解題技巧又增加了,現在編代碼時沒有第一次那么吃力了,但是仍然不太熟練,我還欠缺很多的鍛煉,我以后還需要更努力的去練習,花更多的時間在這里,朝着我的目標前進