本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
做题风格改变的一道题,从此敢于使用函数
方案:
-
构造一个数组,用来记录每个月的天数
-
用一个函数,判断该年是否是闰年。如果是闰年,则数组中2月的值要改变
-
然后用遍历数组,计算之前所有月份的天数
#include<stdio.h>
int isLeap( int year ) ;//函数声明记得加分号
int main(void){
int yyyy , mm , dd ;scanf("%d/%d/%d",&yyyy,&mm,&dd) ;
int output = 0 ;
int daysOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ;
//计算在该月之前有多少天,循环结束的条件注意一下
if(isLeap(yyyy)){
daysOfMonth[1] = 29 ;//如果是闰年,则2月(a1)改成29
for( int i = 0 ; i < mm - 1; i++ ){
output = daysOfMonth[i] + output ;
}
}else{
for( int j = 0 ; j < mm - 1; j++){
output = daysOfMonth[j] + output ;
}
}
printf("%d",output + dd) ;
return 0 ;
}
//判断是否是闰年,若是闰年返回1,平年返回0.
int isLeap( int year ){
int ret = 0 ;
if( year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
ret = 1 ;
}
return ret ;
}