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

  • 相关阅读:
    ES6深入浅出-5 新版对象-1.如何创建对象
    ES6深入浅出-4 迭代器与生成器-5.科班 V.S. 培训
    ES6深入浅出-4 迭代器与生成器-4.总结
    ES6深入浅出-4 迭代器与生成器-3.生成器 & for...of
    ES6深入浅出-4 迭代器与生成器-2.Symbol 和迭代器
    Spring cloud微服务安全实战-3-2 第一个API及注入攻击防护
    Spring cloud微服务安全实战-3-1 API安全 常见的安全机制
    Spring Cloud微服务安全实战- 2-1 环境安装
    Spring cloud微服务安全实战_汇总
    ES6深入浅出-4 迭代器与生成器-1.字面量增强
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567571.html
Copyright © 2011-2022 走看看