|
本帖最后由 wxy 于 2017-2-3 21:17 编辑
第二张图是代码运行结果和手动运算的对比,发现第一个年份和从第一个闰年开始每四年会出现一次运算错误,不知道哪出了问题。图一是codeblocks的watch窗口,请问它的作用是不是监视调试时的参数变化,然后就是在我的代码中k=1,30 这里面k=-2是不是说明有问题,第一次做单步调试,还不太会[Fortran] 纯文本查看 复制代码 04 | Real :: tmax , tmin , total , average |
08 | Integer Function daysinyear ( year , mon , day ) |
09 | Integer :: year , mon , day |
10 | Integer :: daysinmonth ( 12 ) = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] |
11 | If ( ( ( mod ( year , 4 ) == 0 ) .And. ( mod ( year , 100 ) /= 0 ) ) .Or. ( mod ( year , 400 ) == 0 ) ) Then |
16 | daysinyear = sum ( daysinmonth ( : mon -1 ) ) + day |
17 | End Function daysinyear |
23 | Type ( tdd ) , Allocatable :: t ( : ) |
25 | Integer i , m , dy , start , end , year , mon , day , daysinyear , k |
26 | Character ( Len = 20 ) :: line , filename = 'CN174653 (12)' |
28 | Open ( 8 , File = 'result.txt' ) |
36 | Print * , daysinyear ( year , mon , day ) |
37 | start = daysinyear ( year , mon , day ) |
45 | Print * , daysinyear ( year , mon , day ) |
46 | end = daysinyear ( year , mon , day ) |
53 | Write ( filename ( 11 : 12 ) , '(i2)' ) k |
54 | Open ( 7 , File = filename ) |
58 | Read ( 7 , * , End = 100 ) line |
68 | Read ( 7 , * ) dy , t ( i ) % tmax , t ( i ) % tmin , rain |
69 | t ( i ) % average = ( t ( i ) % tmax + t ( i ) % tmin ) / 2 |
75 | total % average = total % average + t ( i ) % average |
77 | Write ( 8 , * ) year , total % average |
|
|