問題 | 回答 |
---|---|
這個做業屬於那個課程 | C語言程序設計II |
這個做業要求在哪裏 | C語言I做業07 |
我在這個課程的目標是 | 本身設計一個小遊戲 |
這個做業在那個具體方面幫助我實現目標 | 在PTA題目中屢次使用switch語句 |
參考文獻 | C語言程序設計,百度文獻 僞代碼1 僞代碼2 |
輸入格式:
輸入在一行中按照格式「yyyy/mm/dd」(即「年/月/日」)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。學習
輸出格式:
在一行輸出日期是該年中的第幾天。測試
輸入樣例1:.net
2009/03/02設計
輸出樣例1:3d
61code
輸入樣例2:htm
2000/03/02blog
輸出樣例2:遊戲
62事件
#include <stdio.h> int main() { int year,month,day; 輸入年月日 if(year%4==0&&year%100!=0||year%400==0)/* 判斷是否是閏年*/ { /* 是閏年*/ switch(month) { case 1:printf("%d\n",day);break; /* 閏年1月*/ case 2:printf("%d\n",31+day);break; /* 閏年2月*/ case 3:printf("%d\n",60+day);break; /* 閏年3月*/ case 4:printf("%d\n",91+day);break; /* 閏年4月*/ case 5:printf("%d\n",121+day);break; /* 閏年5月*/ case 6:printf("%d\n",152+day);break; /* 閏年6月*/ case 7:printf("%d\n",182+day);break; /* 閏年7月*/ case 8:printf("%d\n",213+day);break; /* 閏年8月*/ case 9:printf("%d\n",244+day);break; /* 閏年9月*/ case 10:printf("%d\n",274+day);break; /* 閏年0月*/ case 11:printf("%d\n",305+day);break; /* 閏年11月*/ case 12:printf("%d\n",335+day);break; /* 閏年12月*/ } } else /* 不是閏年*/ { switch(month) { case 1:printf("%d\n",day);break; /* 平年1月*/ case 2:printf("%d\n",31+day);break; /* 平年2月*/ case 3:printf("%d\n",59+day);break; /* 平年3月*/ case 4:printf("%d\n",90+day);break; /* 平年4月*/ case 5:printf("%d\n",120+day);break; /* 平年5月*/ case 6:printf("%d\n",151+day);break; /* 平年6月*/ case 7:printf("%d\n",181+day);break; /* 平年7月*/ case 8:printf("%d\n",212+day);break; /* 平年8月*/ case 9:printf("%d\n",243+day);break; /* 平年9月*/ case 10:printf("%d\n",273+day);break; /* 平年10月*/ case 11:printf("%d\n",304+day);break; /* 平年11月*/ case 12:printf("%d\n",334+day);break; /* 平年12月*/ } } return 0; }
輸入數據 | 輸出數據 | 說明 |
---|---|---|
2019/11/06 | 310 | 今日日期,31+28+31+30+31+30+31+31+30+31+6=310 |
2018/03/05 | 64 | 非閏年,31+28+5=64 |
2004/05/05 | 126 | 閏年,31+29+31+30+5=126 |
提交列表說明:
答案錯誤:輸入格式錯了,忘記在%d之間加。
大於等於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() { int n,i,grade,w; int A←0,B←0,C←0,D←0,E←0; 輸入學生人數 if(n>0) /*學生人數大於0時*/ { for(i=1;i<=n;i++) { scanf("%d",&grade);/*輸入學生成績*/ w=grade/10; /*取分數第一位數以便事件的常量表達*/ switch(w) { case 10:A++;break; /*大於等於90分*/ case 9:A++;break; /*大於等於90分*/ case 8:B++;break; /*小於90且大於等於80*/ case 7:C++;break; /*小於80且大於等於70*/ case 6:D++;break; /*小於70且大於等於60*/ default:E++;break; /*小於60*/ } } } printf("%d %d %d %d %d",A,B,C,D,E); return 0; }
輸入數據 | 輸出數據 | 說明 |
---|---|---|
5\n 55 66 77 88 99 | 1 1 1 1 1 | 分別爲A B C D E |
5\n 96 100 88 76 0 | 2 1 1 0 1 | 分別爲A B C D E |
6\n 23 61 70 80 90 60 | 1 1 1 2 1 | 臨界值 |
答案錯誤: scanf("%d",& grade);輸出放在for語句前,沒能實現循環。
1,咱們變量不同,他他變量多幾個,個人少幾個。
2咱們代碼差異很大,他的是在for語句中循環,個人剛是把十個月都列出來了,我這方法比較笨,一看他代碼頓悟了,本身當時怎麼想到。
3,個人代碼行比他的長多了,他的方法值得我學習。
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
11.4~11.10 | 12h | 232 | 熟悉多分支結構switch語句的使用 | 在博客園中如何添加小掛飾 |
本週學習了多分支結構switch語句,當常量表達式所表達的量與其中一個case語句中的常量相符時,就執行此case語句後面的語句,並依次下去執行後面全部case語句中的語句,除非遇到break;語句跳出switch語句爲止。若是常量表達式的量與全部case語句的常量都不相符,就執行default語句中的語句並跳出switch語句。本週PTA第三題若是不限語句,那很容易的,這題我想了好久,在書上看到了for語句中加switch語句才恍然大悟,又學習了一個語句,仍是蠻開心的,switch語句做用也很大,不過第一題只記着用switch語句,忘了也能用for語句,想把C語言學好,設計一個小遊戲仍是蠻難的,不過我會努力的。