C语言:输入某年某月某日,判断这一天是这一年的第几天?

#include <stdio.h>
//输入某年某月某日,判断这一天是这一年的第几天? 
int getDaysByMonth(int m,int d,char flag)
{
	int c;
	if(flag=='r'){//闰年 
		if(m==2){//2月是29天
			return (31+d);
		}else if(m>2){
			c=0;
			m=m-1;
			for(;m>0;m--)
			{
				if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
					c+=31;
				}else if(m==2){
					c+=29;
				}else{
					c+=30;
				}
			}
			return c+d;
		}else{
			return d;
		}
	}else{//平年 
		if(m==2){//2月是28天
			return (31+d);
		}else if(m>2){
			c=0;
			m=m-1;
			for(;m>0;m--)
			{
				if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
					c+=31;
				}else if(m==2){
					c+=28;
				}else{
					c+=30;
				}
			}
			return c+d;
		}else{
			return d;
		}
	}	
}
void main()
{
	int y,m,d,count=1;
	printf("请输入年月日(例如2017-01-01):");
	scanf("%d-%d-%d",&y,&m,&d);
	while(  ((((y%4==0 && y%100!=0)||(y%400==0)) && (m==2)) && d>29) || (y%400!=0 && y%4!=0 && m==2 && d>28) ||  ((m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)&&d>31) || ((m==4 || m==6 || m==9 || m==11)&& d>30)){
		printf("请输入年月日(例如2017-01-01):");
		scanf("%d-%d-%d",&y,&m,&d);
	}
	//先判断是否为闰年
	if((y%4==0 && y%100!=0)||(y%400==0)){//闰年 
		count=getDaysByMonth(m,d,'r');
	}else{//平年 
		count=getDaysByMonth(m,d,'n');
	} 
	printf("%d-%02d-%02d是今年的第%d天\n",y,m,d,count);
	putchar('\n');
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值