FORTRAN90第七章字符數(shù)據(jù)處理.ppt
《FORTRAN90第七章字符數(shù)據(jù)處理.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《FORTRAN90第七章字符數(shù)據(jù)處理.ppt(20頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
§7 字符數(shù)據(jù)處理,§7.1 字符型數(shù)據(jù) §7.2 字符型數(shù)據(jù)的運(yùn)算 §7.3 字符子串 §7.4 字符型數(shù)據(jù)的應(yīng)用舉例,一個(gè)字符在內(nèi)存中占一個(gè)字節(jié)。,§7.1 字符型數(shù)據(jù),§7.1.1 字符型常量 字符型常量是用定界符括起來(lái)的一串字符。定界符可用單引號(hào)或雙引號(hào),但前后必須一致。,§7.1.1 字符型常量,字符型符號(hào)常量:可用parameter屬性給字符串命名,此名稱(chēng)就是字符型符號(hào)常量,因?yàn)槭浅A?當(dāng)然不能在程序中給它賦值。 給字符型符號(hào)常量時(shí),其長(zhǎng)度可用*表示。 Character(20),Parameter:: Addr=“Hefei“ Character(*),Parameter:: Book=“RedStar“,§7.1.2 字符型變量,字符型變量用于存放字符型常量。必須先定義 定義格式 Character([Len=]字符串長(zhǎng)度)::變量名[,變量名],§7.1.2 字符型變量,Len=可以不寫(xiě),當(dāng)長(zhǎng)度為1時(shí)可以連()也沒(méi)有。 如果變量表中有長(zhǎng)度不同于Len=域指定的變量,可以對(duì)它進(jìn)行個(gè)別說(shuō)明,以個(gè)別說(shuō)明為準(zhǔn)。 Character(20)::ch1,ch2,ch3*15,ch4*1,ch5*12 Character c1,c2,c3 character(20) s1,s2,s3*3,還可以定義字符型數(shù)組 character(20) c1(3),c2(5,6),c3(4,5)*8 character(20)::s1(3),t2(5,6),u(4,5)*8,§7.1.3 字符型變量的賦值,格式:字符變量=字符表達(dá)式,當(dāng)字符表達(dá)式的長(zhǎng)度超過(guò)字符變量的長(zhǎng)度時(shí)字符表達(dá)式右邊多余字符會(huì)丟掉,相反,當(dāng)字符表達(dá)式的長(zhǎng)度短于字符變量的長(zhǎng)度時(shí)則在右邊補(bǔ)空格。以字符變量的長(zhǎng)度為準(zhǔn)。 character(20) s1,s2 s1=“ABCDEFGHHIJKL.“ s2=“1224WEFWE“,還可以將整型表達(dá)式賦給字符變量 Character(20) a a=65*256+66;print *,a;End !輸出為BA,§7.1.4 字符型變量的輸入與輸出,用表控格式輸入字符型數(shù)據(jù)時(shí)要帶定界符,格式化輸入時(shí)不要帶定界符。,用表控格式輸出字符型數(shù)據(jù)時(shí),各字符串依次輸出,中間不留空格;如果想要分隔,則應(yīng)在輸出列表中插入選定使用的分隔符。,格式化輸出是由格式編輯符控制的。,§7.1.5 字符型變量作虛參,字符型變量作過(guò)程的虛參時(shí),可定義其為固定長(zhǎng)度變量或假定長(zhǎng)度變量。一般建議用假定長(zhǎng)度變量較好。用固定長(zhǎng)度變量時(shí),其實(shí)際長(zhǎng)度與實(shí)參的長(zhǎng)度可以相同也可以不同,這可能會(huì)導(dǎo)致比較隱蔽的錯(cuò)誤,應(yīng)該引起注意。,Character (20) a,b,c call sub(a,b,c) end Subroutine sub(a,b,c) Character(10) a,b*(*),c*20 End subroutine sub,§7.2.1 字符表達(dá)式,§7.2 字符型數(shù)據(jù)運(yùn)算,字符型數(shù)據(jù)的運(yùn)算符只有字符連接符//一種,也稱(chēng)加法運(yùn)算,與字符型數(shù)據(jù)組成字符表達(dá)式,將兩個(gè)字符型數(shù)據(jù)連接起來(lái)。 Character *20 c,a*4,b*5 a= “This“ b= “is□a“ c=a//b//“ test“ c=a(1:3)//b(:2)//c(5:8)//“OK“ Print *,c END 結(jié)果為:thiisis□aok□□□□□□□□□,§7.2.1 字符表達(dá)式,§8.2 字符型數(shù)據(jù)運(yùn)算,兩個(gè)形狀相同的字符型數(shù)組的加法運(yùn)算是將兩個(gè)數(shù)組的對(duì)應(yīng)元素相加(字符串的連接),得到一個(gè)新的數(shù)組。例如: Character(3),dimension(2)::text_1=(/’abc’,’123’/) Character(3),dimension(2)::text_2=(/’xyz’,’456’/) Print*, text_1// text_2 End 結(jié)果為: abcxyz123456,§7.2.2 字符型數(shù)據(jù)的比較,兩個(gè)字符串可以比較,也可用六種關(guān)系運(yùn)算符: str.GT.char1 str2==a1 st/=name 字符串的比較實(shí)際上是比較字符的機(jī)內(nèi)碼 字符關(guān)系運(yùn)算法則: 單個(gè)字符比較,代碼大者為“大”: ‘b’ ‘a(chǎn)’ 比較字符串時(shí),如果兩個(gè)字符串長(zhǎng)度不等, 則首先用空格把短串尾部補(bǔ)齊,使兩字符串 等長(zhǎng);從第1個(gè)字符開(kāi)始依次比較每個(gè)字符, 字符大者其所在字符串為大;所有字符都相 等的兩個(gè)字符串相等。,統(tǒng)計(jì)字符串長(zhǎng)度:LEN(S),§7.2.3 處理字符串的系統(tǒng)函數(shù),給出字符串S2在S1中的位置: INDEX(S1,S2)S1,S2為字符串。 例:INDEX(‘FORTRAN’,‘TRA’) 函數(shù)值是整數(shù)值,此處是4。,求ASCII碼的對(duì)應(yīng)字符:char(I) I 為ASCII 例: CHAR(65) 函數(shù)值是‘A’,§7.2.3 處理字符串的系統(tǒng)函數(shù),求字符ASCII碼: 如果字符型變量CH的值為‘A’,則ICHAR(CH) 函數(shù)值是65。,字符串比較: LGE(C1,C2),LGT(C1,C2), LLE(C1,C2)與 LLT(C1,C2),FORTRAN90提供的字符串處理函數(shù)比較多,實(shí)際編程時(shí)可參考編輯器的On_Line_Help系統(tǒng)。,字符串中連續(xù)之部分稱(chēng)為該字符串的子字符串。例: ‘ORT’, ‘RAN P’, ‘rog’, ‘Program’都是字符串‘FORTRAN Program‘的子字符串。,字符串str的子字符串用str([s]:[e])表示,s與e為子字符串在原字符串中的起止位置。str(1:5)表示str 的第1到第5個(gè)字符。s的缺省值是1,e的缺省值是字符串的長(zhǎng)度;當(dāng)se時(shí),子字符串是空串。,§7.3 字符子串,§7.3.1 字符子串的定義,§7.3.2 字符子串的引用,§7.3.3 字符數(shù)組的子串,字符型數(shù)組或數(shù)組片段的子串是指其每一個(gè)數(shù)組元素的子串。 Character(10) A(6) A(1)=“1234567890“; A(2)= 'abcdefghij' Print*,A(1:2)(3:5);END 結(jié)果為:345cde,可以將一個(gè)子串賦給另一個(gè)子串,例如: Chrracter str*20 Str=’1234567890abcdefghij’ Str(4:6)=str(11:12) Print*,str End 結(jié)果為:123ab□7890abcdefghij,Character(80) A; Integer m,n Real ::PI=3.14159265,DX,X DX = pi*0.05;X=0;m = int(pi/dx+0.5*dx)+1 Do L=1,M write(a,'(1X,F4.2)') X n = int(25*sin(x))+40 a(40:40) = “:“;a(n:n) = 'S' n = int(25*cos(x))+40;a(n:n) = 'c' print '(A)', a;x = x+dx Enddo;End,§7.4 字符型數(shù)據(jù)的應(yīng)用舉例,例:用字符串方式輸出sin(x)與cos(x)的圖像,Character(LEN=80) A,c*1 Integer s,e read '(A)', A e = LEN(A); s = 1 do while(s = e) c = A(S:S); A(S:S) = A(E:E); A(E:E)=c e = e-1; s = s+1 enddo print '(1X,A)', a End,例:字符串的逆序串,,例:輸入50個(gè)單詞,把以字母A開(kāi)頭的打印出來(lái)。 Character*15 word Do I=1,50 Read*,word If(index(word,’A’)==1)PRINT*,WORD END DO END 上式中index(word,’A’)==1可改為: word(1:1)==’A’,例:打印下列圖形,要求中間一列在30列輸出,* * * * * * * * * * * * * * * * * * * * * * * * *,,,上半部(四行)的圖形可用下列程序段實(shí)現(xiàn) Do I=1,4 Line=’ ’ K=2*I-1 Do J=1,k line(30+j-I: 30+j-I)=’*’ End do Print*,line End do,下半部(三行)的圖形可用下列程序段實(shí)現(xiàn) Do I=3, 1,-1 Line=’ ’ K=2*I-1 Do J=1,k line(30+j-I: 30+j-I)=’*’ enddo Print*,line End do,程序?yàn)椋?Character*50 line 上半部程序段 下半部程序段 end,例:輸入一段文字,找出包含多少個(gè)空格,然后將空格刪除。,(1)下列子程序是求刪除一字符串所有空格后的字符串及其長(zhǎng)度: SUBROUTINE SUB(STR,L) CHARACTER*(*)STR integer p L=LEN(TRIM(STR)) p=1 do while(pL) if(str(p:p)/=’ ’)then p=p+1 else str(p:L-1)=STR(P+1:L) L=L-1 END IF END DO END SUBROUTINE SUB,(2)主程序?yàn)椋?CHARACTER*80 line Integer:: m,n=0 Read*,k Do I=1,k Read*,line Call sub(line,m) Print*,line(1:m) N=n+(80-m) End do end,例:輸入十個(gè)姓名,要求按字母順序輸出,程序?yàn)椋?Parameter(n=10) Character*15 a(n),ch Read*,a Do I=1,n-1 P=I do j=I+1,n if(a(j)a(p))p=j End do ch=a(p) a(p)=a(I) a(I)=ch End do,Print*,a end,思考題(上機(jī)操作): 輸入十個(gè)姓名,要求按實(shí)際包含的字母?jìng)€(gè)數(shù)多少的順序輸出。 提示: (1)編寫(xiě)一子程序,求刪除所有空格后的字符串實(shí)際包含的字母?jìng)€(gè)數(shù)。 (2)定義一整型數(shù)組,用來(lái)存放每個(gè)姓名實(shí)際包含的字母?jìng)€(gè)數(shù)。 (3)在對(duì)整型數(shù)組排序的同時(shí),交換字符型數(shù)組元素的值。,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- FORTRAN90 第七 字符 數(shù)據(jù)處理
鏈接地址:http://www.szxfmmzy.com/p-2016027.html