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

  • 相关阅读:
    命令拷屏之网络工具
    PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 LeetCode 143 重排链表
    Java实现 LeetCode 143 重排链表
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567571.html
Copyright © 2011-2022 走看看