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

下載本文檔

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

文檔簡介

§6數(shù)組§6.1數(shù)組的定義與操作§6.2動態(tài)數(shù)組§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.4數(shù)組的應(yīng)用舉例ppt課件§6數(shù)組§6.1數(shù)組的定義與操作§6.2動態(tài)數(shù)組1§6.1數(shù)組的定義與操作數(shù)組:相同類型數(shù)據(jù)組成的有序的有限集合數(shù)組必須先定義后使用。定義數(shù)組時,要對數(shù)組的名稱、類型、數(shù)組的維數(shù)和元素的數(shù)量加以說明。用類型說明結(jié)合DIMENSION屬性進(jìn)行定義:類型,dimension(維數(shù)說明[,維數(shù)說明])::數(shù)組名[,數(shù)組名]§6.1.1數(shù)組的定義ppt課件§6.1數(shù)組的定義與操作數(shù)組:相同類型數(shù)據(jù)組成的有序的有2維數(shù)說明:由下標(biāo)界限說明組成,有幾個下標(biāo)界限說明就表示數(shù)組是幾維的。多于一維的數(shù)組稱多維數(shù)組,下標(biāo)界限說明之間用逗號(,)分隔。下標(biāo)界限說明的寫法:下標(biāo)下限:下標(biāo)上界下標(biāo)界限為整數(shù),上界必須大于下界下標(biāo)下界為1時可以連同后面的冒號一起省略;但是,上界是不可省略的。定義數(shù)組時,下標(biāo)界限必須為整型常量。ppt課件維數(shù)說明:由下標(biāo)界限說明組成,有幾個下標(biāo)界限說明就表示數(shù)組3例:INTEGER,DIMENSION(-2:10)::P定義一維整數(shù)組P,下標(biāo)從-2到10,13個元素。例:DIMENSIONA(12),IW(4,5)定義一維實型數(shù)組A,下標(biāo)從1到12,12個元素;定義二維整型數(shù)組IW,4行5列,20個元素。例:real,dimension(3,4)::b,m(-5:10)定義二維實型數(shù)組B,3行4列,12個元素;定義一維實型數(shù)組M,下標(biāo)從-5到10,16個元素。例:characterc(100)*20定義一維字符數(shù)組C,有100個字符串,每個可容納20個字符ppt課件例:INTEGER,DIMENSION(-2:10)::P4§6.1.2數(shù)組的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)一維數(shù)組:數(shù)列、向量二維數(shù)組:矩陣、行列式、表格三維數(shù)組:帳簿對更多維數(shù)的數(shù)組,可以從概念上理解。在學(xué)習(xí)程序設(shè)計語言時,一般只要求熟練掌握二維數(shù)組的應(yīng)用,作為理解和應(yīng)用多維數(shù)組的基礎(chǔ)。ppt課件§6.1.2數(shù)組的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)一維數(shù)組:數(shù)列、向量5

數(shù)組元素在內(nèi)存中連續(xù)存放,下標(biāo)數(shù)值小的排在前面。存儲多維數(shù)組時,下標(biāo)變化速度依次為第一個,第二個…例:A(10),依次存儲A(1),A(2),A(3),…A(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ù)組是按列存儲的。ppt課件數(shù)組元素在內(nèi)存中連續(xù)存放,下標(biāo)數(shù)值小的排在前面。存儲多維6用數(shù)組名(下標(biāo)[,下標(biāo)])指定所要引用的數(shù)組元素。例:a(12),B5(3,6),c3b4(I,J,K)數(shù)組元素的下標(biāo)可以是算術(shù)表達(dá)式,系統(tǒng)計算此表達(dá)式的值并自動取整。表達(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ù)組元素的引用ppt課件用數(shù)組名(下標(biāo)[,下標(biāo)])指定所要引用的數(shù)組元素。例:a(17必須確保數(shù)組元素的下標(biāo)的值不超過下標(biāo)界限。如果下標(biāo)越界,系統(tǒng)一般會對存儲于數(shù)組之前(后)的存儲單元進(jìn)行操作(引用或者賦值),導(dǎo)致錯誤。如果作為數(shù)組元素的下標(biāo)的算術(shù)表達(dá)式中存在沒有賦值的變量,系統(tǒng)一般自動將它按零處理,可能會導(dǎo)致計算結(jié)果不正確,或者不穩(wěn)定(時對時錯)。這類錯誤很難發(fā)現(xiàn),是許多程序存在bug的原因。數(shù)組元素的下標(biāo)表達(dá)式過于復(fù)雜時,最好先行算出,最好不要書寫過于復(fù)雜的語句和表達(dá)式。ppt課件必須確保數(shù)組元素的下標(biāo)的值不超過下標(biāo)界限。如果下標(biāo)越界,8§6.1.4數(shù)組的輸入與輸出

數(shù)組必須先定義后使用,本節(jié)討論中提到的數(shù)組假定已經(jīng)定義如下:DIMENSIONA(10),M(12),D(5,6)允許用數(shù)組名來I/O整個數(shù)組例:READ(*,*)A,M,DWRITE(*,*)A,D多維數(shù)組I/O時,按其元素在內(nèi)存中存儲的順序依次I/O各元素,遵守的原則是:最左邊的下標(biāo)變化最快。ppt課件§6.1.4數(shù)組的輸入與輸出數(shù)組必須先定義后使用,本節(jié)討9特別提示:二維數(shù)組是按列存儲的,在輸入/輸出時也按列進(jìn)行。在程序中可以輸入/輸出指定的元素,作為特例,可用DO循環(huán)對數(shù)組全體元素或部分元素進(jìn)行輸入/輸出。DoI=1,5doj=1,6read*,d(I,j)enddoEnddoppt課件特別提示:二維數(shù)組是按列存儲的,在輸入/輸出時也按列進(jìn)行。10用DO循環(huán)對數(shù)組進(jìn)行輸入/輸出不方便,為此,提供了針對I/O的隱含DO循環(huán)方式。例: read(*,*)(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ù)組時要用到多重循環(huán),注意其書寫方式。ppt課件用DO循環(huán)對數(shù)組進(jìn)行輸入/輸出不方便,為此,提供了針對I/O11§6.1.5數(shù)組的操作

數(shù)組賦值:可以給所有元素賦同一個值例:DIMENSIONA(10),M(12),D(5,6)A=1.2;M=3;D=4.5

數(shù)組構(gòu)造器:(/取值列表/)取值列表:標(biāo)量、隱DO表、向量。隱DO表和向量整體作為一個標(biāo)量。標(biāo)量之間用逗號。

數(shù)組構(gòu)造器可給多維數(shù)組的某一維賦值:Real,Dimension(2,3)::A,BA(1,:)=(/1,2,3/)!給第1行賦值A(chǔ)(2,:)=(/4,5,6/)!第2行ppt課件§6.1.5數(shù)組的操作數(shù)組賦值:可以給所有元素賦同一個12§6.1.5數(shù)組的操作通過Reshape()函數(shù)可以把數(shù)組構(gòu)造器的數(shù)據(jù)賦給某種形狀的數(shù)組reala(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/))doi=1,2print1,(a(i,j),j=1,3)enddoppt課件§6.1.5數(shù)組的操作通過Reshape()函數(shù)可以把13doi=1,2print1,(b(i,j),j=1,3)enddoc=reshape(a,(/3,2/))doi=1,3print1,(c(i,j),j=1,2)enddo1format(8(3x,f4.1))end輸出結(jié)果為:1.02.03.04.05.06.01.03.05.02.04.06.01.05.04.03.02.06.0ppt課件doi=1,2輸出結(jié)果為:1.02.03.14§6.1.5數(shù)組的操作可以把整個數(shù)組作為一個單獨(dú)的對象進(jìn)行算術(shù)、邏輯和關(guān)系運(yùn)算。實際的運(yùn)算仍然發(fā)生在元素級。因此,參與運(yùn)算的數(shù)組必須有相同的形狀。例如:B=sin(A),表示B數(shù)組的元素是A數(shù)組對應(yīng)元素的正弦;B=A則表示B的元素與A的元素對應(yīng)相等,相當(dāng)于數(shù)學(xué)上矩陣與向量的相等定義。Fortran還提供了一些用于數(shù)組操作的內(nèi)部函數(shù),不過,實際用到的情況并不多見。ppt課件§6.1.5數(shù)組的操作可以把整個數(shù)組作為一個單獨(dú)的對象15§6.1.6數(shù)組片段

