c语言编程年月日看年龄,c语言中 求解如何判断输入的年月日是否合理

匿名用户

1级

2014-03-17 回答

//以下代码经调试,完全正确。

#include 

#include

int main()

{

int year,month,day;

int sum = 0;

int leap,error=0;

int flag=0;

do{

printf("请输入 年,月,日(英文标点附号,否则出错):  ");

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

if(month<0||month>12)

{

printf("不存在该月份,请重新输入");

flag = 1;

}

//以下判断日期是否符合月份

if(((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))&&(day<0||day>31))

{   printf("该月不存在输入的天数,请重新输入\n");

flag = 1;

}

else if(((month==4)||(month==6)||(month==9||11))&&(day<0||day>30))

{   printf("该月不存在输入的天数,请重新输入\n");

flag = 1;

}

else if(month==2)

{

if(((year%4==0&&year%100!=0)||year%400==0)&&(day<0||day>29))

{

printf("该月不存在输入的天数,请重新输入\n");

flag = 1;

}

else if(day<0||day>28)

{

printf("该月不存在输入的天数,请重新输入\n");

flag = 1;

}

}

}while(flag == 1);

switch(month)

{

case 1:

sum = 0;

break;

case 2:

sum = 31;

break;

case 3:

sum = 31 + 28;

break;

case 4:

sum = 31 + 28 + 31;

break;

case 5:

sum = 31 + 28 + 31 + 30;

break;

case 6:

sum = 31 + 28 + 31 + 30 + 31;

break;

case 7:

sum = 31 + 28 + 31 + 30 + 31 + 30;

break;

case 8:

sum = 31 + 28 + 31 + 30 + 31 + 30 + 31;

break;

case 9:

sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;

break;

case 10:

sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;

break;

case 11:

sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;

break;

case 12:

sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;

break;

default:

printf("month is error,please check it.");

error = 1;

break;

}

if (error != 1)

{

sum += day;

if ((year % 100 == 0 && year % 400 == 0 ) || (year % 4 == 0 && year % 100 != 0))

{

leap = 1;

}

else

{

leap = 0;

}

if (leap == 1 && month > 2)

{

sum += 1;

}

printf("it is the %d day in year.",sum);

}

system("pause");

return 1;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值