C語言I博客作業07


|這個作業屬於那個課程|C語言程序設計II| |----------|----------| |這個作業要求在哪里|作業要求| |我在這個課程的目標是|將swith語句運用好,學習透| |這個作業在那個具體方面幫助我實現目標|在通過解決PTA的習題中的判斷switch語句的條件中逐漸幫助我實現目標| |參考文獻|集美大學林麗老師| #1.PTA實驗作業 ##1.1計算天數 本題要求編寫程序計算某年某月某日是該年中的第幾天。 輸入格式: 輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。 輸出格式: 在一行輸出日期是該年中的第幾天。 輸入樣例1: 2009/03/02 輸出樣例1: 61 輸入樣例2: 2000/03/02 輸出樣例2: 62 ###1.1.1數據處理 數據表達:用到了整形變量year, month, d;本來想打day的,后面輸入比較麻煩就簡化成了d。 數據處理:首先用到了個大的if-else分支結構來將閏年和平年分開討論,然后在其中分別進行switch語句的嵌入,而且在語句段中我就直接printf了 ###偽代碼 #include"stdio.h" int main (void) { 定義整形變量 年,月,日; 輸入年(四位)/月(兩位)/日(兩位); 如果(滿足閏年的條件) { switch(月){ case 1:輸出("%d\n",d)(閏年第一個月的天數);break; case 2:輸出("%d\n",31d)(閏年第二個月的天數);break; case 3:輸出("%d\n",60d)(閏年第三個月的天數);break; ...... case 12:輸出("%d\n",335d)(閏年第十二個月的天數);break; } } else(非閏年) { switch(月){ case 1:輸出("%d\n",d)(非閏年第一個月的天數);break; case 2:輸出("%d\n",31d)(非閏年年第二個月的天數);break; case 3:輸出("%d\n",59d)(非閏年第三個月的天數);break; ...... case 12:輸出("%d\n",334d)(非閏年第十二個月的天數);break; } } return 0; }

###1.1.2實驗代碼截圖

###1.1.3 造測試數據 |輸入數據|輸出數據|說明| |----------|----------|----------| |2019/06/18|169|非閏年跨2月的數| |2004/o8/18|231|普通閏年跨2月的數| |2019/02/08|39|非閏年不跨2月的數| |2019/02/08|39|普通閏年不跨2月的數| |2000/04/26|117|被100和400整除的閏年跨2月的數| ###1.1.4 PTA提交列表及說明

  • 部分正確:是由於將題中判別閏年的條件看錯了,看成了能被100整除但不能被4整除,導致漏過了部分閏年。
  • 編譯錯誤:因為首先在vs上面編譯的,所以未將scanf_s調為scanf。 還有下面多了個大括號,可能是截圖時不小心按到了 ##1.2統計學生成績 本題要求編寫程序讀入N個學生的百分制成績,統計五分制成績的分布。百分制成績到五分制成績的轉換規則: 大於等於90分為A; 小於90且大於等於80為B; 小於80且大於等於70為C; 小於70且大於等於60為D; 小於60為E。 輸入格式: 輸入在第一行中給出一個正整數N(≤1000),即學生人數;第二行中給出N個學生的百分制成績,其間以空格分隔。 輸出格式: 在一行中輸出A、B、C、D、E對應的五分制成績的人數分布,數字間以空格分隔,行末不得有多余空格。 輸入樣例: 7 77 54 92 73 60 65 69 輸出樣例: 1 0 2 3 1 ###偽代碼 #include"stdio.h" int main(void) { 定義整形變量N, m, d, i, A=0, B=0, C=0, D=0, E=0; scanf("%d\n", &N);輸出N i=1且<=運用循環語句累加; { scanf("%d", &m);輸出m d = m/10;m除以10計算出五分制的首數 switch (d) { case 10: case 9: A的個數累加; break; case 8: B的個數累加; break; case 7: C的個數累加; break; case 6: D的個數累加; break; case 5:case 4:case 3:case 2:case 1 :case 0: E的個數累加; break; } } 分別輸出A B C D E的個數 return 0; }

###1.2.1 數據處理 數據表達:定義了整型變量 N, m, d, i, A=0, B=0, C=0, D=0, E=0; 數據處理:用到了循環語句for (i = 1; i ⇐ N; i++),以及switch多分支結構,其中在其語句段中是直接將變量累加起來的,到了最后才輸出五分制成績的人數。 ###1.2.2實驗代碼截圖

###1.1.3 造測試數據 |輸入數據|輸出數據|說明| |----------|----------|----------| |6\ 68 68 89 98 78 87|1 2 1 2 0|其中一個A,兩個B,一個C,兩個D,0個E| |5\28 99 61 59 60|1 0 0 2 2|1個A 0個B 0個C 2個D 2個E| |4\29 42 18 55 |0 0 0 0 4|0個A 0個B 0個C 0個D 4個E| ###1.1.4 PTA提交列表及說明

  • 編譯錯誤:兩次編譯錯誤的原因都是沒有在編譯器上寫的scanf_s改為scanf。 #2.代碼互評 ##同學代碼截圖
    ##自己代碼截圖

  • 首先這位同學的代碼寫的十分簡短,給人一種很舒服的感覺,而我的就顯得比較繁瑣。

  • 她的前半部分的代碼與我后半部分的平年代碼差不多,而她的后面則是直接說如果滿足閏年的條件切月份大於2的話就直接在日期上加上一天,值得借鑒,很聰明!

##同學代碼截圖 ##自己代碼截圖

  • 最大的不同之處就是這位同學用到了我們還為學習的數組,雖然在簡便程度上並不會很容易的看出誰的更好,但在他提前學習並運用新知識這方面就足以讓我拿來互評與借鑒了
  • 然后可以看出他寫了兩條for語句,不過並沒有增添什么麻煩,其實感覺也差不多,現在我還不怎么懂數組,emm各有各的好吧

#3.學習總結 ##3.1 學習進度條 ##3.2 累積代碼行和博客字數 ##3.3 學習內容總結和感悟 ###3.3.1 學習內容總結 ###3.3.2 學習體會

  • 在本周的學習里,我慢慢了解並會運用多分支結構switch語句了,雖然感覺用起來還不是很熟,但我會再用心學的。時間過得真的挺快的,進入大學已經兩三個月了,但在c語言的學習上還是有點吃力,可能最開始幾個星期的基礎沒打牢吧,不過這么可本來就是要多靠自學的,每次說多出些時間來好好把之前的基礎知識再好好學一遍,但每次都落空了,離期末也不是很遠了,真的要好好把基礎鞏固牢了,再好好的往后學!加油啊,相信自己!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM