hello,好久不见,今天小编给大家分析以下问题,主要对高一计算机编程入门,紧急求解高一电脑编程~~~进行剖析,大家看完之后应该会有所吸收。
.jpg)
本文目录
紧急求解高一电脑编程~~~
闰年
闰年:1.为了弥补人为的年份规定与地球实际绕日公转的时间差,2.而人为把时间差补上了的年份,该年即为闰年.
遵循的规律为:四年一闰,百年不润,四百年再润.
if((year%400==0)|(year%4==0)&(year%100!=0))//闰年的计算方法
详情如下:
闰年(leapyear),在公历(格里历)或夏历中有闰日的年份,以及在中国旧历农历中有闰月的年份。地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropicalyear)。公历的平年只有365日,比回归年短约0.2422日,所余下的时间约为四年累计一天,于第四年加于2月,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。夏历的平年只有354日,比12个朔望月短0.3671日,为使每月初一与月朔相合,规定每30年中有11年的年底增加1日,这一年的历年有355日,即为闰年。中国旧历农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月。在加有闰月的那一年有13个月,历年长度为384或385日,这一年也称为闰年。
按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的就是平年。
也就是我们通常所说的:
四年一闰,百年不闰,四百年再闰。
西方公历的“闰年”
阳历中有闰日的年份叫闰年,相反就是平年,平年为365天,闰年为366天。在公历(格里历)纪年中,平年的二月为28天,闰年的二月为29天。闰年平月2月29日为闰日。
增加闰日的原因
现时的公历以回归年为“年”的计算基础,而一个回归年大约等于365.24220日。因为在平年公历只计算365日,结果四年后便会累积0.24220×4=0.9688日,大约等于一日,所以便逢四年增加一日闰日以抵销这0.9688日。
计算闰年的方法
公历纪年法中,能被4整除的大多是闰年,不能被100整除而能被400整除的年份是闰年,能被3200整除的也不是闰年,如1900年是平年,2000年是闰年,3200年不是闰年。
中国农历的“闰年”
中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13个月,383或384天
编程中公历闰年的简单计算方法:
设年份year
if(year能被4整除and不能被100整除)oryear能被400整除
then该年为闰年
else该年为平年
具体程序代码:
#主模块:
;月历打印
;主程序设置好入口参数,BX=年份,DL=月份
;调用子程序display
;Bywangrui
;2006-12-8
extrndisplay:far
Esccodeequ01h
Upequ048h
Downequ050h
Leftequ04bh
Rightequ04dh
dsegsegment
Yeardw0
Monthdb0
tempdb10dup(0)
countdw?
ErrMsgdb0dh,0ah,"TheinputNOTdecimal!$"
dsegends
csegsegment
assumecs:cseg,ds:dseg
start:
movax,dseg
movds,ax
callGetYearMonth
Ws:
movbx,Year
movdl,Month
callfarptrdisplay
again:
movah,0
int16h
cmpah,Esccode
jeExit
cmpah,Up
jeNextY
cmpah,Down
jePreY
cmpah,Left
jePreM
cmpah,Right
jeNextM
jmpagain
NextY:
incYear
jmpWs
PreY:
decYear
jmpWs
NextM:
incMonth
cmpMonth,12
jbeskip0
movMonth,1
incYear
skip0:
jmpWs
PreM:
decMonth
cmpMonth,1
jaeskip1
movMonth,12
decYear
skip1:
jmpWs
Exit:
movah,4ch
int21h
;**************************************************
GetYearMonthprocnear
pushax
pushcx
pushsi
pushdi
inputagain:
movYear,0
movMonth,0
movsi,0
repeatY:
movah,1
int21h
cmpal,0dh
jeEndY
cmpal,20h
jeEndY
cmpal,1bh
jeExitDos0
cmpal,30h
jbErr
cmpal,39h
jaErr
subal,30h
movtemp[si],al
incsi
jmprepeatY
Err:
movah,9
leadx,ErrMsg
int21h
movah,2
movdl,0dh
int21h
movdl,0ah
int21h
jmpinputagain
EndY:
movbx,10
movdi,si
movsi,0
NextYBit:
movah,0
moval,temp[si]
movcount,di
subcount,si
deccount
movcx,count
jcxzskipY
lopmul:mulbx
looplopmul
skipY:addYear,ax
incsi
cmpsi,di
jneNextYBit
;----------------------------------Theyearisputinto[Year]
pushdx
movah,2
movdl,0dh
int21h
movdl,0ah
int21h
popdx
jmpskiplap
ExitDos0:
jmpExitDos
skiplap:
movsi,0
repeatM:
movah,1
int21h
cmpal,0dh
jeEndMon
cmpal,20h
jeEndMon
cmpal,1bh
jeExitDos
cmpal,30h
jbErr
cmpal,39h
jaErr
subal,30h
movtemp[si],al
incsi
jmprepeatM
EndMon:
movdi,si
movsi,0
movbl,10
NextMBit:
moval,temp[si]
movcount,di
subcount,si
deccount
movcx,count
jcxzskipM
lpmul:mulbl
looplpmul
skipM:addMonth,al
incsi
cmpsi,di
jneNextMBit
;-------------------------TheMonthisputinto[Month]
pushdx
movah,2
movdl,0dh
int21h
movdl,0ah
int21h
popdx
popdi
popsi
popcx
popax
ret
ExitDos:
movah,4ch
int21h
GetYearMonthendp
csegends
endstart
#打印模块:
;***********************************
;入口参数:bx=Yeardl=Month
;***********************************
publicdisplay
datasegment
Yeardw?
Monthdb?
leapdb?
weekstrdb"MONTURWENTHUFRISATSUN",’$’
fillblankdb"$"
fillblank4db"$"
fillblank3db"$"
cdb?
ydb?
firstdaydb?
tempdb?
MonthSizedb?
dataends
csegsegment
assumecs:cseg,ds:data
displayprocfar
pushds
movax,data
movds,ax
movYear,bx
movMonth,dl
movdx,0
xorbh,bh
movah,2
int10h
movah,6
moval,0
movbh,01110000b
movch,0
movcl,0
movdh,24
movdl,79
int10h
movah,6
moval,0
movbh,01110100b
movch,0
movcl,25
movdh,24
movdl,79
int10h
callfarptrdispYM
leadx,weekstr
movah,9
int21h
movah,2
movdl,0dh
int21h
movdl,0ah
int21h
callGetMonthSize;把当前月份的天数放到MonthSize
cmpMonth,2
jaskip
addMonth,12
decYear
skip:
movbl,100
movax,Year
divbl
movc,al
movy,ah
movcl,2
movbl,c
shrbl,cl;int(c/4)
shlc,1;2*c
subbl,c
addbl,y
shry,cl;int(y/4)
addbl,y;int(c/4)-2*c+y+int(y/4)--->bl
incMonth
xorah,ah
moval,Month
movdx,13
muldx
movcx,5
divcx
xchgax,bx
cbw
xchgax,bx
addbx,ax;int(c/4)-2*c+y+int(y/4)+int(13*(m+1)/5)
movax,bx
movcl,7
idivcl
cmpah,0
jGskipAdd
addah,7
skipAdd:
movbl,ah
movfirstday,bl
;--------------------------------计算出当前月份的第一天是星期几
movcl,bl
movch,0
deccl
jcxzskipF
FillB:movah,9
leadx,fillblank
int21h
loopFillB
skipF:
movcl,1
disLop:calldispWeek;日期已经放入cl
inccl
incbl
cmpbl,8
jbskipModle
movbl,1
movah,2
movdl,0dh
int21h
movdl,0ah
int21h
skipModle:
cmpcl,MonthSize
jbedislop
movah,2
movdl,0dh
int21h
movdl,0ah
int21h
popds
ret
displayendp
;******************************************************************
GetMonthSizeprocnear
pushax
pushdx
movleap,0
movax,Year
movch,00000011b
andch,al
movbl,100
divbl
movcl,ah
cmpch,0
jneskipNLeap
cmpcl,0
jneskipLeap
movax,Year
movbx,400
movdx,0
divbx
cmpdl,0
jeskipLeap
skipNLeap:
jmpgmsize
skipLeap:
incleap
gmsize:
moval,Month
cmpal,2
jereturn2
cmpal,8
jbskipInc
incal
skipInc:
testal,1
jzreturnEven
movMonthSize,31
jmpreturn
returnEven:
movMonthSize,30
jmpreturn
return2:
movMonthSize,28
cmpleap,0
jereturn
incMonthSize
return:
popdx
popbx
ret
GetMonthSizeendp
;*****************************************************************
dispWeekprocnear
pushcx
pushbx
pushax
pushdx
cmpcl,10
jaeDoubleDig
leadx,fillblank4
movah,9
int21h
movdl,cl
adddl,30h
movah,2
int21h
jmpback
DoubleDig:
movch,10
movah,0
moval,cl
divch
movcx,ax
movah,9
leadx,fillblank3
int21h
movdl,cl
adddl,30h
movah,2
int21h
movdl,ch
adddl,30h
int21h
back:
popdx
popax
popbx
popcx
ret
dispWeekendp
;*********************************************************
dispYMprocfar
pushbx
pushdx
movax,year
movdh,10
xorsi,si
next:divdh
movcl,ah
movch,0
incsi
pushcx
movah,0
cmpax,0
jnenext
movcx,si
repeat:popdx
movah,2
adddl,30h
int21h
looprepeat
movdl,0dh
movah,2
int21h
movdl,0ah
movah,2
int21h
moval,Month
movah,0
movbl,10
divbl
movcx,ax
movdl,cl
movah,2
adddl,30h
int21h
movdl,ch
adddl,30h
int21h
movdl,0dh
movah,2
int21h
movdl,0ah
movah,2
int21h
popdx
popbx
ret
dispYMendp
;****************************************************
csegends
end
高一学编程会不会太晚
不晚,甚至还早了。
一般来说,如果不是有志于计算机行业或者软件行业的,对编程语言浅尝辄止即可。
过早学习的话,不会对你当前有什么帮助,还很容易拖累你现在的学习进度。
若你有志于软件开发或者计算机从属行业,早点学编程是可以的,可以先从C语言学起。
之后再考虑Python还是Java,C#或者别的。
但说真的,程序员是真的不好混。。年纪轻轻秃了头的比比皆是,你需要谨慎考虑才是。
我想学编程,请问该怎么入门
学编程入门建议:
1.学编程要从根本出发,从理论上来说,需要广泛的阅读。了解算法的博大精深和计算机的基本理论。
2.从实践上来说,需要有广泛的练习,练习的广泛在于练习不同的内容。然后就是创新精神和数学思维能力,这些都是需要培养的。基础要打好学编程要具备一定的基础。
3.逻辑思维能力的培养、学程序设计要有一定的逻辑思维能力。“思维能力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。
对于高一计算机编程入门,紧急求解高一电脑编程~~~的讲解希望对大家有所收获,小编有点事先行告退。
发表评论 取消回复