日出日落时间计算程序C语言.docx

上传人:b****5 文档编号:28648398 上传时间:2023-07-19 格式:DOCX 页数:8 大小:15.43KB
下载 相关 举报
日出日落时间计算程序C语言.docx_第1页
第1页 / 共8页
日出日落时间计算程序C语言.docx_第2页
第2页 / 共8页
日出日落时间计算程序C语言.docx_第3页
第3页 / 共8页
日出日落时间计算程序C语言.docx_第4页
第4页 / 共8页
日出日落时间计算程序C语言.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

日出日落时间计算程序C语言.docx

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

日出日落时间计算程序C语言.docx

日出日落时间计算程序C语言

日出日落时间计算程序(C语言)

//日出日落时间计算C语言程序

#definePI3.1415926

#include

#include

usingnamespacestd;

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,31,30,31,30,31};

longdoubleh=-0.833;

//定义全局变量

voidinput_date(intc[]){

inti;

cout<<"Enterthedate(form:

20090310):

"<

for(i=0;i<3;i++){

cin>>c[i];

}

}

//输入日期

voidinput_glat(intc[]){

inti;

cout<<"Enterthedegreeoflatitude(range:

0°-60°,form:

404040(means40°40′40″)):

"<

for(i=0;i<3;i++){

cin>>c[i];

}

}

//输入纬度

voidinput_glong(intc[]){

inti;

cout<<"Enterthedegreeoflongitude(westisnegativ,form:

404040(means40°40′40″)):

"<

for(i=0;i<3;i++){

cin>>c[i];

}

}

//输入经度

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;i

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

elsea=a+365;

}

if(leap_year(year)){

for(i=0;i

a=a+days_of_month_2[i];

}

}

else{

for(i=0;i

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){

longdoubled;

if(UT>=UTo)d=UT-UTo;

elsed=UTo-UT;

if(d>=0.1){

UTo=UT;

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);

}

returnUT;

}

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

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)

cout<<"Thetimeatwhichthesunrisesis"<<(int)(rise/15+Zone(glong))<<":

0"<<(int)(60*(rise/15+Zone(glong)-(int)(rise/15+Zone(glong))))<<".\n";

elsecout<<"Thetimeatwhichthesunrisesis"<<(int)(rise/15+Zone(glong))<<":

"<<(int)(60*(rise/15+Zone(glong)-(int)(rise/15+Zone(glong))))<<".\n";

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

cout<<"Thetimeatwhichthesunsetsis"<<(int)(set/15+Zone(glong))<<":

"<<(int)(60*(set/15+Zone(glong)-(int)(set/15+Zone(glong))))<<".\n";

elsecout<<"Thetimeatwhichthesunsetsis"<<(int)(set/15+Zone(glong))<<":

"<<(int)(60*(set/15+Zone(glong)-(int)(set/15+Zone(glong))))<<".\n";

}

//打印结果

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-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1