2016-12-02 76 views
0

這裏是我的代碼:無效字符1t`

!lab 4(a) solution by James Ney 
program lab4_a 
implicit none 
integer :: n 
real :: L,R 
interface 
    function testFun (x) 
       real :: testFun 
       real, intent (in) :: x 
     end function testFun 
end interface 

print *, "lab 4(a) solution by James Ney" 
print *, "Enter left and right ends of interval and number of subintervals" 

read *, L,R,n 

call MeshCalcs(testFun,L,R,n) 

contains 

subroutine MeshCalcs(F,a,b,n) 
     implicit none 
     integer, intent(in) :: n 
     real, intent(in) :: a,b 
     real :: del,fVal,xVal 
     integer :: 1t=0,gr=0,i 
     real ::F,sum=0,average 
     del=(b-a)/real(n) 
     do i=0,n 
     xVal=a+(i*del) 
     fVal=F(xVal) 
     sum=sum+fVal 
     end do 
    Average=sum/(n+1.0) 
     print "('Average is: ',f10.2)",average 
     do i=0,n 
       xVal=a+(i*del) 
       fVal=F(xVal) 
       if (fVal>average) then 
       gr=gr+1 
       else if(fVal<average) then 
       1t=1t+1 
       end if 
     end do 
print "('number of function values greater than average =',i4)",gr 
print "('number of function values less than average =',i4)",1t 

end subroutine MeshCalcs 

end Program Lab4_a 

real function testFun(x) 
real, intent (in) :: x 
testFun=-(x-4.0)**2+9.0 
end function testFun 

和我得到的錯誤,當我嘗試用gfortran編譯如下:

lab4_2a.f90:27.20: 

     integer :: 1t=0,gr=0,i 
        1 
Error: Invalid character in name at (1) 
lab4_2a.f90:43.5: 

    1t=1t+1 
    1 
Error: Non-numeric character in statement label at (1) 
lab4_2a.f90:43.6: 

    1t=1t+1 
     1 
Error: Invalid character in name at (1) 
lab4_2a.f90:47.62: 

print "('number of function values less than average =',i4)",1t 
                   1 
Error: Syntax error in PRINT statement at (1) 
lab4_2a.f90:41.5: 

    gr=gr+1 
    1 
Error: Symbol 'gr' at (1) has no IMPLICIT type 
lab4_2a.f90:30.12: 

     do i=0,n 
      1 
Error: Symbol 'i' at (1) has no IMPLICIT type 
+1

你認爲'隱式無關'是爲了什麼?沒有它會是什麼? –

+0

歡迎,嘗試使用描述性問題標題,並提前避免不必要的問候,如問候和感謝。對於所有Fortran問題,使用標記'fortran',如果需要區分,則爲特定版本添加另一個標記。 –

+0

你已經有關於當前錯誤的答案。正如我所看到的語句'integer :: 1t = 0,gr = 0,我'我會預計你的[下一個問題](https://stackoverflow.com/q/3352741/)。 – francescalus

回答

1

第一條錯誤消息是很清楚(很好,那些已經知道這些東西的人清楚)。在此行中

integer :: 1t=0,gr=0,i 

聲明的第一個變量的名稱以數字1開頭。 Fortran的規則要求所有名稱都以字母或下劃線開頭。我相信這在其他編程語言中也很常見。所以1t上的編譯器barf和其他顯示的錯誤可能是直接的後果。重命名該變量並查看會發生什麼。