這個作業屬於那個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | C語言I博客作業07] |
我在這個課程的目標是 | 理解並使用switch語句 |
這個作業在那個具體方面幫助我實現目標 | 完成PTA作業和教材鞏固 |
參考文獻 | switch語句的執行流程 |
一、PTA作業
1.1 計算天數
本題要求編寫程序計算某年某月某日是該年中的第幾天。
1.1.1 數據處理
數據表達:定義了三個整型變量y,m,d為年月日的縮寫;再把每個月的case n:number=(第(N-1)個月以及之前月之和)變化表達式列出;
數據處理:先定義整型int變量,再用if-else語句判斷平閏年,最后輸出天數,平年閏年在2月份以后會有所不同。
偽代碼:
include<stdio.h>
int main()
{
int 年,月,日,
scanf("%4d四位數年/%2d二位數月/二位數日%2d",&year,&month,&day);
if如果(輸入的年份是閏年))
{
switch(月份)
{
case 1:表達式;break;
...
case 11:表達式;break;
}
}
else 平年
{
switch(月份)
{
case 1:表達式;break;
...
case 11:表達式;break;
default :表達式;break;
}
}
輸出printf("%d\n",day);
return 0;
}
1.1.2 實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
2000/06/23 | 175 | 2000年6月23日是這年的第175天 |
2008/10/01 | 275 | 2008年10月1日是這年的第275天 |
2019/01/01 | 1 | 2019年1月1日是這年的第1天 |
1.1.4 PTA提交列表及說明
編譯錯誤:忽略了這一步case 1:printf("%d\n",d);break;
1.2統計學生成績
本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則:
大於等於90分為A;
小於90且大於等於80為B;
小於80且大於等於70為C;
小於70且大於等於60為D;
小於60為E。
1.2.1 數據處理
數據表達:共定義了九個變量:N為學生總數,i為控制變量,grade為分數,w為變量,A,B,C,D,E為五分制分數;
數據處理:定義整型變量后,for結構中嵌套了switch語句
偽代碼:
include <stdio.h>
int main()
{
int 學生總數,控制變量,分數,變量,五分制分數;
int A=0,B=0,C=0,D=0,E=0;
scanf("%d",&n);
if(n>0)
{
for(i=1;i<=n;i++)
{
scanf("%d",&grade);
w=grade/10(判斷五分制分數等級);
switch(w)
{
case 10:條件;break;
case 9:條件;break;
case 8:條件;break;
case 7:條件;break;
case 6:條件;break;
default:條件;break;
}
}
}
printf("%d %d %d %d %d",輸出各個成績);
return 0;
}
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
3 12 45 67 | 0 0 0 1 2 | A等級0個,B等級0個,C等級0個,D等級1個,E等級2個 |
4 7 9 45 80 | 0 1 0 0 3 | A等級0個,B等級1個,C等級0個,D等級0個,E等級3個 |
5 4 12 45 67 99 | 1 0 0 1 3 | A等級1個,B等級0個,C等級0個,D等級1個,E等級3個 |
1.2.4 PTA提交列表及說明
default:E++;break;忽略了default
for語句沒用大括號括起來。
2.代碼互評
同學代碼截圖
我的代碼截圖
定義了每個變量的縮寫,打代碼時候方便些,全稱會麻煩一些,這個專業偷懶是非常有必要的。
我用的平年閏年分開計算,運用if-else語句,該同學列出閏年的例子,推出平年。
同學代碼截圖
我的代碼截圖
該同學用了數組知識,提前預習后面知識,是我學習的榜樣。
3.學習總結
3.1 學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較困惑的問題 |
---|---|---|---|---|
第六周 | 18小時 | 370行 | 如何用 MinGW-w64 來編譯C程序 | 無 |
第七周 | 16小時 | 400行 | 運用if-else語句 | 特殊符號運用不熟練 |
第八周 | 24小時 | 378行 | 掌握for語句循環的運用 | 無 |
第九周 | 25小時 | 264行 | 學會使用了自定義函數 | 無 |
第十周 | 19小時 | 164行 | 熟練分支結構,邏輯符的運算 | 時常編譯錯誤 |
第十一周 | 21小時 | 158行 | switch語句的使用 | 無 |
3.2 累積代碼行和博客字數
時間 | 博客字數 | 代碼行數 |
---|---|---|
第四周 | 520 | 55 |
第五周 | 610 | 110 |
第六周 | 0 | 400 |
第七周 | 2100 | 450 |
第八周 | 2400 | 560 |
第九周 | 3400 | 670 |
第十周 | 4201 | 780 |
第十一周 | 5412 | 900 |
3.3 學習內容總結和感悟
3.3.1 學習內容總結
3.3.2 學習體會
學習C語言一短時間了,從開始的懵逼到現在的有些頭緒了,但還是不熟練,練習欠佳,需要多加練習。學會使用了switch語句,難度越高越考驗我的耐力,繼續加油,干就完事了。