定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题。
我能力有限,未解决二月的天数不能超出29天,其他月份也是。
#include <stdio.h>
struct Data{
int Year;
int Month;
int Day;
};
int main(int argc, const char * argv[]) {
int Y,M,D,days = 0;
printf("请输入一个日期:");
scanf("%d%d%d",&Y,&M,&D);
struct Data data = {Y,M,D};
{ //取结构体元素用'.'
printf("%d\n",data.Year);
printf("%d\n",data.Month);
printf("%d\n",data.Day);
if (M<=12&&M>0)
{
int Feb=0;
if ((Y%4==0&&Y%100!=0)||Y%400==0){
if (D<30&&D>0) {
Feb=29;
}
else {
printf("闰年二月年只有29天\n");
}
}else {
Feb=28;
}
switch (data.Month) {
case 1:days=data.Day;
break;
case 2:days=data.Day+31;
break;
case 3:days=data.Day+Feb+31;
break;
case 4:days=data.Day+Feb+62;
break;
case 5:days=data.Day+Feb+92;
break;
case 6:days=data.Day+Feb+123;
break;
case 7:days=data.Day+Feb+153;
break;
case 8:days=data.Day+Feb+184;
break;
case 9:days=data.Day+Feb+215;
break;
case 10:days=data.Day+Feb+245;
break;
case 11:days=data.Day+Feb+276;
break;
case 12:days=data.Day+Feb+306;
break;
}
printf("为本年的第%d天",days);
}else printf("月份输入错误");
}
return 0;
}