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

题目:输入某年某月某日,判断这一天是这一年的第几天?


分析:这个程序主要问题在于月份31天和30天,以及二月份的闰年29天和平年28天问题,解决办法首先判断是平年还是闰年,确定二          月份的时间,然后用case选择语句,算出该月份以前的总天数,从三月份开始在加上2月份天数;本次设计程序也有一定局限                性, 需要输入合法时间,才能正确输出正确的结果:


#include <stdio.h> 

int main(int argc,char *argv[])
{
    int y,m,d,days,February;
    
    printf("input the year:");
    scanf("%d",&y);
    
    printf("input the mouth:");
    scanf("%d",&m);
     
    printf("input the day:");
    scanf("%d",&d);
    
    if (y%400==0||(y%4==0&&y%100!=0)) 
    
        February=29;
    
    else 
        February=28;


        switch (m) {
            case 1:
                days=0;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 2:
                days=31; 
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 3:
                days=31+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 4:
                days=62+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 5:
                days=92+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 6:
                days=123+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 7:
                days=153+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 8:
                days=184+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 9:
                days=215+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 10:
                days=245+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 11:
                days=276+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
            case 12:
                days=306+February;
                printf("%d年%d月%d日是一年中的第%d天!",y,m,d,days+d);
                break;
                
            default:
                    printf("你输入月份错误!"); 
                break;
        }
       system("PAUSE");
    return 0;
}


编译软件是用的DEV-C++需要加system("PAUSE");才能让结果暂停住,显示出来;


运行结果截图:

输入某年某月某日,判断这一天是这一年的第几天?_第1张图片


另一种 差不多方法

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。


#include <stdio.h>

int main()
{
    int day,month,year,sum,leap;
    printf("\nplease input year,month,day\n");
    scanf("%d,%d,%d",&year,&month,&day);
	printf("%d,%,d%d",year,month,day);
    switch(month)/*先计算某月以前月份的总天数*/
    {
        case 1:
			sum=0;break;
        case 2:
			sum=31;break;
        case 3:
			sum=59;break;
        case 4:
			sum=90;break;
        case 5:
			sum=120;break;
        case 6:
			sum=151;break;
        case 7:
			sum=181;break;
        case 8:
			sum=212;break;
        case 9:
			sum=243;break;
        case 10:
			sum=273;break;
        case 11:
			sum=304;break;
        case 12:
			sum=334;break;
        default:
			printf("data error");
			break;
    }
    sum=sum+day; /*再加上某天的天数*/
    if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
        leap=1;
    else
        leap=0;
    if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
        sum++;
    printf("It is the %d  day.",sum);
    

    return 0;
}

结果截图:

输入某年某月某日,判断这一天是这一年的第几天?_第2张图片





你可能感兴趣的:(System,input)