zoukankan      html  css  js  c++  java
  • 第十六周项目4

    定义一个结构体变量(包括年、月、日),输入两个人的生日,求出他们相差多少天。

    /*
    * Copyright (c) 2014,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:demo.cpp
    * 完成时间:2014年12月17日
    * 版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    struct Date
    {
        int year;
        int month;
        int day;
    };
    bool year(int y);
    int main()
    {
        int day(int y, int m, int d);
        Date date;
        int days_1,days_2,days;
        int n,allday1,allday2;
        cout<<"请输入第一个人的 year,month,day:";
        cin>>date.year>>date.month>>date.day;
        allday1=day(date.year, date.month, date.day);
        cout<<"请输入第二个人的 year,month,day:";
        cin>>date.year>>date.month>>date.day;
        allday2=day(date.year, date.month, date.day);
        days=allday1-allday2;
        if (days<0)
            days=-days;
        cout<<"他们相差"<<days<<"天。";
        return 0;
    }
    int day(int y, int m, int d)
    {
        int sum;
        int i=1,alldays=0;
        while (i<=y)
        {
            if (year(i))
                alldays+=366;
            else
                alldays+=365;
            i++;
        }
        switch (m)
        {
        case 1:
            sum = d;
            break;
        case 2:
            sum = d + 31;
            break;
        case 3:
            sum =  d + 59;
            break;
        case 4:
            sum =  d + 90;
            break;
        case 5:
            sum = d + 120;
            break;
        case 6:
            sum =  d + 151;
            break;
        case 7:
            sum =  d + 181;
            break;
        case 8:
            sum =  d + 212;
            break;
        case 9:
            sum =  d + 243;
            break;
        case 10:
            sum =  d + 273;
            break;
        case 11:
            sum = d + 304;
            break;
        case 12:
            sum =  d + 334;
            break;
        }
        if (year(y))
        {
            if (m>2)
                sum--;
        }
        alldays+=sum;
        return alldays;
    }
    bool year(int y)
    {
        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 100 == 0))
            return true;
        else
            return false;
    }
    运行结果:



    第一次提交时的代码有点问题,只能计算同年或者相差一年的时间差,一开始想与格林威治标准时间:1970年1月1日做对比,还是失败。后来想出来一个方法:算出他们与1年1月1日的天数再相减,虽然效率很低,但是实在是想不到更好的方法,等待解决。


    @ Mayuko

  • 相关阅读:
    JS仿FLASH特效可跳转回首页的CSS二级联动菜单
    来自Individuality纯CSS打造的笔记本样式的菜单导航
    Jquery仿Flash效果的3款滑动菜单
    简约漂亮的JS下拉风格的导航条
    还不错来自老外的Milonic DHTML/JavaScript Menu菜单导航
    摘自当当网的36类商品分类菜单
    纯CSS实现的蓝色竖向导航代码
    JS打造可折叠展开的导航菜单(Slashdot Menu)
    纯CSS打造的圆角下拉导航菜单
    Jquery仿FLASH特效超漂亮的CSS菜单
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567571.html
Copyright © 2011-2022 走看看