FORTRAN數(shù)組介紹大全_第1頁(yè)
FORTRAN數(shù)組介紹大全_第2頁(yè)
FORTRAN數(shù)組介紹大全_第3頁(yè)
FORTRAN數(shù)組介紹大全_第4頁(yè)
FORTRAN數(shù)組介紹大全_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、FORTRAN數(shù)組介紹大全,6 數(shù)組,6.1 數(shù)組的定義與操作,6.2 動(dòng)態(tài)數(shù)組,6.3 數(shù)組在函數(shù)和子程序中的應(yīng)用,6.4 數(shù)組的應(yīng)用舉例,FORTRAN數(shù)組介紹大全,6.1 數(shù)組的定義與操作,數(shù)組:相同類型數(shù)據(jù)組成的有序的有限集合,數(shù)組必須先定義后使用。定義數(shù)組時(shí),要對(duì)數(shù)組的名稱、類型、數(shù)組的維數(shù)和元素的數(shù)量加以說(shuō)明。,用類型說(shuō)明結(jié)合DIMENSION屬性進(jìn)行定義: 類型,dimension(維數(shù)說(shuō)明,維數(shù)說(shuō)明):數(shù)組名,數(shù)組名,6.1.1 數(shù)組的定義,FORTRAN數(shù)組介紹大全,維數(shù)說(shuō)明:由下標(biāo)界限說(shuō)明組成,有幾個(gè)下標(biāo)界限說(shuō)明就表示數(shù)組是幾維的。多于一維的數(shù)組稱多維數(shù)組,下標(biāo)界限說(shuō)明之間

2、用逗號(hào)(,)分隔。,下標(biāo)界限說(shuō)明的寫(xiě)法:下標(biāo)下限:下標(biāo)上界 下標(biāo)界限為整數(shù),上界必須大于下界 下標(biāo)下界為1時(shí)可以連同后面的冒號(hào)一起省略;但是,上界是不可省略的。,定義數(shù)組時(shí),下標(biāo)界限必須為整型常量。,FORTRAN數(shù)組介紹大全,例:INTEGER,DIMENSION(-2:10): P 定義一維整數(shù)組P,下標(biāo)從-2到10,13個(gè)元素。,例:DIMENSION A(12), IW(4,5) 定義一維實(shí)型數(shù)組A,下標(biāo)從1到12,12個(gè)元素;定義二維整型數(shù)組IW,4行5列,20個(gè)元素。,例: real,dimension(3,4):b,m(-5:10) 定義二維實(shí)型數(shù)組B,3行4列,12個(gè)元素;定義

3、一維實(shí)型數(shù)組M,下標(biāo)從-5到10,16個(gè)元素。,例: character c(100)*20 定義一維字符數(shù)組C,有100個(gè)字符串,每個(gè)可容納20個(gè)字符,FORTRAN數(shù)組介紹大全,6.1.2 數(shù)組的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),一維數(shù)組:數(shù)列、向量 二維數(shù)組:矩陣、行列式、表格 三維數(shù)組:帳簿 對(duì)更多維數(shù)的數(shù)組,可以從概念上理解。,在學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言時(shí), 一般只要求熟練掌握二維數(shù)組的應(yīng)用,作為理解和應(yīng)用多維數(shù)組的基礎(chǔ)。,FORTRAN數(shù)組介紹大全,數(shù)組元素在內(nèi)存中連續(xù)存放,下標(biāo)數(shù)值小的排在前面。存儲(chǔ)多維數(shù)組時(shí),下標(biāo)變化速度依次為第一個(gè),第二個(gè),例:A(10),依次存儲(chǔ)A(1),A(2),A(3), A