數(shù)組片段是數(shù)組中部分元素的集合。相當(dāng)于集合論中的子集??梢杂孟聵?biāo)三元組表示數(shù)組片段;下標(biāo)三元組的格式為[下界]:[上界][:步長],可選項不出現(xiàn)時取缺省值。例:real,dimension(8,10)::A則A(2:6:2,2:8:3)是一個3x3的數(shù)組片段還可用下標(biāo)向量表示數(shù)組片段:下標(biāo)向量的元素是整數(shù),代表數(shù)組片段中的元素在數(shù)組相應(yīng)維數(shù)中的下標(biāo)。ppt課件§6.1.6數(shù)組片段數(shù)組片段是數(shù)組中部分元素的集合。相當(dāng)16§6.1.6數(shù)組片段例:real,dimension(8,10)::A,B(20)Integerc(4),d(3)C=(/2,4,7,8/);d=(/1,7,19/)B(d)=3.5!置B(1),B(7),B(19)為3.5B((/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)該掌握。ppt課件§6.1.6數(shù)組片段例:real,dimension(8,17例如:Real,dimension(3,4)::aIntegerI(3),J(3)I=(/3,2,1/);J=(/2,3,4/)A=reshape((/1,2,3,4,5,6,7,8,9,10,11,12/),(/3,4/))PRINT*,A(I,J)END輸出結(jié)果為:654987121110ppt課件例如:Real,dimension(3,4)::a輸出結(jié)果為18§6.1.7給數(shù)組元素賦初值

格式:DATA變量表/初值表/[,變量表/初值表/例:DIMENSIONA(10),M(12),D(5,6)DATAR,A,K/-2,10*-3.5,-3/DATAR/-2/,K/-3/,(A(I),I=1,5)/5*-3.5/ DATAU,V,W,X,D/4*-8.4,30*5.6/

DATA語句的初值表中,連續(xù)相同的數(shù)字可以用個數(shù)*初值的形式表示,如果初值為負(fù)數(shù),不得加括號。ppt課件§6.1.7給數(shù)組元素賦初值格式:DATA變量表/19對單個數(shù)組元素賦值,與對變量賦值沒有任何區(qū)別。對數(shù)組片段、數(shù)組的一部分元素或全體元素賦值,可采用隱含DO循環(huán)的方式。

DATA語句中,初值表中的數(shù)值個數(shù)必須與變量表中變量個數(shù)相同。計數(shù)時,數(shù)組按其元素總數(shù)或隱含DO循環(huán)指定數(shù)量計。ppt課件對單個數(shù)組元素賦值,與對變量賦值沒有任何區(qū)別。對數(shù)組片段20可以用DATA語句對同一個變量多次賦初值,但只有最后一次賦值有效。例:DIMENSIONR(6,6)DATAR,(R(I,I),I=1,6)/36*0.0,6*1.0/則數(shù)組R代表一個6階單位矩陣。DATA語句是非執(zhí)行語句,可以出現(xiàn)在說明語句之后、END語句之前。但是,DATA語句混在執(zhí)行語句中間將降低程序的可讀性,一般建議將DATA語句放在執(zhí)行語句之前。ppt課件可以用DATA語句對同一個變量多次賦初值,但只有最后一次賦值21§6.2動態(tài)數(shù)組在定義數(shù)組時,如果明確了它的大小與形狀,這樣的數(shù)組就是靜態(tài)數(shù)組,它占用的內(nèi)存大小是已知的,與定義它的程序單元具有相同的生存期。經(jīng)常需要根據(jù)程序的輸入數(shù)據(jù)或中間計算結(jié)果來確定數(shù)組的大小,這就可以用動態(tài)數(shù)組來實現(xiàn)。動態(tài)數(shù)組占用的內(nèi)存大小是在程序執(zhí)行期間按需分配的,滿足需要又不浪費(fèi)。動態(tài)數(shù)組占用的內(nèi)存可以釋放掉。ppt課件§6.2動態(tài)數(shù)組在定義數(shù)組時,如果明確了它的大小與形狀,22§6.2動態(tài)數(shù)組動態(tài)數(shù)組的定義方式:類型說明,Dimension(RANK),Allocatable::數(shù)組名RANK規(guī)定了數(shù)組的維數(shù),一個:代表一維,:之間用逗號隔開。不能指定各維的上下界。Real,Dimension(:),ALLocatable::AReal,Allocatable::B(:,:,:)定義了一維動態(tài)數(shù)組A與三維動態(tài)數(shù)組B。注意其區(qū)別。ppt課件§6.2動態(tài)數(shù)組動態(tài)數(shù)組的定義方式:Real,Dimen23§6.2動態(tài)數(shù)組可以為動態(tài)數(shù)組分配內(nèi)存:Allocate(數(shù)組名(維說明符))例real,allocatable::a(:,:)read*,m,nallocate(a(m,n))Read*,adoi=1,2print1,(a(i,j),j=1,3);enddo1format(8(3x,f4.1));deallocate(a);endppt課件§6.2動態(tài)數(shù)組可以為動態(tài)數(shù)組分配內(nèi)存:例ppt課件24§6.2動態(tài)數(shù)組可以釋放動態(tài)數(shù)組的內(nèi)存:DEAllocate(數(shù)組名)動態(tài)數(shù)組的元素個數(shù)可以是零。對動態(tài)數(shù)組必須先分配內(nèi)存,然后才能使用和釋放內(nèi)存。雖然程序退出時會自動釋放所有內(nèi)存,將Allocate與DEAllocate配對使用仍然是建議養(yǎng)成的良好習(xí)慣。已經(jīng)分配內(nèi)存的動態(tài)數(shù)組不能再分配內(nèi)存,要改變動態(tài)數(shù)組的大小時,必須先釋放其內(nèi)存,再重新為其分配內(nèi)存。ppt課件§6.2動態(tài)數(shù)組可以釋放動態(tài)數(shù)組的內(nèi)存:動態(tài)數(shù)組的元素個25§6.2動態(tài)數(shù)組很明顯:沒有分配內(nèi)存的動態(tài)數(shù)組不能釋放其內(nèi)存。作為虛參的數(shù)組不能是動態(tài)數(shù)組,因為它的大小是在過程調(diào)用時由相應(yīng)的實參確定的,而不是由allocate()函數(shù)分配的。ppt課件§6.2動態(tài)數(shù)組很明顯:沒有分配內(nèi)存的動態(tài)數(shù)組不能釋放其26§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.3.1顯式形狀數(shù)組顯式形狀數(shù)組的秩、大小、形狀都是明確指定的。作為虛參時,其上下界可以由另外的虛參指定,該虛參值的變量不影響數(shù)組的上下界。例Subroutineex(a,b,C,M,N)Reala(50),b(2,3,4),C(M:N)M=M+NN=N-2ppt課件§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.3.1顯式形狀27§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.3.2假定形狀數(shù)組假定形狀數(shù)組只能作為虛參,其秩是明確規(guī)定的,但其形狀由實參確定。當(dāng)下界指定時,上界會根據(jù)實參自動確定。例SubroutineAs(C)Real,Dimension(:,:)::C本過程只規(guī)定了數(shù)組C的秩為2;主調(diào)程序可以用任意的二維數(shù)組作為實參來調(diào)用它。ppt課件§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.3.2假定形狀28§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.3.3假定大小數(shù)組假定大小數(shù)組只能作為虛參,其最后一維的上界必須用星號*表示,表明其是可變的。例:SubroutineAsize(C)Real,Dimension(8,9,*)::C假定大小數(shù)組的形狀可以與實參數(shù)組不同,它們按照在內(nèi)存中的存儲順序一一對應(yīng)。這就使假定大小數(shù)組的最后一維可能不完整,例如,調(diào)用上例過程時,實參大小不是72的倍數(shù),必須防止使用未定義的數(shù)組元素。ppt課件§6.3數(shù)組在函數(shù)和子程序中的應(yīng)用§6.3.3假定大小29數(shù)組作為虛參(1)當(dāng)虛參數(shù)組為數(shù)值型或邏輯型 A:實參為同類型的數(shù)組名PROGRAMMAINSUBROUTINESUB(B)REALA(1:8)REALB(5)CALLSUB(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)

ppt課件數(shù)組作為虛參(1)當(dāng)虛參數(shù)組為數(shù)值型或邏輯型ppt課件30PROGRAMMAINSUBROUTINESUB(B)REALC(3,3)REALB(5)CALLSUB(C)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ù)組的元素個數(shù). B:實參為同類型的數(shù)組元素CALLSUB(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)ppt課件PROGRAMMAINSUBROUTINE31CALLSUB(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ù)組的范圍.如CALLSUB(C(3,2))是錯誤的(2)當(dāng)虛參數(shù)組為字符型,實參為同類型的數(shù)組名或數(shù)組元素,虛參與實參是按字符位置一一對應(yīng).PROGRAMMAINSUBROUTINESUB(B)CHARACTER*4A(5)CHARACTER*3B(4)CALLSUB(A)ppt課件CALLSUB(C(1,2))ppt課件32ppt課件ppt課件33parameter(n=20)integera(n),Xdataa/52,98,-45,0,8,10,-23,6,25,12,&-89,8,4,15,2,-5,81,60,32,75/write(*,100)awrite(*,*)'Enteranumberforsearch'read(*,*)Xdok=1,n例1(順序查找):在一組數(shù)據(jù)中查找數(shù)據(jù)X§6.4數(shù)組的應(yīng)用舉例if(x==A(k))thenwrite(*,120)K,X;STOPendifENDDOwrite(*,*)X,'Couldnotbefound!'100format(1x,'Ordinary:'/(1x,10i6))120format(1x,'The',I3,'thnumberis',I3)end順序查找要對所有數(shù)據(jù)進(jìn)行比較,因此也叫遍歷式查找。如果數(shù)據(jù)X多次出現(xiàn)在數(shù)組中,本程序只能查找到第一次出現(xiàn)的位置。ppt課件parameter(n=20)例1(順序查找):在一組數(shù)34parameter(N=10)INTEGERA(N)Dataa/18,10,6,25,12,8,4,15,2,-5/WRITE(*,100)ADOI=1,N-1DOJ=N,I+1,-1IF(A(J).LT.A(J-1))THENM=A(J);A(J)=A(J-1);A(J-1)=MENDIFENDOENDO例2(冒泡排序):把一組數(shù)據(jù)從小到大排列WRITE(*,120)A100FORMAT(1X,'Ordinary:'/(1X,10I6))120FORMAT(1X,'Sorted:'/(1X,10I6))ENDppt課件parameter(N=10)例2(冒泡排序):把一組數(shù)據(jù)35例3(選擇排序):把一組數(shù)據(jù)從小到大排列parameter(n=10)integera(n),pread(*,*)a;write(*,100)adoi=1,n-1p=Idoj=i+1,n;if(a(j)<a(p))p=j;Enddoif(p/=i)then j=a(p);a(p)=a(i);a(i)=jendifEnddowrite(*,120)a100format(1x,'Ordinary:'/(1x,10i6))120format(1x,'Sorted:'/(1x,10i6))endppt課件例3(選擇排序):把一組數(shù)據(jù)從小到大排列parameter36數(shù)理統(tǒng)計:輸入20個學(xué)生的學(xué)號、姓名和一門功課的成績,打印出最高分、最低分、全班平均分和高出平均分的學(xué)生學(xué)號、姓名與成績。Parameter(N=20)DIMENSIONS(N)character*8num(n),name(n) write(*,*)‘EnterNoandScoreandName’READ(*,100)(num(I),s(I),name(I),I=1,n)Sum=s(1);Smin=S(1);Smax=S(1)DOI=2,Nif(smin>s(I))smin=s(I) if(smax<S(I))smax=s(I)Sum=Sum+A(I)ENDDOAV=Sum/N;write(*,110)Smax,Smin,AVwrite(*,150)DOI=1,Nif(S(I)>AV)rite(*,120)num(I),name(I),s(I)ENDDO100Format(A,F8.1,A)110 Format(1x,‘H=’,F3.0,‘L=’,F3.0,‘A=’,F3.0)120 Format(1X,2A10,F8.1)150Format(1x,‘No’,8x,‘Name’,8x,‘Score’)ENDppt課件數(shù)理統(tǒng)計:輸入20個學(xué)生的學(xué)號、姓名和一門功課的成績,打印出37數(shù)組程序舉例例1:輸入20名學(xué)生的成績,統(tǒng)計各分?jǐn)?shù)段人數(shù)。分?jǐn)?shù)段為:0~9,10~19,20~29,….90~99,100 c(0),c(1),c(2),c(9),c(10)輸入一個成績G,需要進(jìn)行下列判斷:DOI=0,10IF(I*10.LE.G.AND.G.LT.(I+1)*10)C(I)=C(I)+1END成績G和數(shù)組C的下標(biāo)K有下列關(guān)系 K=G/10程序為:ppt課件數(shù)組程序舉例ppt課件38Real,dimension(1:20)::GINTEGERC(0:10),KC=0DOI=1,20READ*,G(I)K=G(I)/10C(K)=C(K)+1ENDDOPRINT*,(C(I),I=0,10)ENDppt課件Real,dimension(1:20)::Gppt課件39例2:輸入20名學(xué)生的學(xué)號和一門課的成績,統(tǒng)計不及格的人數(shù),并把不及格的學(xué)生學(xué)號和成績打印出來。數(shù)組NUM存放學(xué)號,數(shù)組G存放成績CHARACTER*10NUM(20)REALG(20)DOI=1,20READ*,NUM(I),G(I)ENDDON=0DOI=1,20IF(G(I).LT.60)THENN=N+1;PRINT*,NUM(I),G(I)ENDDOENDppt課件例2:輸入20名學(xué)生的學(xué)號和一門課的成績,統(tǒng)計不及格的人數(shù),40例3:順序查找A:537112091811X=11下列程序段用來查找數(shù)組A中是否包含XP=1DOWHILE(A(P).NE.X.AND.P.LT.N) P=P+1ENDDO在二種情況下退出循環(huán):(1)A(P)=X;此時在A中找到X(2)P=N;即X與A(1),A(2),..A(N-1)均不相同,還要判斷與A(N)是否相等,由于此時P=N,即要判斷X與A(P)是否相等。程序為:ppt課件例3:順序查找ppt課件41Parameter(n=20)Integer,dimension(1:n)::aIntegerx,pRead*,(a(I),I=1,n)Read*,xP=1Dowhile(a(p).ne.x.and.p.lt.n) p=p+1EnddoIf(x.eq.a(p))thenprint*,’在數(shù)組A中找到’,X,’位置為’,PELSEprint*,’在數(shù)組A沒有找到’,XENDIFENDppt課件Parameter(n=20)42例4:在一有序數(shù)列中,插入一數(shù),使插 PARAMETER(N=30)入后的數(shù)列仍然有序. INTEGERA(N) A3,5,11,22,28,56,76,88 READ*,N1X=45 READ*,(A(I),I=1,N1)第一步,先找插入的位置P READ*,XP=1 P=1DOWHILE(X.GT.A(P).AND.P.LE.N1) DOWHILE(X.GT.A(P).AND.P.LE.N1) P=P+1 P=P+1ENDDO ENDDO第二步,完成插入 DOI=N1,P,-1DOI=N1,P,-1 A(I+1)=A(I)A(I+1)=A(I) ENDDO;A

溫馨提示

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

評論

0/150

提交評論