3
!find smallest number
subroutine findsmall(z, i, j, small, count0, y)
implicit none
integer:: i, j, small, count0
real:: z(121), temp, y(121)

300 format(//, t1, 9(f6.2, 2x))

read(*, 300) z(1:121)

do i=1, 120, 1

 small = i

 do j=i+1, 121, 1

  if (z(small) > z(j)) then

  small = j

  end if

 end do

temp = z(i)
z(i) = z(small)
z(small) = temp

y(i) = z(i)

count0 = count0 + 1

end do

print 300, y(1:121)
print*, count0

end subroutine findsmall

这是我的子程序。它接受来自打印生成随机数的打印语句的输入数据。打印发生后,需要将输入读入数组,我的尝试发生在第 26 行,即:

read(*, 300) z(1:121)

我收到一条错误消息,显示“fortran 运行时错误:浮点读取期间的值错误”。我不明白这里出了什么问题,它之前排序的结果好坏参半。我改变了一些事情,比如将温度从整数移动到实数,以保持百分之一的数字,现在到处都是 fubar,fubar。

4

1 回答 1

1

正如 MSB 所说,很可能是您的格式导致了问题,特别是浮点格式规范。该错误消息暗示您的数据条目之一与指定的格式(1234.56 形式的浮点数)不匹配。尝试删除 f6.2 或使用列表导向读取(假设条目由空格分隔)。

有关格式规范的严格性的更多详细信息,请参阅FORTRAN READ()

于 2014-07-10T17:39:16.360 回答