第十七周实验报告(三)

来源:互联网 发布:js电机 编辑:程序博客网 时间:2024/05/21 01:42

第十七周实验报告(三)

(2011-12-18 21:18:27)[编辑][删除]
转载
标签:

杂谈

分类: 公共博文

实验目的;时间结构体
实验内容:简单的处理日期

* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c)
* All rights reserved.
* 文件名称:
* 作 者: 李君凯
* 完成日期: 2011 年 12 月 18 日
* 版本号: V 1.0
* 对任务及求解方法的描述部分
* 输入描述:用动态链表处理日期问题
* 问题描述及输出:

*下面的程序可以在一个 main 函数中完成,也可以用函数求解,main 函数调用即可。
*定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能:
*(1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;
*(2)输出该日在本年中是第几天(注意闰年问题);
*(3)输出这是这一天中的第几秒;
*(4)输出这是这一年中的第几秒;(不要认为这个数荒唐,在计算中中需要取随机数时需要
*一个不会重复的“种子数”,这个秒数是常用的。)
*(5)求你输入的时间d 天后是哪年哪月哪日,将结果保存在一个结构体变量中输出;(你的
*万天日期靠这个功能了)
*(6)求你输入的时间s 秒后是何日何时,将结果保存在一个结构体变量中输出;

* 程序头部的注释结束(此处也删除了斜杠)

程序源:

#include <iostream>
using namespace std;
//定义Data结构体;
struct Data
{
int year;
int month;
int day;
int hours;
int minute;
int second;
};
void cin_data();//声明cin_data
bool judge_year(int year);//声明及judge_year
void cout_sth();//声明输出函数
void retreat_day(int day1,int select);
void retreat_second();
Data my_data;
int store_day;
int main()
{
int day1;
cin_data();
cout_sth();
cout<<"请输入后退的天数:"<<endl;
cin>>day1;
retreat_day(day1,1);
retreat_second();
system("PAUSE");
return 0;
}
//定义输入数据cin_data函数
void cin_data()
{
int num;

do{
cout<<"请输入您的出生年份:"<<endl;
cin>>num;
my_data.year=num;
}while(num>2000||num<1900);

do{
cout<<"请输入您的出生月份:"<<endl;
cin>>num;
my_data.month=num;
}while(num<1||num>12);

do{
cout<<"请输入您的出生日期:"<<endl;
cin>>num;
my_data.day=num;
}while(num<1||num>31);

do{
cout<<"请输入您的出生时:"<<endl;
cin>>num;
my_data.hours=num;
}while(num<0||num>24);

do{
cout<<"请输入您的出生分:"<<endl;
cin>>num;
my_data.minute=num;
}while(num<0||num>60);

do{
cout<<"请输入您的出生秒:"<<endl;
cin>>num;
my_data.second=num;
}while(num<0||num>60);

}
//定义判断闰年的函数
bool judge_year(int year)
{
bool leap;

if(year%4==0)
{
if(year0==0)
{
if(year@0==0)
leap=true;
else
leap=false;
}
else
leap=true;
}
else
leap=false;
return leap;
}
//定义输出函数
void cout_sth()
{
int day=0,month=1;
while(month<my_data.month){
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
day=day+31;
month++;
continue;
}
if(month==4||month==6||month==9||month==11)
{
day=day+30;
month++;
continue;
}
if(month==2)
{
if(judge_year(my_data.year))
day=day+29;
else
day=day+28;
month++;
continue;
}
}
day=day+my_data.day;
store_day=day;
cout<<"该日在本年中是第"<<day<<"天。"<<endl;
int second=0;
second=(my_data.hours*60+my_data.minute)*60+my_data.second;
cout<<"这是这一天中的第"<<second<<"秒。"<<endl;
second=second+(day-1)*24*60*60;
cout<<"这是这一年中的第"<<second<<"秒。"<<endl;
}
//定义void retreat_day()函数;
void retreat_day(int day1,int select)
{
int day,month;
bool pass;
Data store;

store=my_data;

day=store_day+day1;
do{
pass=false;
if(judge_year(store.year))
{
if(day-366>0)
{
pass=true;
store.year+=1;
day-=366;
}
}
else
{
if(day-365>0)
{
pass=true;
store.year+=1;
day-=365;
}
}
}while(pass);
if(day==0)day=1;
month=1;
do{
pass=false;
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day-31>0)
{
pass=true;
day-=31;
month++;
}
if((month==4||month==6||month==9||month==11)&&day-30>=0)
{
pass=true;
day-=30;
month++;
}
if(month==2)
{
if(judge_year(store.year))
{
if(day-29>0)
{
pass=true;
day-=29;
month++;
}
}
else
{
if(day-28>=0)
{
pass=true;
day-=28;
month++;
}
}

}
}while(pass);
store.month=month;
if(select==1)
{
cout<<"过"<<day1<<"天后是"<<store.year<<"年"<<store.month<<"月"<<day<<"日。"<<endl;
}
else
{
cout<<"过"<<select<<"秒后是"<<store.year<<"年"<<store.month<<"月"<<day<<"日"<<endl;
}

}
//定义retreat_second();
void retreat_second()
{
Data store;
int day,second;
cout<<"请输入后退的秒数:"<<endl;
cin>>second;
day=second/(24*3600);
retreat_day(day,second);
second=second%(24*3600);
store.hours=second/3600;
second=second600;
store.minute=second/60;
second=second`;
cout<<store.hours<<"时"<<store.minute<<"分"<<second<<"秒。"<<endl;
}

运行结果:



《第十七周实验报告》报告3.

经验积累 :要注意结构体的应用,步步紧扣。

上机感言:太难了,让童鞋讲了 好几遍,还是似懂非懂。

0

原创粉丝点击