首先判断该年是闰年还是平年,两者就只有2月天数不同,定义两个一维数组分别存储闰年的12月每月的天数和平年的12月每月的天数,如果是1月直接输出day的值,其他分别为前几个月份天数的和再加上day数。
#include <stdio.h>
int main()
{
int year,month,day,i,sum=0;
int N[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int D[12]={31,29,31,30,31,30,31,31,30,31,30,31};
printf("请输入年月日:\n");
scanf("%d %d %d",&year,&month,&day);
if((year% 4==0) && (year%100 != 0) || (year%400 == 0)){
if(month==1){
printf("是该年的第%d天\n",day);
return 0;
}
for(i=0;i<month-1;i++){
sum+=D[i];
}
}else {
if(month==1){
printf("是该年的第%d天\n",day);
return 0;
}else{
for(i=0;i<month-1;i++){
sum+=N[i];
}
}
}
printf("是该年的第%d天.\n",sum+day);
return 0;
}