fortran子函式的有引數是子函式該如何定

2022-08-30 08:40:05 字數 4835 閱讀 1885

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是可能...