日出日落时间计算程序C语言Word文档格式.docx

上传人:b****1 文档编号:3650900 上传时间:2023-05-02 格式:DOCX 页数:8 大小:15.44KB
下载 相关 举报
日出日落时间计算程序C语言Word文档格式.docx_第1页
第1页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第2页
第2页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第3页
第3页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第4页
第4页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第5页
第5页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第6页
第6页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第7页
第7页 / 共8页
日出日落时间计算程序C语言Word文档格式.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

日出日落时间计算程序C语言Word文档格式.docx

《日出日落时间计算程序C语言Word文档格式.docx》由会员分享,可在线阅读,更多相关《日出日落时间计算程序C语言Word文档格式.docx(8页珍藏版)》请在冰点文库上搜索。

日出日落时间计算程序C语言Word文档格式.docx

cout<

<

"

Enterthedate(form:

20090310):

endl;

for(i=0;

i<

3;

i++){

cin>

>

c[i];

}

//输入日期

voidinput_glat(intc[]){

Enterthedegreeoflatitude(range:

-60°

form:

404040(means40°

40′40″)):

//输入纬度

voidinput_glong(intc[]){

Enterthedegreeoflongitude(westisnegativ,form:

//输入经度

intleap_year(intyear){

if(((year%400==0)||(year%100!

=0)&

&

(year%4==0)))return1;

elsereturn0;

//判断是否为闰年:

若为闰年,返回1;

若非闰年,返回0

intdays(intyear,intmonth,intdate){

inti,a=0;

for(i=2000;

year;

if(leap_year(i))a=a+366;

elsea=a+365;

if(leap_year(year)){

month-1;

a=a+days_of_month_2[i];

else{

a=a+days_of_month_1[i];

a=a+date;

returna;

//求从格林威治时间公元2000年1月1日到计算日天数days

longdoublet_century(intdays,longdoubleUTo){

return((longdouble)days+UTo/360)/36525;

//求格林威治时间公元2000年1月1日到计算日的世纪数t

longdoubleL_sun(longdoublet_century){

return(280.460+36000.770*t_century);

//求太阳的平黄径

longdoubleG_sun(longdoublet_century){

return(357.528+35999.050*t_century);

//求太阳的平近点角

longdoubleecliptic_longitude(longdoubleL_sun,longdoubleG_sun){

return(L_sun+1.915*sin(G_sun*PI/180)+0.02*sin(2*G_sun*PI/180));

//求黄道经度

longdoubleearth_tilt(longdoublet_century){

return(23.4393-0.0130*t_century);

//求地球倾角

longdoublesun_deviation(longdoubleearth_tilt,longdoubleecliptic_longitude){

return(180/PI*asin(sin(PI/180*earth_tilt)*sin(PI/180*ecliptic_longitude)));

//求太阳偏差

longdoubleGHA(longdoubleUTo,longdoubleG_sun,longdoubleecliptic_longitude){

return(UTo-180-1.915*sin(G_sun*PI/180)-0.02*sin(2*G_sun*PI/180)+2.466*sin(2*ecliptic_longitude*PI/180)-0.053*sin(4*ecliptic_longitude*PI/180));

//求格林威治时间的太阳时间角GHA

longdoublee(longdoubleh,longdoubleglat,longdoublesun_deviation){

return180/PI*acos((sin(h*PI/180)-sin(glat*PI/180)*sin(sun_deviation*PI/180))/(cos(glat*PI/180)*cos(sun_deviation*PI/180)));

//求修正值e

longdoubleUT_rise(longdoubleUTo,longdoubleGHA,longdoubleglong,longdoublee){

return(UTo-(GHA+glong+e));

//求日出时间

longdoubleUT_set(longdoubleUTo,longdoubleGHA,longdoubleglong,longdoublee){

return(UTo-(GHA+glong-e));

//求日落时间

longdoubleresult_rise(longdoubleUT,longdoubleUTo,longdoubleglong,longdoubleglat,intyear,intmonth,intdate){

longdoubled;

if(UT>

=UTo)d=UT-UTo;

elsed=UTo-UT;

if(d>

=0.1){

UTo=UT;

UT=UT_rise(UTo,GHA(UTo,G_sun(t_century(days(year,month,date),UTo)),ecliptic_longitude(L_sun(t_century(days(year,month,date),UTo)),G_sun(t_century(days(year,month,date),UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year,month,date),UTo)),ecliptic_longitude(L_sun(t_century(days(year,month,date),UTo)),G_sun(t_century(days(year,month,date),UTo))))));

result_rise(UT,UTo,glong,glat,year,month,date);

returnUT;

//判断并返回结果(日出)

longdoubleresult_set(longdoubleUT,longdoubleUTo,longdoubleglong,longdoubleglat,intyear,intmonth,intdate){

=0.1){

UT=UT_set(UTo,GHA(UTo,G_sun(t_century(days(year,month,date),UTo)),ecliptic_longitude(L_sun(t_century(days(year,month,date),UTo)),G_sun(t_century(days(year,month,date),UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year,month,date),UTo)),ecliptic_longitude(L_sun(t_century(days(year,month,date),UTo)),G_sun(t_century(days(year,month,date),UTo))))));

result_set(UT,UTo,glong,glat,year,month,date);

//判断并返回结果(日落)

intZone(longdoubleglong){

if(glong>

=0)return(int)((int)(glong/15.0)+1);

elsereturn(int)((int)(glong/15.0)-1);

//求时区

voidoutput(longdoublerise,longdoubleset,longdoubleglong){

if((int)(60*(rise/15+Zone(glong)-(int)(rise/15+Zone(glong))))<

10)

Thetimeatwhichthesunrisesis"

(int)(rise/15+Zone(glong))<

:

0"

(int)(60*(rise/15+Zone(glong)-(int)(rise/15+Zone(glong))))<

.\n"

;

elsecout<

if((int)(60*(set/15+Zone(glong)-(int)(set/15+Zone(glong))))<

Thetimeatwhichthesunsetsis"

(int)(set/15+Zone(glong))<

"

(int)(60*(set/15+Zone(glong)-(int)(set/15+Zone(glong))))<

//打印结果

intmain(){

longdoubleUTo=180.0;

intyear,month,date;

longdoubleglat,glong;

intc[3];

input_date(c);

year=c[0];

month=c[1];

date=c[2];

input_glat(c);

glat=c[0]+c[1]/60+c[2]/3600;

input_glong(c);

glong=c[0]+c[1]/60+c[2]/3600;

longdoublerise,set;

rise=result_rise(UT_rise(UTo,GHA(UTo,G_sun(t_century(days(year,month,date),UTo)),ecliptic_longitude(L_sun(t_century(days(year,month,date),UTo)),G_sun(t_century(days(year,month,date),UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year,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)),ecliptic_longitude(L_sun(t_century(days(year,month,date),UTo)),G_sun(t_century(days(year,month,date),UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year,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);

output(rise,set,glong);

system("

pause"

);

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2