第十七周 项目五--玩日期时间

来源:互联网 发布:sql server 错误53 编辑:程序博客网 时间:2024/04/28 13:24

问题及代码:

/* *Copyright (C) 2014,烟台大学计算机学院 *All rights reserved. *文件名称 :mian.cpp *作    者 :吴胜男 *完成日期 :2014年12月23日 *版 本 号 :v1.0 * *问题描述 :定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能             提示:将各个功能分别设计成函数实现,在main函数中调用,进行测试。可以设计一个函数,即刻进行测试,以降低复杂度。             要实现的功能是:            (1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;            (2)输出该日在本年中是第几天(注意闰年问题);            (3)输出这是这一天中的第几秒;            (4)输出这是这一年中的第几秒;(不要认为这个数荒唐,在计算中需要取随机数时需要一个不会重复的“种子数”,这个秒数是常用的。)            (5)求你输入的时间d天后是哪年哪月哪日,将结果保存在一个结构体变量中输出;(你的万天日期靠这个功能了)——插讲一个故事。当年老贺由小孩儿过百日,想到自己的万日在哪天。编程计算,结果刚过了十几天,那个懊恼啊。第二个万日得再等26年多(现在离第二个万日靠近了),第三个万日,谁敢说一定能过上?20岁左右的你,要算清楚了。在第(1)问中输入你的生日及时辰,d值取为10000,可以算出你的万日,大概在26岁多。            (6)求你输入的时间s秒后是何日何时,将结果保存在一个结构体变量中输出;            (7)用结构体变量给定两个时间,求相差多少天?相差多少秒?*输入描述 :年,月,日,时,分,秒,要加的天数,要加的秒数*程序输出 :按要求输出*/#include <iostream>using namespace std;struct time1{    int year;    int month;    int day;    int hour;    int minite;    int second;};struct time2{    int year;    int month;    int day;};struct time3{    int day;    int hour;};time1 stu1;time2 stu2;time3 stu3;int yd(time1 stu1);void ds(time1 stu1);void ys(time1 stu1);void ymd(time2 stu2,int u);void dh(time3 stu3,int p);int sum;//sum是全局变量,在计算一年中的第几秒时用得到。int main( ){    int y,mo,d,h,mi,s,u,p;    cout<<"请输入一个时间(年、月、日、时、分、秒):"<<endl;    cin>>y>>mo>>d>>h>>mi>>s;    stu1.year=y;    stu1.month=mo;    stu1.day=d;    stu1.hour=h;    stu1.minite=mi;    stu1.second=s;    sum=yd(stu1);    cout<<"这是本年的第"<<sum<<"天"<<endl;    ds(stu1);    ys(stu1);    cout<<endl;    cout<<"请输入天数:"<<endl;    cin>>u;    ymd(stu2,u);    cout<<endl;    cout<<"请输入秒数:"<<endl;    cin>>p;    dh(stu3,p);    return 0;}int yd(time1 stu1){    int sum=stu1.day;    int i;    for(i=1; i<stu1.month; i++)    {        switch(i)        {        case 2:        {            if((stu1.year%4==0&&stu1.year%100!=0)||(stu1.year%400==0))                sum+=29;            else                sum+=28;        }        break;        case 4:        case 6:        case 9:        case 11:            sum+=30;            break;        default :            sum+=31;        }    }    return sum;}void ds(time1 stu1){    int i;    i=stu1.hour*60*60+stu1.minite*60+stu1.second;    cout<<"这是一天中的第"<<i<<"秒"<<endl;}void ys(time1 stu1){    int i;    i=(sum-1)*24*60*60+stu1.hour*60*60+stu1.minite*60+stu1.second;    cout<<"这是本年的第"<<i<<"秒"<<endl;}void ymd(time2 stu2,int u){    int m,t,h,n;    if(stu1.month==1||stu1.month==3||stu1.month==7||stu1.month==8||stu1.month==10||stu1.month==12)    {        m=stu1.day+u;        if(m>31)        {            n=m/31;            t=n+stu1.month;            if(t>=12)            {                h=t/12;                stu2.year=stu1.year+h;                stu2.month=t%12;                stu2.day=m%31;            }            else            {                stu2.year=stu1.year;                stu2.month=t;                stu2.day=m%31;            }        }        else        {            stu2.year=stu1.year;            stu2.month=stu1.month;            stu2.day=stu1.day+u;        }    }    else if(stu1.month==4||stu1.month==6||stu1.month==9||stu1.month==11)    {        m=stu1.day+u;        if(m>30)        {            n=m/30;            t=n+stu1.month;            if(t>=12)            {                h=t/12;                stu2.year=stu1.year+h;                stu2.month=t%12;                stu2.day=m%30;            }            else            {                stu2.year=stu1.year;                stu2.month=t;                stu2.day=m%30;            }        }        else        {            stu2.year=stu1.year;            stu2.month=stu1.month;            stu2.day=stu1.day+u;        }    }    else    {        m=stu1.day+u;        if((stu1.year%4==0&&stu1.year%100!=0)||(stu1.year%400==0))        {            if(m>29)            {                n=m/29;                t=n+stu1.month;                if(t>=12)                {                    h=t/12;                    stu2.year=stu1.year+h;                    stu2.month=t%12;                    stu2.day=m%29;                }                else                {                    stu2.year=stu1.year;                    stu2.month=t;                    stu2.day=m%29;                }            }            else            {                stu2.year=stu1.year;                stu2.month=stu1.month;                stu2.day=stu1.day+u;            }        }        else        {            if(m>28)            {                n=m/28;                t=n+stu1.month;                if(t>=12)                {                    h=t/12;                    stu2.year=stu1.year+h;                    stu2.month=t%12;                    stu2.day=m%28;                }                else                {                    stu2.year=stu1.year;                    stu2.month=t;                    stu2.day=m%28;                }            }            else            {                stu2.year=stu1.year;                stu2.month=stu1.month;                stu2.day=stu1.day+u;            }        }    }    cout<<u<<"天后是"<<stu2.year<<"年"<<stu2.month<<"月"<<stu2.day<<"日"<<endl;}void dh(time3 stu3,int p){    int m,t,n;    if((p+stu1.second)>60)    {        m=(p+stu1.second)/60;        m=m+stu1.minite;        if(m>=60)        {            n=m/60;            n=n+stu1.hour;            if(n>24)            {                t=n/24;                stu3.day=stu1.day+t;                stu3.hour=n%24;            }            else            {                stu3.day=stu1.day;                stu3.hour=n;            }        }        else        {            stu3.day=stu1.day;            stu3.hour=stu1.hour;        }    }    else    {        stu3.day=stu1.day;        stu3.hour=stu1.hour;    }    cout<<p<<"秒后是"<<stu3.day<<"日"<<stu3.hour<<"时"<<endl;}

运行结果:

知识点总结:多种函数的定义,以及结构体,我不会返回结构体的值,所以在自定义函数中直接输出。

学习心得:这个程序我编了一下午,虽然编出来了但是运行错误,真的感觉好累,特别难过,也许自己就是抗打击能力特别差。不想发牢骚,可是不发牢骚,老觉得心里不平衡,到最后还是得复制粘贴别人的,唉~~~

0 0