(输入年月日,输出是这一年的第几天)c语言程序

做为一个学c语言的新手,今天学习了switch语句。当时老师说case语句后面如果不跟break;会按照顺序执行,而这种结构也有它的优点,通过今天对这个程序的编写,也对switch有了全新的认识;

/*
请分别输入年月日三个数值,计算出这是这一年的第几天?
(提示:要考虑闰年和2月的情况)
*/


#include <stdio.h>


void main()
{
int year=0,month=0,day=0,i=0,sum=0;
while(1)
{
printf("请输入年份:");
scanf("%d",&year);
printf("请输入月份:");
scanf("%d",&month);
printf("请输入日期:");
scanf("%d",&day);


i=0; //i变量是为了控制月和日的格式是否输入正确; 
switch(month) //判断每个月的日期是否输入正确; 
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day>0&&day<=31)
{
i=1;
}
break;
case 4:
case 6:
case 9:
case 11:
if(day>0&&day<=30)
{
i=1;
}
break;
case 2: //2月闰年可以输入29日; 
if((year%4==0&&year%100!=0)||year%400==0)
{
if(day>0&&day<=29)
{
i=1;
}
}
else
{
if(day>0&&day<=28)
{
i=1;
}
}
break;
default: //如果输入不是1-12月份,那么月份输入有误; 
i=0;
break; 
}
if(i) //如果i变量为1,那么输入正确,否则重新输入; 
{
break;
}
else
{
printf("请输入正确的年月日!!!\n");
}
}



i=0;
switch(month) //把每个月的日期累加; 
{
case 12:
i=i+30;
case 11:
i=i+31;
case 10:
i=i+30;
case 9:
i=i+31;
case 8:
i=i+31;
case 7:
i=i+30;
case 6:
i=i+31;
case 5:
i=i+30;
case 4:
i=i+31;
case 3:
if((year%4==0&&year%100!=0)||year%400==0)
{
i=i+29;
}
else
{
i=i+28;
}
case 2:
i=i+31;
case 1: 
;
}


sum=i+day;

printf("%d年%d月%d日是%d年的第%d天\n!",year,month,day,year,sum);


}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值