/*
*程序的版权和版本声明部分:
*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;
}
运行结果:
心得体会:垃圾程序,脑子一片乱。结果可能不对