定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题。
输出格式要求:"\n%d月%d日是%d年的第%d天。"
程序的运行示例如下:
请输入日期(年,月,日)
1990,2,14
2月14日是1990年的第45天。
#include<stdio.h>
typedef struct day{
int y;
int m;
int d;
} day;
int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int check(day x)
{
if(x.y%4==0&&x.y%100!=0 || x.y%400==0)
return 1;
return 0;
}
int main()
{
day x;
printf("请输入日期(年,月,日)");
scanf("%d,%d,%d",&x.y,&x.m,&x.d);
int t=x.m;
int sum=0;
if(x.m>2&&check(x) || x.m==2&&x.d==29)
sum+=1;
if(x.m==1)
sum+=x.d;
else{
while(x.m){
sum+=month[x.m-1-1]; //-1:加到该月的上个月;-1:month是从0开始的
x.m--;
}
sum+=x.d;
}
printf("\n%d月%d日是%d年的第%d天。",t,x.d,x.y,sum);
return 0;
}