定义一个结构体变量(包括年月日)。计算该日在本年中是第几天?注意闰年问题。
#include <stdio.h>
struct date{
int year;
int month;
int day;
};
/*
判断闰年
*/
_Bool is_year(int y)
{
if((y%4==0 && y%100) || y%400==0 )
return 1;
return 0;
}
int days_of_month(int month, int year)
{
int day, days = 0;
while(month > 0){
day = 0;
switch(month--){
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if(is_year(year))
day = 29;
else
day = 28;
break;
default:
day = 31;
break;
}
days += day;
}
return days;
}
int main(void)
{
struct date d;
printf("请输入年月日:");
scanf("%d%d%d",&d.year, &d.month, &d.day);
int n = days_of_month(d.month-1, d.year) + d.day;
printf("该日在本年中是第%d天。\n",n);
return 0;
}
运行示例:
localhost@ubuntu:~$ ./w04
请输入年月日:2023 6 15
该日在本年中是第166天。