根据给出年、月、日,编写程序,输出日是本年的第几天?

方法一:采用递归调用

int YearMon_Day(int year,int month)

{
int days;
if(year < 1||month < 1||month > 12) {  return -1;  }
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: days = 31; break;
case 2:  days = 28; break;
case 4:
case 6:
case 9:
case 11: days = 30;break;
}
if( month == 2 && (year%4 == 0 && year % 100 !=0 || year%400 == 0))  { days = 29; }
    return days;
}
int YearMonDay_To_Total(int year,int month,int day)
{
if(year < 1|| month < 1||month > 12||day < 1||day > YearMon_Day(year,month))
{
return -1;
}
int total = 0;
int i;
for(i = 1 ;i < month;++i)
{
total = YearMon_Day(year,i) + total;
}
return total + day;
}
void main()
{
int year = 0;
int month = 0;
int day = 0;
int total = -1;
scanf("%d %d %d",&year,&month,&day);
total = YearMonDay_To_Total(year,month,day);
if(total != -1)
{
printf("%d \n",total);
}
else 
{
printf("input error: \n");
}

}

方法二:采用switch()循环

int main()
{
int year,month,day;
int days = 0;
int sum = 0;
scanf("%d %d %d",&year,&month,&day);
if(year < 1||month < 0||month > 12||day < 0)  return 0;
switch(month)
{
case 0:days = 0;    break;
case 1:days = day;  break;
case 2:days = 31;   break;
case 3:days = 60;   break;
case 4:days = 91;   break;
case 5:days = 121;  break;
case 6:days = 152;  break;
case 7:days = 182;  break;
case 8:days = 213;  break;
case 9:days = 244;  break;
case 10:days = 274; break;
case 11:days = 305; break;
case 12:days = 335; break;

if((year%4 ==0&&year%100 !=0||year%400 == 0)||month > 2)
{
days = days -1;
}
sum = days + day;
printf("%d \n",sum);

}

方法三:查表法

struct Date
{
int year;
int day;
int month;
};
int main()
{
Date date;
int days = 0;
    int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    printf("Input year,month and day:\n");
    scanf("%d %d %d",&date.year,&date.month,&date.day);
    int i = 0;
    for(;i < date.month; i++)
{
        days = month[i]+date.day;
}
   if(date.month > 2 && (date.year % 4 == 0 && date.year % 100 != 0 ||date.year % 400 == 0))
   {
  days = days + 1;
   }
  printf("%d \n",days);
    return 0;

}


猜你喜欢

转载自blog.csdn.net/qq_40303781/article/details/80292337