当前位置 博文首页 > vlonsir:C语言:输入某年某月某日,判断这一天是这一年的第几天

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

    作者:[db:作者] 时间:2021-07-30 08:58

    #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');
    }
    
    

    cs