作者afe812 (薛丁格的猫)
看板Fortran
标题[问题] if用法
时间Thu May 12 23:58:29 2016
在练习写一元二次方程式,参考网路别人的写法的程式码如下:
real a, b, c, det
complex r1, r2
1 write (*, "(/'请输入方程式 ax^2+bx+c=0 的 a, b, c 值: ', $)")
read (*, *) a, b, c
if (a == 0.) then
print *, 'a 不可为 0'
go to 1
end if
det = b**2 - 4.*a*c
if (det) 3, 5, 7
3 r1 = cmplx(-b/(2.*a), sqrt(-det)/(2.*a))
r2 = cmplx(-b/(2.*a), -sqrt(-det)/(2.*a))
print *, '无实数根, 有 2 个复数根:', r1, r2
go to 1
5 print *, '有 1 个实数根:', -b/(2.*a)
go to 1
7 print *, '有 2 个实数根:', (-b+sqrt(det))/(2.*a), (-b-sqrt(det))/(2.*a)
go to 1
end
来源:
https://tw.answers.yahoo.com/question/index?qid=20091226000015KK08689
想请问他的if 怎麽判断式只有一个变数,後面接3 5 7就可以
他怎麽知道det<0要去3,det==要去5,det>0要去7
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.121.208.62
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1463068715.A.516.html
1F:→ kerwinhui: arithmetic if,现在很少人用了 05/13 10:41
2F:→ kerwinhui: 最原始版fortran只有这种if,但有了logical if以後大家 05/13 10:44
3F:→ kerwinhui: 都比较常用好读又好写的logical if,Fortran90已经把 05/13 10:45
4F:→ kerwinhui: arithmetic if列为obsolescent了,留着只是为了和F77相 05/13 10:47
5F:→ kerwinhui: 容 05/13 10:47
6F:推 rex0707: 长知识推 05/13 12:30
7F:→ afe812: 谢谢 05/16 18:07