PTA——计算天数
PTA——計算天數(shù)
題目:
本題要求編寫程序計算某年某月某日是該年中的第幾天。
輸入格式:
輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。
輸出格式:
在一行輸出日期是該年中的第幾天。
輸入樣例1:
2009/03/02輸出樣例1:
61輸入樣例2:
2000/03/02輸出樣例2:
62整體思路如下:
函數(shù)版思路我就不講了,以后讀者會學到。非函數(shù)版,先用switch函數(shù)直接算出閏年的天數(shù),之后再進行閏年和非閏年的判斷,其中a是用來存儲總天數(shù),各位應該能看懂吧,看不懂的評論哪一塊看不懂,我再細改。
整體代碼如下:
非函數(shù)版
#include<stdio.h> int main() {int y,m,d,a;scanf("%d/%d/%d",&y,&m,&d);switch(m){case(1):a=d;break;case(2):a=31*1+d;break;case(3):a=31*1+29*1+d;break;case(4):a=31*2+29*1+d;break;case(5):a=31*2+30*1+29*1+d;break;case(6):a=31*3+30*1+29*1+d;break;case(7):a=31*3+30*2+29*1+d;break;case(8):a=31*4+30*2+29*1+d;break;case(9):a=31*5+30*2+29*1+d;break;case(10):a=31*5+30*3+29*1+d;break;case(11):a=31*6+30*3+29*1+d;break;case(12):a=31*6+30*4+29*1+d;break;}if(y%400==0||(y%4==0&&y%100!=0)){printf("%d",a);}else{if(m<=2) printf("%d",a);else printf("%d",a-1);}return 0; }函數(shù)版
#include<stdio.h> int normal(int m, int d); int main() {int y,m,d;scanf("%d/%d/%d",&y,&m,&d);if(y%400==0||(y%4==0&&y%100!=0)){printf("%d",normal(m,d));}else{if(m<=2) printf("%d",normal(m,d));else printf("%d",normal(m,d)-1);}return 0; } int normal(int m,int d) {int a;switch(m){case(1):a=d;break;case(2):a=31*1+d;break;case(3):a=31*1+29*1+d;break;case(4):a=31*2+29*1+d;break;case(5):a=31*2+30*1+29*1+d;break;case(6):a=31*3+30*1+29*1+d;break;case(7):a=31*3+30*2+29*1+d;break;case(8):a=31*4+30*2+29*1+d;break;case(9):a=31*5+30*2+29*1+d;break;case(10):a=31*5+30*3+29*1+d;break;case(11):a=31*6+30*3+29*1+d;break;case(12):a=31*6+30*4+29*1+d;break;}return a; }總結(jié)
- 上一篇: 系统垃圾清理bat文件
- 下一篇: 企业级和个人苹果帐号AppleId申请