版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、日出日落时间计算程序(C语言)/日出日落时间计算C语言程序#define PI 3.1415926#include<math.h>#include<iostream>using namespace std;intdays_of_month_1尸31,28,31,30,31,30,31,31,30,31,30,31;intdays_of_month_2尸31,29,31,30,31,30,31,3 1,30,31,30,31;long double h=-0.833;/定义全局变量void input_date(int c)int i;cout<<"
2、Enter the date (form: 2009 03 10):"<<endl;for(i=0;i<3;i+)cin>>ci;/输入日期void input_glat(int c口)int i;cout<<"Enterthe degree oflatitude(range: 0° - 60 ° ,form: 40 40 40(means 40 ° 40' 40):"<<endl;for(i=0;i<3;i+)cin>>ci;/输入纬度void inpu
3、t_glong(int c)int i;cout<<"Enterthe degree of10ngitude(westis negativ,form: 40 40 40(means 40 ° 40' 40):"<<endl;for(i=0;i<3;i+)cin>>ci;/输入经度(year%100!=0) &&int leap_year(int year)if(year%400=0)|(year%4=0) return 1;else return 0;/判断是否为闰年:若为闰年,返回1;若非闰年,返
4、回0int days(int year, int month, int date)int i,a=0;for(i=2000;i<year;i+)if(leap_year(i) a=a+366;else a=a+365;if(leap_year(year)for(i=0;i<month-1;i+)a=a+days_of_month_2i;else for(i=0;i<month-1;i+)a=a+days_of_month_1i;a=a+date;return a;/求从格林威治时间公元2000年1月1日到计算日天数dayslong double t_century(int d
5、ays, long double UTo)return(longdouble)days+UTo/360)/36525;/求格林威治时间公元2000年1月1日到计算 日的世纪数tlong double L_sun(long double t_century)return(280.460+36000.770*t_century);/求太阳的平黄径long double G_sun(long double t_century)return(357.528+35999.050*t_century);/求太阳的平近点角long double ecliptic_longitude(long doubleL
6、_sun,long double G_sun)return(L_sun+1.915*sin(G_sun*PI/180)+0.02*sin(2*G_sun*PI/180);/求黄道经度long double t_century)earth_tilt(longdoublereturn (23.4393-0.0130*t_century);/求地球倾角long double sun_deviation(longdoubleearth_tilt,longdoubleecliptic_longitude)return(180/PI*asin(sin(PI/180*earth_tilt)*sin(P I/
7、180*ecliptic_10ngitude);/求太阳偏差long double GHA(long double UTo, long double G_sun, long double ecliptic_longitude)return(UTo-180-1.915*sin(G_sun*PI/180)-0.02*sin (2*G_sun*PI/180)+2.466*sin(2*ecliptic_lon gitude*PI/180)-0.053*sin(4*ecliptic_10ngi tude*PI/180);/求格林威治时间的太阳时间角 GHAlong double e(long doubl
8、e h, long double glat, long double sun_deviation)return 180/PI*acos(sin(h*PI/180)-sin(glat*PI/180)*sin(sun_deviation*PI/180)/(cos(glat*P I/180)*cos(sun_deviation*PI/180);/求修正值elong double UT_rise(long double UTo, long double GHA, long double glong, long double e)return (UTo-(GHA+glong+e);/求日出时间long
9、double UT_set(long double UTo, long double GHA, long double glong, long double e)return (UTo-(GHA+glong-e);/求日落时间long double result_rise(long double UT, long double UTo, long double glong, long double glat, int year, int month, int date)long double d;if(UT>=UTo) d=UT-UTo;else d=UTo-UT;if(d>=0.
10、1) UTo=UT;UT=UT_rise(UTo,GHA(UTo,G_sun(t_century(da ys(year,month,date),UTo),ecliptic_longit ude(L_sun(t_century(days(year,month,date) ,UTo),G_sun(t_century(days(year,month,da te),UTo),glong,e(h,glat,sun_deviation( earth_tilt(t_century(days(year,month,date 工UTo),ecliptic_longitude(L_sun(t_centur y(d
11、ays(year,month,date),UTo),G_sun(t_cen tury(days(year,month,date),UTo);result_rise(UT,UTo,glong,glat,year,month, date);return UT;/判断并返回结果(日出) long double result_set(long double UT, long double UTo, long double glong, long double glat, int year, int month, int date)long double d;if(UT>=UTo) d=UT-UT
12、o;else d=UTo-UT;if(d>=0.1)UTo=UT;UT=UT_set(UTo,GHA(UTo,G_sun(t_century(day s(year,month,date),UTo),ecliptic_longitu de(L_sun(t_century(days(year,month,date), UTo),G_sun(t_century(days(year,month,dat e),UTo),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year,month,date) ,UTo),ecliptic_lon
13、gitude(L_sun(t_century (days(year,month,date),UTo),G_sun(t_cent ury(days(year,month,date),UTo);result_set(UT,UTo,glong,glat,year,month,d ate);return UT;/判断并返回结果(日落)int Zone(long double glong)if(glong>=0)return(int)(int)(glong/15.0)+1);elsereturn(int)(int)(glong/15.0)-1);/求时区void output(long doubl
14、e rise, long double set, long double glong)if(int)(60*(rise/15+Zone(glong)-(int)(ri se/15+Zone(glong)<10)cout<<"The time at which the sun risesis"<<(int)(rise/15+Zone(glong)<<":0"<<(int )(60*(rise/15+Zone(glong)-(int)(rise/15+Z one(glong)<<"
15、.n"else cout<<"The time at which the sun risesis"<<(int)(rise/15+Zone(glong)<<":"<<(int) (60*(rise/15+Zone(glong)-(int)(rise/15+Zo ne(glong)<<" .n"if(int)(60*(set/15+Zone(glong)-(int)(set /15+Zone(glong)<10)cout<<"The tim
16、e at which the sun sets is "<<(int)(set/15+Zone(glong)<<": "<<(int)(60*(set/15+Zone(glong)-(int)(set /15+Zone(glong)<<" .n"else cout<<"The time at which the sun setsis"<<(int)(set/15+Zone(glong)<<":"<<(int)(
17、 60*(set/15+Zone(glong)-(int)(set/15+Zone( glong)<<" ,n"/打印结果int main()long double UTo=180.0;int year,month,date;long double glat,glong;int c3;input_date(c);year=c0;month=c1;date=c2;input_glat(c);glat=c0+c1/60+c2/3600;input_glong(c);glong=c0+c1/60+c2/3600;long double rise,set;rise=re
18、sult_rise(UT_rise(UTo,GHA(UTo,G_su n(t_century(days(year,month,date),UTo),e cliptic_longitude(L_sun(t_century(days(ye ar,month,date),UTo),G_sun(t_century(days (year,month,date),UTo),glong,e(h,glat, sun_deviation(earth_tilt(t_century(days(y ear,month,date),UTo),ecliptic_longitude( L_sun(t_century(days(year,month,date),UTo ),G_sun(t_century(days(year,month,date), UTo),UTo,glong,glat,year,month,date) set=result_set(UT_set(UTo,GHA(UTo,G_sun(t _century(days(year,month,date),UTo),ecli ptic_longitude(L_sun(t_century(days(year, month,date),UTo),G_sun(t_century(days(ye
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025蛇年元旦晚会喜庆模板
- 水体上开采技术与典型案例分析
- 简单非线性电阻电路分析
- 护理学白血病
- PCB板设计评审点检表
- 小学音乐教学课件
- 望岳课件教学课件
- 机场助航灯光易折易碎杆 移动式玻璃钢FOD塔架
- 2023年度“双碳机场”评价报告
- 黑龙江省绥化市2024-2025学年八年级上学期12月月考物理试题(无答案)
- 新员工三级安全教育卡
- 企业成立研究所申请书
- 图说百岁人生课件
- 刘志文-悬乳剂研发与生产问题的分享与探讨
- 电子产品故障模式影响及危害性分析演示
- 常见网络安全设备简介
- 宠物疾病实验室诊断-粪便检查(宠物疾病诊疗)
- 中国少数民族传统体育智慧树知到答案章节测试2023年云南体育运动职业技术学院
- GB/T 18910.61-2021液晶显示器件第6-1部分:液晶显示器件测试方法光电参数
- GB/T 15846-2006集装箱门框密封条
- GB 17945-2000消防应急灯具
评论
0/150
提交评论