实例014:计算某日是该年的第几天
实例说明:
编写一个计算天数的程序,用户从键盘中输入年、月、日,在屏幕中输出此日期是该年的第几天。实现过程:
#include<stdio.h>
int leap(int a)
{
if(a%4==0&&a%100!=0||a%400==0)
return 1;
else
return 0;
}
int number(int year, int m, int d)
{
int sum =0, i, j, k, a[12]=
{
31,28,31,30,31,30,31,31,30,31,30,31
};
int b[12]=
{
31,29,31,30,31,30,31,31,30,31,30,31
};
if(leap(year))
for(i=0; i<m-1; i++)
sum +=b[i];
else
for(i=0; i<m-1; i++)
sum +=a[i];
sum +=d;
return sum;
}
void main()
{
int year, month, day, n;
printf("请输入年-月-日\n");
scanf("%d-%d-%d",&year,&month,&day);
n=number(year,month,day);
printf("第%d天\n",n);
}
技术要点:
1.判断输入的年份是否是闰年,通过自定义函数leap()来进行判断,该函数的核心就是判断条件为能被4整除但是不能被100整除,或能被400整除。
2.如何求该日期是该年的第几天,可以通过将12个月的每个月的天数存储到数组中,其中因为闰年2月的天数有别于平年,故采用两个数组a和b来进行存储。然后,当输入的年份是平年,月份为m时,就累加存储着平年每月天数的数组的前m-1个元素,最后将累加结果加上输入的日,便得到了最终结果。闰年算法类似。
3.编程提示:warning: return type of ‘main’ is not `int’
可以去除void。实验结果: