c语言结构体日期复合,C语言用结构体求所给日期是一年第几天

#include

#include

#include

typedef struct date

{

int year;

int month;

int day;

}DATE;

int days[12]={0};

int main()

{

DATE date;

int valid=0;int which_day;

do

{

printf("请输入某天日期值(年,月,日),输入(0,0,0)代表结束\n");

scanf("%d,%d,%d",&date.year,&date.month,&date.day);

valid=isvalid(date);

//printf("valid=%d\n",valid);

if(valid==1)

{

which_day=whichday(date);

printf("%d-%d-%d是%d年的第%d天\n",date.year,date.month,date.day,date.year,which_day);

}

else printf("您的输入有误\n");

}

while(date.year!=0||date.month!=0||date.day!=0);

return 0;

}

int isleap(const int year_input)//是否是闰年

{

int is_leap;

assert(year_input>=0&&year_input<=9999);

if(year_input%4==0&&year_input%100!=0)

is_leap=1;

else if(year_input%400==0)

is_leap=1;

else

is_leap=0;

return is_leap;

}

int isvalid(DATE date_input)//判断输入的日期是否有效

{

int is_valid=0;int is_leap;

is_leap=isleap(date_input.year);

days[0]=31;

days[2]=31;days[3]=30;

days[4]=31;days[5]=30;

days[6]=31;days[7]=31;

days[8]=30;days[9]=31;

days[10]=30;days[11]=31;

switch(is_leap)

{

case 1:days[1]=29;break;

case 0:days[1]=28;break;

}

if(date_input.year>=0&&date_input.year<=9999)

if(date_input.month>=1&&date_input.month<=12)

if(date_input.day>=0&&date_input.day<=days[date_input.month-1])

is_valid=1;

else is_valid=0;

return is_valid;

}

int whichday(DATE date)//求是第几天

{

int i;int sum=0;

if(date.month==1)

sum=date.day;

else

{

for(i=0;i

{

sum=sum+days[i];

}

sum=sum+date.day;

}

return sum;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值