最近遇到这样的编程题目,给出年、月、日,计算该日是该年第n天,经过自己思考后,编写程序如下,也考虑到了闰年和非年的问题,有详细的注释解释问题。
#include <stdio.h>
int main()
{
int output(int year,int momth,int day);
int year,month,day;
printf("请输入某年某月某日:");
scanf("%d%d%d",&year,&month,&day);//输入某年某月某日
printf("%d年%d月%d日为:第%d天",year,month,day,output(year,month,day));//输出第几天
return 0;
}
int output(int year,int month,int day)
{
int twomonth,flag,r,totaldays;
if((year%4==0)||(year%100==0&&year%400==0)) //确定某年是闰年还是非闰年
twomonth=29; //闰年二月份天数
else twomonth=28; //非闰年二月份天数
if(month>2)
{ r=month/2; //计算大月份个数
flag=1; //二月份标志位
}
else if(month==2) //为二月份时
{ flag=0;
r=month/2;
}
else //为一月份时
{
flag=0;
r=0;
}
totaldays=r*31+flag*twomonth+(month-r-flag-1)*30+day;//根据标志位来计算天数,
//第一个是大月份天数计算
//第二个是二月份天数计算
//第三个是小月份天数计算
//第四个是本月份天数计算
//最后将四个结果相加就是所求第n天
return totaldays;
}