输入某年某月,判断这一天是这一年的第几天。

这个题有一个难点,首先是要判断是不是闰年,然后再判断2月份有没有29号。

代码如下。

​
#include <stdio.h>
int main()
{
    int y,m,d,e,sum=0;//分别为年,月,日,总天数
    printf("\n请输入年月日,格式为:年 月 日。\n");
    scanf("%d%d%d",&y,&m,&d);
	if(y%4==0&&(y%100!=0||y%400==0))// 判断是不是闰年
		e=1;
		else
		e=0;
   switch(m)
    {
        case 1:if(d>0&&d<=31)sum=0;
            else 
            {printf("输入错误,请重新输入日期(1月在1-31日之间)\n");
            return 0;}
            break;
        case 2:if(d>0&&d<=29&&e==1)//2月份分闰年和非闰年
			sum=31;
			if(d>0&&d<=29&&e==0)
			sum=31;
			if((d<=0||d>=29)&&e==0)
			{printf("输入错误,非闰年2月日期为1-28\n");
			return 0;}
			if((d<=0||d>=30)&&e==1)
			{printf("输入错误,闰年2月日期为1-29\n");
			return 0;}
			break;	
        case 3:if(d>0&&d<=31)sum=31+29;
            else
            {printf("输入错误,请重新输入日期(3月在1-31日之间)\n");
            return 0;}
            break;
        case 4:if(d>0&&d<=30)sum=31+29+31;
            else 
            {printf("输入错误,请重新输入日期(4月在1-30日之间)\n");
            return 0;}
            break;
        case 5:if(d>0&&d<=31)sum=31+29+31+30;
            else 
            {printf("输入错误,请重新输入日期(5月在1-31日之间)\n");
            return 0;}
            break;
        case 6:if(d>0&&d<=30)sum=31+29+31+30+31;
            else 
            {printf("输入错误,请重新输入日期(6月在1-30日之间)\n");
            return 0;}
            break;
        case 7:if(d>0&&d<=31)sum=31+29+31+30+31+30;
            else 
            {printf("输入错误,请重新输入日期(7月在1-31日之间)\n");
            return 0;}
            break;
        case 8:if(d>0&&d<=31)sum=31+29+31+30+31+30+31;
            else 
            {printf("输入错误,请重新输入日期(8月在1-31日之间)\n");
            return 0;}
            break;
        case 9:if(d>0&&d<=30)sum=31+29+31+30+31+30+31+31;
            else 
            {printf("输入错误,请重新输入日期(9月在1-30日之间)\n");
            return 0;}
            break;
        case 10:if(d>0&&d<=31)sum=31+29+31+30+31+30+31+31+30;
            else 
            {printf("输入错误,请重新输入日期(10月在1-31日之间)\n");
            return 0;}
            break;
        case 11:if(d>0&&d<=30)sum=31+29+31+30+31+30+31+31+30+31;
            else 
            {printf("输入错误,请重新输入日期(11月在1-30日之间)\n");
            return 0;}
            break;
        case 12:if(d>0&&d<=31)sum=31+29+31+30+31+30+31+31+30+31+30;
            else 
            {printf("输入错误,请重新输入日期(12月在1-31日之间)\n");
            return 0;}
            break;
        default:
        printf("输入错误,请重新输入月份(在1-12月之间)\n");return 0;
    }
    if(y%4==0&&(y%100!=0||y%400==0))// 判断是不是闰年
		e=1;
		else
		e=0;
	if(e==1)
		sum=sum+d;	
	else
	{
		if(m<=2)
			sum=sum+d;
		else
			sum=sum+d-1;
	}	
    printf("这是这一年的第 %d 天。\n",sum);
}

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值