回 帖 发 新 帖 刷新版面

主题:[讨论]为什么就是不对?

以下是错误提示:
ex0712.f90:15.18:

  write(*,"('?')")
[cuicui@benatar 1]$ gfortran ex0712.f90
ex0712.f90:15.18:

  write(*,"('?')")
                  1
Error: Unexpected WRITE statement in WHERE block at (1)
ex0712.f90:8.7:

where(a(i:1)<30000.)
       1
Error: Rank mismatch in array reference at (1) (1/2)
ex0712.f90:10.29:

elsewhere(30000.<a(i,1) .and. a(i,1)<50000.)
                             1
Error: WHERE/ELSEWHERE clause at (1) requires a LOGICAL array
ex0712.f90:12.10:

以下是编写的程序:
program ex0712
implicit none
real :: a(10,2)
integer :: i
do i=1,10
write(*,"(1x)")'income='
read(*,*)a(:,1)
where(a(i:1)<30000.)
  a(i,2)=a(i,1)*0.1
elsewhere(30000.<a(i,1) .and. a(i,1)<50000.)
  a(i,2)=(a(i,1)-30000.)*0.12+30000.*0.1 
elsewhere(a(i,1)>50000.)
  a(i,2)=(a(i,1)-50000.)*0.15+20000.*0.12+30000.*0.1
elsewhere(a(i,1)<=0.)
  write(*,"('?')")
end where
end do
write(*,*)a(10,2)
end

回复列表 (共1个回复)

沙发


program ex0712
implicit none
real :: a(10,2)
integer :: i
do i=1,10
write(*,*)'income='
read(*,*)a(:,1)
where(a(:,1)<30000.)
  a(:,2)=a(i,1)*0.1
elsewhere(30000.<a(:,1) .and. a(:,1)<50000.)
  a(:,2)=(a(:,1)-30000.)*0.12+30000.*0.1 
elsewhere(a(:,1)>50000.)
  a(:,2)=(a(:,1)-50000.)*0.15+20000.*0.12+30000.*0.1
elsewhere(a(:,1)<=0.)
  write(*,"('?')")!这里不太看得懂。
end where
end do
write(*,*)a(10,2)
end

你没看懂Where的使用说明。

我来回复

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