购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 给定出生年月日及现在年月日,计算天数

1.编程说明

本节的问题,与上一节的问题类似。上一节是求指定年月日距离1990年1月1日的天数;本节是给定出生年月日及现在年月日,计算天数。本节计算也是由两部分组成,一是现在年到出生年是几年并算出这些年天数之和,二是算出现在月日距出生月日的天数——如果现在月日比出生月日大,所得天数是正的;反之,如果现在月日比出生月日小,所得天数是负的。这两部分天数之和即为所求。

2.程序清单

    /***************************************************************/
    /* 1.c 给定出生年月日及现在年月日,计算天数*/
    /***************************************************************/
    #include<stdio.h>
    void main()
    {
        int sum_day(int,int);
        int leap(int year);
        int year1,month1,day1,days1;
        int year,month,day,days,j,dayss=0;
        printf("请输入出生年月日(yyyy,mm,dd):");
        scanf("%d,%d,%d",&year1,&month1,&day1);
        printf("请输入现在年月日(yyyy,mm,dd):");
        scanf("%d,%d,%d",&year,&month,&day);
        days1=sum_day(month1,day1);
        if(leap(year1)&& month1>=3)
          days1=days1+1;
        days=sum_day(month,day);
        if(leap(year)&& month<=3)
            days=days+1;
            if(year1>year)
            printf("输入有误");
        else if(year1==year){
            printf("\n");
            printf("总天数是%d天。\n",days-days1);
            printf("总小时数是%d。\n",24*(days-days1));
            }
        else
        {
            for(j=year1+1;j<=year-1;j++){
            if(leap(j)==1)
            dayss=dayss+366;
            else
            dayss=dayss+365;
            }
            if(leap(year1)==1)
            dayss=dayss+days+366-days1;
            else
            dayss=dayss+days+365-days1;
            printf("\n");
            printf("总天数是%d天。\n",dayss);
            printf("总小时数是%d。\n",24*dayss);
        }
    }
    int sum_day(int month,int day)
    {
        int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int i;
        for(i=1;i<=month-1;i++)
           day+=day_tab[i];
        return(day);
    }
    int leap(int year)
    {
        int leap;
        leap=year%4==0 && year%100!=0||year%400==0;
        return(leap);
    }

3.程序运行

【例1.5】给定出生年月日及现在年月日,计算天数及小时数。

解:打开“给定出生年月日及现在年月日,计算天数及小时数”文件夹,双击扩展名为DSW的文件,进入Visual C++ 6.0编译环境,编译程序并执行,根据屏幕提示,输入出生年月日及现在年月日,运行结果如下:

由运行结果可见,从1947年12月4日到2016年5月19日共25004天,或600096小时。 mtyTeDcIKy5vrX7yKdE8qqBRgo7UeHtT/+IY2hHdXQAy/bRqGq9Kw7Jeje9GobLN

点击中间区域
呼出菜单
上一章
目录
下一章
×