主题:难题,SOS
dorremon1992
[专家分:870] 发布于 2005-08-28 10:31:00
各位高手,我有一个程序
题目是:输入2个日期如:2004.2.15
2005.5.31
怎样输出,从第一个日期到第二个日期的天数[em10]
回复列表 (共10个回复)
沙发
dorremon1992 [专家分:870] 发布于 2005-08-28 15:23:00
啊啊啊啊啊啊啊啊啊啊啊啊
是不是没人会??[em10][em10][em10][em10]
板凳
zqnhlm [专家分:780] 发布于 2005-08-28 19:43:00
这题不难啊,自己动动脑筋吧
3 楼
zqnhlm [专家分:780] 发布于 2005-08-28 20:00:00
DIM rq1 AS STRING
DIM rq2 AS STRING
DIM m(1 TO 12) AS INTEGER
INPUT "qi shi ri qi ", rq1
INPUT "jie shu ri qi ", rq2
n1 = VAL(MID$(rq1, 1, 4)): y1 = VAL(MID$(rq1, 6, 2)): r1 = VAL(MID$(rq1, 9, 2))
n2 = VAL(MID$(rq2, 1, 4)): y2 = VAL(MID$(rq2, 6, 2)): r2 = VAL(MID$(rq2, 9, 2))
FOR i = 1 TO 12
READ m(i)
NEXT i
DATA 31,0,31,30,31,30,31,31,30,31,30,31
s = -1
FOR i = n1 TO n2
IF i MOD 4 = 0 AND i MOD 100 <> 0 OR i MOD 400 = 0 THEN m(2) = 29 ELSE m(2) = 28
IF i = n1 THEN a = y1 ELSE a = 1
IF i = n2 THEN b = y2 ELSE b = 12
FOR j = a TO b
IF i = n1 AND j = y1 THEN c = r1 ELSE c = 1
IF i = n2 AND j = y2 THEN d = r2 ELSE d = m(j)
FOR k = c TO d
s = s + 1
NEXT k
NEXT j
NEXT i
PRINT s
END
输入格式为先输入起始日期,如:2005/01/01,然后回车输入结束日期,如2005/01/01,年为4位,月和天都为两位,中间用符号隔开
4 楼
moz [专家分:37620] 发布于 2005-08-29 00:25:00
print Day2Number&("05-31-2005")-DayNumber&("02-15-2004")
[url=http://www.programfan.com/club/showbbs.asp?id=90247&page=2]详细程序请看“今天星期几”的第12楼程序[/url]
5 楼
dorremon1992 [专家分:870] 发布于 2005-08-29 14:53:00
谢谢各位专家!![em2]
6 楼
莹萍 [专家分:130] 发布于 2005-09-04 17:12:00
INPUT "a,b,c="; a, b, c
INPUT "x,y,z="; x, y, z
p = x - a - 1: n = 1: k = a + 1
IF p <> 0 THEN
WHILE n <= p
IF (k MOD 4 = 0 AND k MOD 100 <> 0) OR (k MOD 400 = 0) THEN
s = s + 366
ELSE
s = s + 365
END IF
n = n + 1: k = k + 1
WEND
END IF
IF b <= 2 THEN
IF (a MOD 4 = 0 AND a MOD 100 <> 0) OR (a MOD 400 = 0) THEN s = s + 1
END IF
FOR i = b TO 12
SELECT CASE i
CASE 1, 3, 5, 7, 8, 10, 12: s = s + 31
CASE 4, 6, 9, 11: s = s + 30
CASE ELSE: s = s + 28
END SELECT
NEXT i
s = s - c
IF y > 2 THEN
IF (x MOD 4 = 0 AND x MOD 100 <> 0) OR (a MOD 400 = 0) THEN s = s + 1
END IF
FOR i = 1 TO y - 1
SELECT CASE i
CASE 1, 3, 5, 7, 8, 10, 12: s = s + 31
CASE 4, 6, 9, 11: s = s + 30
CASE ELSE: s = s + 28
END SELECT
NEXT i
s = s + z
PRINT "s="; s
END
7 楼
spray [专家分:180] 发布于 2005-09-05 07:09:00
建议:请在标题中具体、明确点明主题,最好不用“小菜问题”、“跪求”、“来看看呀”、“来帮帮忙呀”、“难题,SOS”之类的模糊空泛的标题。
8 楼
jxx321 [专家分:240] 发布于 2005-09-06 21:42:00
cls
rn1=1:rn2=1
input n1,y1,r1
input n2,y2,r2
for i = n1 to n2
if i/4=int(i/4)and i/100<>int(i/100) then
zt=zt+366:if i=n2 then zt=zt-366
elseif i/400=int(i/400)and i/100=int(i/100) then
zt=zt+366:if i=n2 then zt=zt-366
else
zt=zt+365:if i=n2 then zt=zt-365
if i=n1 then
rn1=0
else
if i=n2 then
rn2=0
end if
end if
end if
next i
for i=1 to y1-1
if i=2 then if rn1=1 then zt=zt-29 else zt=zt-28
if (i+t)/2<>int((i+t)/2) then zt=zt-31 else zt=zt-30
if i=7 then t=1
next i
zt=zt-r1
t=0
for i= 1 to y2-1
if i=2 then if rn2=1 then zt=zt+29 else zt=zt+28
if (i+t)/2<>int((i+t)/2) then zt=zt+31 else zt=zt+30
if i=7 then t=1
next i
zt=zt+r2
print "jie guo shi:";zt
end
自己编的,也不知道到底对不对?还请高手指点下!!!!!!!!!!!!
[em18][em18][em18][em18][em18]
9 楼
dorremon1992 [专家分:870] 发布于 2005-09-09 18:56:00
那么,如果年份是123年或-123(公元前)年怎么办呢?
我不知道能不能让程序一个一个的读日期中的字符,然后检测到了分隔符时
就读取前面的数字,这样比楼上的完善多了。[em13]
10 楼
moz [专家分:37620] 发布于 2005-09-09 20:55:00
当然可以了,如果没有逗号的话,用val还很方便的呢
只是......公元前??????? 狂汗.......
我来回复