1樓:好小愛新
newton_iteration函式引數列表裡的funx和funx1改改名——它與上面的函式名重名了。
其他的按照石頭兄來做吧~~~~
請教大神 如何在fortran 子程式中再定義函式進行運算
2樓:健康快樂李泡泡
就跟在主程式裡面的定義函式一樣,主程式和子程式的變數也可以是相同的,如,subroutine *(*,*,、、)implicit none
real :: a,b,c,d、、、、
、、、real,external :: addc=add(a,b)+d
、、、、
return
end subroutine *
function add(a,b)
implicit none
real :: a,b
real :: add
add=a+b
return
end大概就是這樣
3樓:天河流紋石
program main
call a()
end program main
subroutine a()
call b()
call c()
x = y()
end subroutine a
subroutine b()
...end subroutine b
subroutine c()
...end subroutine c
integer function y
...end function y
在fortran中,乙個主程式內定義的不同子函式的形參可否同名 5
fortran 裡定義乙個function 怎麼寫才能讓這個函式返回值是乙個陣列 。
4樓:無風雨晴
這個問題可以通過定義pure elemental 屬性的function 來解決:
如下圖中的**所示,陣列是一維或二維均可以。
2.執行結果
5樓:天河流紋石
用返回值也可以,用虛參傳遞也可以。
比如以下例子:func1 用返回值,sub2 用虛參。
6樓:匿名使用者
不記得fortran能有返回陣列的函式,或許你的版本特殊吧,一般程式設計也沒這樣的必要啊。
fortran中子程式和函式有什麼區別
7樓:匿名使用者
原則上,在不改變程式中各變數值、需要獲得乙個返回值的情況下,使用 function,另外,function 可以直接用在賦值語句中……;如果需要改變呼叫引數的值,全域性變數的值等情況下,使用 subroutine,一般沒有返回值。
8樓:匿名使用者
函式要求有返回值,子程式可以有返回值可以沒有。函式僅是乙個變數,而子程式是一段命令的集合。
9樓:匿名使用者
fortran中函式有返回值,而子程式沒有返回值
函式只有一種呼叫格式:函式名(引數),而且必須要有接收函式返回值的變數
10樓:匿名使用者
分別就是名字不同,性質不同!
fortran中函式或子程式fun(a,b,c)的三個傳遞引數,在傳遞時,實參中可不可以其中兩個是一樣的?
11樓:此使用者被關機
可以啊,定義函式的引數是不能一樣的,但是呼叫函式給函式傳引數是是可以的啊,三個一樣都可以,只要引數型別一致就行
12樓:匿名使用者
可以的,因為fun最後出來的是fun的值
你最後呼叫的是函式的話,出來的結果是這個fun的值
你呼叫的是子程式的話,出來可以是好幾個值。
fortran中乙個function定義函式能定義多個函式嗎 10
13樓:polaris北斗
定義函式時不能,乙個function後只能跟乙個函式名
尾部還得加個 end function
什麼是fortran函式
14樓:匿名使用者
fortran是一種程式語言,跟c、c++一樣,如果理解c函式或者c++函式的話,就就理解了這個
15樓:匿名使用者
fortran中函式分兩類:子程式(subroutine)和自定義函式(function)。自定義函式本質上就是數學上的函式,一般要傳遞自變數給自定義函式,返回函式值。
子程式不一定是這樣,可以沒有返值。傳遞引數要注意型別的對應,這跟c是一樣的。
1、子程式
目的:把某一段經常使用的有特定功能的程式獨立出來,可以方便呼叫。
習慣上一般都把子程式放在主程式結束之後。
形式:subroutine name (parameter1, parameter2)
!給子程式起乙個有意義的名字。可以傳遞引數,這樣可以有返回值。括號內也可以空著,代不傳遞引數。
implicit none
integer:: parameter1, parameter2 !需要定義一下接收引數的型別。
…… !接下來的程式編寫跟主程式沒有任何別。
…… mreturn !跟c不同,這裡表示子程式執行後回到呼叫它的地方繼續執行下面的程式。不一定放
!在最後。可以放在子程式的其他位置,作用相同;子程式中return之後的部分不執行。
end [subroutine name]
呼叫:使用call命令直接使用,不需要宣告。在呼叫處寫:
call subroutine name(parameter1,parameter2)
注意點:
a.子程式之間也可相互呼叫。直接呼叫就是了,像在主程式中呼叫子程式一樣。
b.傳遞引數的原理和c中不同。fortran裡是傳址呼叫(call by address/reference),就是傳遞時用引數和子程式中接收時用的引數使用同乙個位址,儘管命名可以不同。
這樣如果子程式的執行改子程式中接收引數的值,所傳遞的引數也相應發生變化。
c.子程式各自內部定義的變數具有獨立性,類似於c。各自的行**也具有獨立性。因此各個子程式主程式中有相同的變數名、行**號,並不會相互影響。
2、自定義函式
和子程式的明顯不同在於:需要在主程式中宣告之後才能使用。呼叫方式也有差別。另外按照慣例用函式不去改變自變數的值。如果要改變傳遞引數的值,習慣上用子程式來做。
宣告方式:real, external :: function_name
一般自定義函式也是放在主程式之後。
形式:function function_name(parameter1, parameter2)
implicit none
real:: parameter1, parameter2 !宣告函式引數型別,這是必需的
real::function_name !宣告函式返回值型別,這是必需的
…………
function_name=…. !返回值的表示式
return
end也可以這樣直接宣告返回值型別,簡潔些:
real function function_name(parameter1, parameter2)
implicit none
real:: parameter1, parameter2 !這個還是必需的
…………
function_name=…. !返回值表示式
return
end呼叫:function_name(parameter1,parameter2)
不需要call命令。
自定義函式可以相互呼叫。呼叫時也需要事先宣告。
總之,呼叫自定義函式前需要做宣告,呼叫子程式則不需要。
如何讓fortran中的子函式接收任意資料型別?
16樓:天河流紋石
不管是邏輯上,還是技術上,都無法實現。
不止是 fortran,其他任何語言都需要規定資料型別。
而且,不是所有資料型別都可以相加的。比如字串相加,就有很多層意義。比如結構體。
可以相加的不同的資料型別,其加法的實現方法(編譯器內部的實現)也是不同的。所以你必須分別書寫。
儘管如此,你可以書寫多個 sum 函式,分別處理不同型別,比如 sum_int , sum_real ,sum_doublereal 然後用 sum 來統一「稱呼」他們。
在(3)中,子函式sss的功能是啥?int(treturnt)(x,y))是什麼意思
sss函式 有三個參du數,第乙個引數是函zhi數指標daot,另兩個是兩個整數x y return 專 t x,y 表示返回 t指向屬的函式的執行結果 t指向的函式,有兩個引數 如 主程式中的呼叫,t指向funa時,sss返回的結果是funa 8,3 的值 11 t指向funb時,sss返回的結果...
javascript中函式引數的問題
標準一些的術語 object 物件 property 屬性 value 此物件某屬性的值 看看這個是不是你想要的 截圖 為什麼js事件函式裡面都有乙個引數 因為ev是事件的引數 啊!在ev中包含了事件觸發時的引數,比如click事件的ev中包含著版.e.pagex,e.pagey,keydown事件...
有關C語言函式的引數。。。
沒遇到過這類問題。不過顯示的時候一般都應該是字串的。數字不進行顯示,顯示即 列印!基本上都是字串。轉換的時候用顯示轉換。在c 中用 i 在c c 中也應該有類似的東西的。你找找看。你要把函式原型貼出來,才知道你的每個引數做什麼的,我簡單猜測是,引數2是需要顯示的字串,引數3是顯示的長度,引數1是可能...