第二周项目4-玩时间

/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2014 年 3月 4 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: 时间
*问题描述:定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能。
         要实现的功能是:

  (1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;

  (2)输出该日在本年中是第几天(注意闰年问题);

  (3)输出这是这一天中的第几秒;

  (4)输出这是这一年中的第几秒;(不要认为这个数荒唐,在计算中需要取随机数时需要一个不会重复的“种子数”,这个秒数是常用的。)

  (5)求你输入的时间d天后是哪年哪月哪日,将结果保存在一个结构体变量中输出;(你的万天日期靠这个功能了)——插讲一个故事。当年老贺由小孩儿过百日,想到自己的万日在哪天。编程计算,结果刚过了十几天,那个懊恼啊。第二个万日得再等26年多,第三个万日,谁敢说一定能过上?20岁左右的你,要算清楚了。在第(1)问中输入你的生日及时辰,d值取为10000,可以算出你的万日,大概在26岁多。

  (6)求你输入的时间s秒后是何日何时,将结果保存在一个结构体变量中输出;
*程序输出:学生成绩
*问题分析:
*算法设计:
*/
#include<iostream>
#include<cstdlib>
using namespace std;
struct T
{
    int year;
    int month;
    int day;
    int hour;
    int minute;
    int second;
};
int tians(int);
int main()
{
    T time;
    int yue[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31},days,i,miao,tian,sum;
    int xy,days2,tian1,sun=0,months,tiand,sun1,tian2;
    long ymiao;
    cout<<"请输入年、月、日、时、分、秒:"<<endl;
    cin>>time.year>>time.month>>time.day>>time.hour>>time.minute>>time.second;
    days=time.day;
    for(i=1; i<time.month; i++)
    {
        days+=yue[i];
    }
    if((time.month>2)&&((time.year%4==0&&time.year%100!=0)||time.year%400==0))
    {
        days++;
    }
    cout<<time.month<<"   月   "<<" "<<time.day<<"   日是   "<<time.year<<"  年的第  "<<days<<"  天。"<<endl;
    miao=time.hour*3600+time.minute*60+time.second;
    cout<<time.hour<<" 时 "<<time.minute<<" 分 "<<time.second<<" 秒是本天的第 "<<miao<<" 秒, ";
    if(days>1)
    {
        ymiao=days*86400+miao;
    }
    else
    {
        ymiao=miao;
    }
    cout<<" 是本年的第 "<<ymiao<<" 秒。"<<endl;
    cout<<"请输入一个天数,将计算出这个天数后的日期:"<<endl;
    cin>>tian;
    tian1=tian;
    days+=tians(time.year);//这天到1900 1 1的天数
    tian+=days;//代表从这年1月1日起
    sum=0;
    for(int j=time.year;j<2200;j++)
    {
        sum+=365;
        if((j%4==0&&j%100!=0)||(j%400==0))
        {
            sum++;
        }
        if(sum>=tian1)
        {
            xy=j;
            break;
        }
    }
    //cout<<xy<<" ";
    days2=tians(xy);
    days=days2-days;
    tian2=tian1;
    tian1-=days;
    for(int z=1;z<13;z++)
    {
        sun+=yue[z];
        if((xy%4==0&&xy%100!=0)||(xy%400==0)&&z>2)
        {
            sun++;
        }
        if(sun>=tian1)
        {
            months=z;
            for(int t=1;t<z;t++)
            {
                sun1+=yue[z];
                tiand=sun-sun1;
            }
            break;
        }
    }
    cout<<tian2<<"天后是"<<xy<<"年"<<months<<"月"<<tiand<<"日"<<endl;
    return 0;
}
int tians(int year)
{
    int i,tian=0;
    for(i=1900;i<year;i++)
    {
        tian+=365;
        if((year%4==0&&year%100!=0)||(year%400==0))
        {
            tian++;
        }
    }
    return tian;
}

运行结果:

心得体会:垃圾程序,脑子一片乱。结果可能不对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值