回 帖 发 新 帖 刷新版面

主题:这个 SQRT 命令为什么用不了?谢谢帮助!

最近编了两个求平方根的FORTRAN小程序,都有错误。谁能帮我查查。
第一个程序:
    a=1/2
    b=sqrt(a)
    write(*,*) b
    end
     这个程序虽然可以运行,但结果竟然是零,不知道为什么。

第二个程序:
   common b(16)
   do i=1,16
   b(i)=sqrt(i)
   write(*,*) b(i)
   end do
   end
  这个程序编译时出错:
 Warning: This argument's data type is incompatible with this intrinsic procedure;  procedure assumed EXTERNAL.   [I]
   b(i)=sqrt(i)
-------------^
 1.obj - 0 error(s), 1 warning(s)

  请求大家帮忙看看,谢谢!

回复列表 (共5个回复)

沙发

楼主, 你了解sqrt()的含义吗? 你知道他里面应该是一个什么数?

还有这个
a=1/2
这个时候a的结果是什么? 如果不知道可以翻翻旧帖或者自己print出来.

板凳

菜鸟嘛?难免有这样的问题。

3 楼

我不是看不起菜鸟. 只是觉得他不明白那个函数怎么用先自己查一下会深刻很多, 同时也学会对这种错误怎么排查. 要不然下次遇到求对数之类的又上来问那就没必要了.
我很少用断点这类的debug, 我觉得write出来看看是什么数很直接. 他出错就write它出来看看.

4 楼

题目1的问题:
整型除以整型结果还是整型——这点要非常注意。
题目2的问题:
请仔细理解编译器的错误提示,SQRT只接受实型。

5 楼

另:
新程序尽量不要再用COMMON了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册