4、(10) B(8,9),依次存B(1,1),B(2,1),B(8,1), B(1,2),B(2,2),B(8,2), . B(1,9),B(2,9),B(8,9),特別提示:二維數(shù)組是按列存儲(chǔ)的。,FORTRAN數(shù)組介紹大全,用數(shù)組名(下標(biāo),下標(biāo))指定所要引用的數(shù)組元素。例:a(12),B5(3,6),c3b4(I,J,K),數(shù)組元素的下標(biāo)可以是算術(shù)表達(dá)式,系統(tǒng)計(jì)算此表達(dá)式的值并自動(dòng)取整。表達(dá)式中所涉及到的不是常量的量必須要先行算出。 例:a(I+1), b5(b5(3)+a(2) 例:c3b4(I,I+5,c3b4(a(b5(c3b4(1,4,2),6),3,2),6.1.3 數(shù)組元素的引用

5、,FORTRAN數(shù)組介紹大全,必須確保數(shù)組元素的下標(biāo)的值不超過(guò)下標(biāo)界限。如果下標(biāo)越界,系統(tǒng)一般會(huì)對(duì)存儲(chǔ)于數(shù)組之前(后)的存儲(chǔ)單元進(jìn)行操作(引用或者賦值),導(dǎo)致錯(cuò)誤。,如果作為數(shù)組元素的下標(biāo)的算術(shù)表達(dá)式中存在沒(méi)有賦值的變量,系統(tǒng)一般自動(dòng)將它按零處理,可能會(huì)導(dǎo)致計(jì)算結(jié)果不正確,或者不穩(wěn)定(時(shí)對(duì)時(shí)錯(cuò))。這類錯(cuò)誤很難發(fā)現(xiàn),是許多程序存在bug的原因。,數(shù)組元素的下標(biāo)表達(dá)式過(guò)于復(fù)雜時(shí),最好先行算出,最好不要書(shū)寫(xiě)過(guò)于復(fù)雜的語(yǔ)句和表達(dá)式。,FORTRAN數(shù)組介紹大全,6.1.4 數(shù)組的輸入與輸出,數(shù)組必須先定義后使用,本節(jié)討論中提到的數(shù)組假定已經(jīng)定義如下: DIMENSION A(10),M(12),D(5

6、,6),允許用數(shù)組名來(lái)I/O整個(gè)數(shù)組 例: READ(*,*) A,M,D WRITE(*,*) A,D,多維數(shù)組I/O時(shí),按其元素在內(nèi)存中存儲(chǔ)的順序依次I/O各元素,遵守的原則是:最左邊的下標(biāo)變化最快。,FORTRAN數(shù)組介紹大全,特別提示:二維數(shù)組是按列存儲(chǔ)的,在輸入/輸出時(shí)也按列進(jìn)行。,在程序中可以輸入/輸出指定的元素,作為特例,可用DO循環(huán)對(duì)數(shù)組全體元素或部分元素進(jìn)行輸入/輸出。,Do I=1,5 do j=1,6 read*,d(I,j) enddo Enddo,FORTRAN數(shù)組介紹大全,用DO循環(huán)對(duì)數(shù)組進(jìn)行輸入/輸出不方便,為此,提供了針對(duì)I/O的隱含DO循環(huán)方式。 例:read

7、(*,*) (A(I),I=4,10,2) read(*,*) (M(K),K=1,12) WRITE(*,*) (D(L,N),N=1,6),L=1,5),隱含DO循環(huán)方式輸出/輸入多維數(shù)組時(shí)要用到多重循環(huán),注意其書(shū)寫(xiě)方式。,FORTRAN數(shù)組介紹大全,6.1.5 數(shù)組的操作,數(shù)組賦值:可以給所有元素賦同一個(gè)值 例: DIMENSION A(10),M(12),D(5,6) A=1.2;M=3;D=4.5,數(shù)組構(gòu)造器:(/取值列表/) 取值列表:標(biāo)量、隱DO表、向量。隱DO表和向量整體作為一個(gè)標(biāo)量。標(biāo)量之間用逗號(hào)。,數(shù)組構(gòu)造器可給多維數(shù)組的某一維賦值: Real,Dimension (2,3

8、):A,B A(1,:)=(/1,2,3/) ! 給第1行賦值 A(2,:)=(/4,5,6/) ! 第2行,FORTRAN數(shù)組介紹大全,6.1.5 數(shù)組的操作,通過(guò)Reshape()函數(shù)可以把數(shù)組構(gòu)造器的數(shù)據(jù)賦給某種形狀的數(shù)組,real a(2,3),b(2,3),c(3,2) a(1,:)= (/1,2,3/);a(2,:)= (/4,5,6/) b=reshape(/1,2,3,4,5,6/),(/2,3/) do i = 1,2 print 1,(a(i,j),j=1,3) enddo,FORTRAN數(shù)組介紹大全,do i = 1,2 print 1,(b(i,j),j=1,3) en

9、ddo c = reshape(a,(/3,2/) do i = 1,3 print 1,(c(i,j),j=1,2) enddo 1 format(8(3x,f4.1) end,輸出結(jié)果為:,1.0 2.0 3.0 4.0 5.0 6.0 1.0 3.0 5.0 2.0 4.0 6.0 1.0 5.0 4.0 3.0 2.0 6.0,FORTRAN數(shù)組介紹大全,6.1.5 數(shù)組的操作,可以把整個(gè)數(shù)組作為一個(gè)單獨(dú)的對(duì)象進(jìn)行算術(shù)、邏輯和關(guān)系運(yùn)算。實(shí)際的運(yùn)算仍然發(fā)生在元素級(jí)。因此,參與運(yùn)算的數(shù)組必須有相同的形狀。例如:B=sin(A),表示B數(shù)組的元素是A數(shù)組對(duì)應(yīng)元素的正弦;B=A則表示B的元素與

10、A的元素對(duì)應(yīng)相等,相當(dāng)于數(shù)學(xué)上矩陣與向量的相等定義。,Fortran還提供了一些用于數(shù)組操作的內(nèi)部函數(shù),不過(guò),實(shí)際用到的情況并不多見(jiàn)。,FORTRAN數(shù)組介紹大全,6.1.6 數(shù)組片段,數(shù)組片段是數(shù)組中部分元素的集合。相當(dāng)于集合論中的子集。,可以用下標(biāo)三元組表示數(shù)組片段;下標(biāo)三元組的格式為下界:上界:步長(zhǎng),可選項(xiàng)不出現(xiàn)時(shí)取缺省值。 例:real,dimension(8,10):A 則A(2:6:2,2:8:3)是一個(gè)3x3的數(shù)組片段,還可用下標(biāo)向量表示數(shù)組片段:下標(biāo)向量的元素是整數(shù),代表數(shù)組片段中的元素在數(shù)組相應(yīng)維數(shù)中的下標(biāo)。,FORTRAN數(shù)組介紹大全,6.1.6 數(shù)組片段,例:real,d

11、imension(8,10):A,B(20) Integer c(4),d(3) C=(/2,4,7,8/);d=(/1,7,19/) B(d)=3.5 !置B(1),B(7),B(19)為3.5 B(/1,7,19/) = 3.5 !與上面相同 A(5,c)=4.6 !置A(5,2),A(5,4),A(5,7)與A(5,8)為4.6,數(shù)組片段是FORTRAN90新增的概念,應(yīng)該掌握。,FORTRAN數(shù)組介紹大全,例如:,Real,dimension(3,4):a Integer I(3), J(3) I=(/3,2,1/);J=(/2,3,4/) A= reshape(/1,2,3,4,5,

12、6,7,8,9,10,11,12/),(/3,4/) PRINT*,A(I,J) END,輸出結(jié)果為: 6 5 4 9 8 7 12 11 10,FORTRAN數(shù)組介紹大全,6.1.7 給數(shù)組元素賦初值,格式: DATA 變量表/初值表/,變量表/初值表/ 例: DIMENSION A(10),M(12),D(5,6) DATA R,A,K/-2,10*-3.5,-3/ DATA R/-2/,K/-3/,(A(I),I=1,5)/5*-3.5/ DATA U,V,W,X,D/4*-8.4,30*5.6/,DATA語(yǔ)句的初值表中,連續(xù)相同的數(shù)字可以用個(gè)數(shù)*初值的形式表示,如果初值為負(fù)數(shù),不得加括

13、號(hào)。,FORTRAN數(shù)組介紹大全,對(duì)單個(gè)數(shù)組元素賦值,與對(duì)變量賦值沒(méi)有任何區(qū)別。,對(duì)數(shù)組片段、數(shù)組的一部分元素或全體元素賦值,可采用隱含DO循環(huán)的方式。,DATA語(yǔ)句中,初值表中的數(shù)值個(gè)數(shù)必須與變量表中變量個(gè)數(shù)相同。計(jì)數(shù)時(shí),數(shù)組按其元素總數(shù)或隱含DO循環(huán)指定數(shù)量計(jì)。,FORTRAN數(shù)組介紹大全,可以用DATA語(yǔ)句對(duì)同一個(gè)變量多次賦初值,但只有最后一次賦值有效。,例: DIMENSION R(6,6) DATA R, (R(I,I),I=1,6)/ 36*0.0 ,6*1.0/ 則數(shù)組R代表一個(gè)6階單位矩陣。,DATA語(yǔ)句是非執(zhí)行語(yǔ)句,可以出現(xiàn)在說(shuō)明語(yǔ)句之后、END語(yǔ)句之前。但是,DATA語(yǔ)句混

14、在執(zhí)行語(yǔ)句中間將降低程序的可讀性,一般建議將DATA語(yǔ)句放在執(zhí)行語(yǔ)句之前。,FORTRAN數(shù)組介紹大全,6.2 動(dòng)態(tài)數(shù)組,在定義數(shù)組時(shí),如果明確了它的大小與形狀,這樣的數(shù)組就是靜態(tài)數(shù)組,它占用的內(nèi)存大小是已知的,與定義它的程序單元具有相同的生存期。,經(jīng)常需要根據(jù)程序的輸入數(shù)據(jù)或中間計(jì)算結(jié)果來(lái)確定數(shù)組的大小,這就可以用動(dòng)態(tài)數(shù)組來(lái)實(shí)現(xiàn)。動(dòng)態(tài)數(shù)組占用的內(nèi)存大小是在程序執(zhí)行期間按需分配的,滿足需要又不浪費(fèi)。,動(dòng)態(tài)數(shù)組占用的內(nèi)存可以釋放掉。,FORTRAN數(shù)組介紹大全,6.2 動(dòng)態(tài)數(shù)組,動(dòng)態(tài)數(shù)組的定義方式: 類型說(shuō)明,Dimension(RANK),Allocatable:數(shù)組名 RANK規(guī)定了數(shù)組的維

15、數(shù), 一個(gè):代表一維,:之間用逗號(hào)隔開(kāi)。不能指定各維的上下界。,Real,Dimension(:),ALLocatable:A Real,Allocatable:B(:,:,:) 定義了一維動(dòng)態(tài)數(shù)組A與三維動(dòng)態(tài)數(shù)組B。注意其區(qū)別。,FORTRAN數(shù)組介紹大全,6.2 動(dòng)態(tài)數(shù)組,可以為動(dòng)態(tài)數(shù)組分配內(nèi)存: Allocate(數(shù)組名(維說(shuō)明符),例 real,allocatable : a(:,:) read*,m,n allocate(a(m,n) Read *,a do i = 1,2 print 1,(a(i,j),j=1,3);enddo 1 format(8(3x,f4.1);deallo

16、cate(a);end,FORTRAN數(shù)組介紹大全,6.2 動(dòng)態(tài)數(shù)組,可以釋放動(dòng)態(tài)數(shù)組的內(nèi)存: DEAllocate(數(shù)組名),動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)可以是零。 對(duì)動(dòng)態(tài)數(shù)組必須先分配內(nèi)存,然后才能使用和釋放內(nèi)存。雖然程序退出時(shí)會(huì)自動(dòng)釋放所有內(nèi)存,將Allocate與DEAllocate配對(duì)使用仍然是建議養(yǎng)成的良好習(xí)慣。 已經(jīng)分配內(nèi)存的動(dòng)態(tài)數(shù)組不能再分配內(nèi)存,要改變動(dòng)態(tài)數(shù)組的大小時(shí),必須先釋放其內(nèi)存,再重新為其分配內(nèi)存。,FORTRAN數(shù)組介紹大全,6.2 動(dòng)態(tài)數(shù)組,很明顯:沒(méi)有分配內(nèi)存的動(dòng)態(tài)數(shù)組不能釋放其內(nèi)存。 作為虛參的數(shù)組不能是動(dòng)態(tài)數(shù)組,因?yàn)樗拇笮∈窃谶^(guò)程調(diào)用時(shí)由相應(yīng)的實(shí)參確定的,而不是由a

17、llocate()函數(shù)分配的。,FORTRAN數(shù)組介紹大全,6.3 數(shù)組在函數(shù)和子程序中的應(yīng)用,6.3.1 顯式形狀數(shù)組 顯式形狀數(shù)組的秩、大小、形狀都是明確指定的。作為虛參時(shí),其上下界可以由另外的虛參指定,該虛參值的變量不影響數(shù)組的上下界。,例 Subroutine ex(a,b,C,M,N) Real a(50),b(2,3,4),C(M:N) M=M+N N=N-2,FORTRAN數(shù)組介紹大全,6.3 數(shù)組在函數(shù)和子程序中的應(yīng)用,6.3.2 假定形狀數(shù)組 假定形狀數(shù)組只能作為虛參,其秩是明確規(guī)定的,但其形狀由實(shí)參確定。當(dāng)下界指定時(shí),上界會(huì)根據(jù)實(shí)參自動(dòng)確定。,例 Subroutine As

18、(C) Real,Dimension(:,:):C 本過(guò)程只規(guī)定了數(shù)組C的秩為2;主調(diào)程序可以用任意的二維數(shù)組作為實(shí)參來(lái)調(diào)用它。,FORTRAN數(shù)組介紹大全,6.3 數(shù)組在函數(shù)和子程序中的應(yīng)用,6.3.3 假定大小數(shù)組 假定大小數(shù)組只能作為虛參,其最后一維的上界必須用星號(hào)*表示,表明其是可變的。,例:Subroutine Asize(C) Real,Dimension(8,9,*):C,假定大小數(shù)組的形狀可以與實(shí)參數(shù)組不同,它們按照在內(nèi)存中的存儲(chǔ)順序一一對(duì)應(yīng)。這就使假定大小數(shù)組的最后一維可能不完整,例如,調(diào)用上例過(guò)程時(shí),實(shí)參大小不是72的倍數(shù),必須防止使用未定義的數(shù)組元素。,FORTRAN數(shù)組

19、介紹大全,數(shù)組作為虛參,(1)當(dāng)虛參數(shù)組為數(shù)值型或邏輯型 A:實(shí)參為同類型的數(shù)組名 PROGRAM MAIN SUBROUTINE SUB(B) REAL A(1:8) REAL B(5) CALL SUB(A) A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) B(1) B(2) B(3) B(4) B(5),FORTRAN數(shù)組介紹大全,PROGRAM MAIN SUBROUTINE SUB(B) REAL C(3,3) REAL B(5) CALL SUB(C) C(1,1) C(2,1) C(3,1) C(1,2) C(2,2) C(3,2) C(1,3)

20、C(2,3) C(3,3) B(1) B(2) B(3) B(4) B(5) 注意:虛參數(shù)組的元素個(gè)數(shù)必須小于等于實(shí)參數(shù)組的元素個(gè)數(shù). B:實(shí)參為同類型的數(shù)組元素 CALL SUB(A(3) A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) B(1) B(2) B(3) B(4) B(5),FORTRAN數(shù)組介紹大全,CALL SUB(C(1,2) C(1,1) C(2,1) C(3,1) C(1,2) C(2,2) C(3,2) C(1,3) C(2,3) C(3,3) B(1) B(2) B(3) B(4) B(5) 注意:虛參數(shù)組不能越出實(shí)參數(shù)組的范圍.如

21、CALL SUB(C(3,2)是錯(cuò)誤的 (2)當(dāng)虛參數(shù)組為字符型,實(shí)參為同類型的數(shù)組名或數(shù)組元素,虛參與實(shí)參是按字符位置一一對(duì)應(yīng). PROGRAM MAIN SUBROUTINE SUB(B) CHARACTER*4 A(5) CHARACTER*3 B(4) CALL SUB(A),FORTRAN數(shù)組介紹大全,parameter (n=20) integer a(n),X data a/52,98,-45,0,8,10,-23,6,25,12, STOP endif ENDDO write(*,*) X, Could not be found! 100 format(1x,Ordinary:

22、/(1x,10i6) 120 format(1x,The,I3,th number is,I3) end,順序查找要對(duì)所有數(shù)據(jù)進(jìn)行比較 ,因此也叫遍歷式查找。,如果數(shù)據(jù)X多次出現(xiàn)在數(shù)組中,本程序只能查找到第一次出現(xiàn)的位置。,FORTRAN數(shù)組介紹大全,parameter (N=10) INTEGER A(N) Data a/18,10,6,25,12,8,4,15,2,-5/ WRITE(*,100) A DO I = 1,N-1 DO J = N,I+1,-1 IF(A(J).LT.A(J-1) THEN M = A(J);A(J) = A(J-1);A(J-1) = M ENDIF END

23、O ENDO,例2(冒泡排序):把一組數(shù)據(jù)從小到大排列,WRITE(*,120) A 100 FORMAT(1X,Ordinary:/(1X,10I6) 120 FORMAT(1X,Sorted:/(1X,10I6) END,FORTRAN數(shù)組介紹大全,例3(選擇排序):把一組數(shù)據(jù)從小到大排列,parameter (n=10) integer a(n),p read(*,*) a;write(*,100) a do i = 1,n-1 p = I do j = i+1,n;if(a(j)a(p) p = j;Enddo if(p/=i) then j = a(p); a(p) = a(i);a

24、(i) = j endif Enddo,write(*,120) a 100 format(1x,Ordinary:/(1x,10i6) 120 format(1x,Sorted:/(1x,10i6) end,FORTRAN數(shù)組介紹大全,數(shù)理統(tǒng)計(jì):輸入20個(gè)學(xué)生的學(xué)號(hào)、姓名和一門(mén)功課的成績(jī),打印出最高分、最低分、全班平均分和高出平均分的學(xué)生學(xué)號(hào)、姓名與成績(jī)。 Parameter (N=20) DIMENSION S(N) character*8 num(n),name(n) write(*,*) Enter No and Score and Name READ(*,100) (num(I),s

25、(I), name(I) ,I=1,n) Sum = s(1);Smin = S(1);Smax = S(1) DO I = 2,N if(smin s(I) smin = s(I) if(smax S(I) smax = s(I),Sum = Sum+A(I) ENDDO AV=Sum/N;write(*,110) Smax,Smin,AV write(*,150) DO I = 1,N if(S(I)AV) rite(*,120)num(I),name(I),s(I) ENDDO 100 Format(A,F8.1,A) 110Format(1x,H=,F3.0, L=,F3.0,A=,F

26、3.0) 120Format(1X,2A10,F8.1) 150 Format(1x,No,8x,Name,8x,Score) END,FORTRAN數(shù)組介紹大全,數(shù)組程序舉例 例1:輸入20名學(xué)生的成績(jī),統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù)。 分?jǐn)?shù)段為:09,1019,2029,.9099,100 c(0), c(1), c(2), c(9), c(10) 輸入一個(gè)成績(jī)G,需要進(jìn)行下列判斷: DO I=0,10 IF(I*10.LE.G.AND.G.LT.(I+1)*10)C(I)=C(I)+1 END 成績(jī)G和數(shù)組C的下標(biāo)K有下列關(guān)系 K=G/10 程序?yàn)?,FORTRAN數(shù)組介紹大全,Real,dimens

27、ion(1:20):G INTEGER C(0:10),K C=0 DO I=1,20 READ*,G(I) K=G(I)/10 C(K)=C(K)+1 END DO PRINT*,(C(I),I=0,10) END,FORTRAN數(shù)組介紹大全,例2:輸入20名學(xué)生的學(xué)號(hào)和一門(mén)課的成績(jī),統(tǒng)計(jì)不及格的人數(shù),并把不及格的學(xué)生學(xué)號(hào)和成績(jī)打印出來(lái)。 數(shù)組NUM存放學(xué)號(hào),數(shù)組G存放成績(jī) CHARACTER*10 NUM(20) REAL G(20) DO I=1,20 READ*,NUM(I),G(I) END DO N=0 DO I=1,20 IF(G(I).LT.60)THEN N=N+1; PRI

28、NT*,NUM(I),G(I) END DO END,FORTRAN數(shù)組介紹大全,例3:順序查找 A: 5 3 7 11 20 9 18 11 X=11 下列程序段用來(lái)查找數(shù)組A中是否包含X P=1 DO WHILE(A(P).NE.X .AND. P.LT.N) P=P+1 END DO 在二種情況下退出循環(huán): (1)A(P)=X;此時(shí)在A中找到X (2)P=N;即X與A(1),A(2),.A(N-1)均不相同,還要判斷與A(N)是否相等,由于此時(shí)P=N,即要判斷X與A(P)是否相等。 程序?yàn)椋?FORTRAN數(shù)組介紹大全,Parameter(n=20) Integer,dimension(

29、1:n):a Integer x,p Read*,(a(I),I=1,n) Read*,x P=1 Do while(a(p).ne.x.and.p.lt.n) p=p+1 End do If(x.eq.a(p)then print*,在數(shù)組A中找到 , X , 位置為,P ELSE print*,在數(shù)組A沒(méi)有找到, X END IF END,FORTRAN數(shù)組介紹大全,例4:在一有序數(shù)列中,插入一數(shù),使插PARAMETER(N=30) 入后的數(shù)列仍然有序.INTEGER A(N) A 3 , 5 , 11, 22, 28, 56, 76, 88READ*,N1 X=45READ*,(A(I),I=1,N1) 第一步,先找插入的位置PREAD*,X P=1 P=1 DO WHILE(X.GT.A(P).AND.P.LE.N1) DO WHILE(X.GT.A(P).AND.P.LE.N1) P=P+1P=P+1 END DOEND DO 第二步,完成插入DO I=N1,P,-1 DO I=N1,P,-1 A(I+1)=A(I) A(I+1)=A(I)END DO; A(P)=X END DON1=N1+1 A(P)=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論