FORTRAN90第七章字符數(shù)據(jù)處理.ppt
《FORTRAN90第七章字符數(shù)據(jù)處理.ppt》由會員分享,可在線閱讀,更多相關(guān)《FORTRAN90第七章字符數(shù)據(jù)處理.ppt(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
§7 字符數(shù)據(jù)處理,§7.1 字符型數(shù)據(jù) §7.2 字符型數(shù)據(jù)的運算 §7.3 字符子串 §7.4 字符型數(shù)據(jù)的應(yīng)用舉例,一個字符在內(nèi)存中占一個字節(jié)。,§7.1 字符型數(shù)據(jù),§7.1.1 字符型常量 字符型常量是用定界符括起來的一串字符。定界符可用單引號或雙引號,但前后必須一致。,§7.1.1 字符型常量,字符型符號常量:可用parameter屬性給字符串命名,此名稱就是字符型符號常量,因為是常量,當(dāng)然不能在程序中給它賦值。 給字符型符號常量時,其長度可用*表示。 Character(20),Parameter:: Addr=“Hefei“ Character(*),Parameter:: Book=“RedStar“,§7.1.2 字符型變量,字符型變量用于存放字符型常量。必須先定義 定義格式 Character([Len=]字符串長度)::變量名[,變量名],§7.1.2 字符型變量,Len=可以不寫,當(dāng)長度為1時可以連()也沒有。 如果變量表中有長度不同于Len=域指定的變量,可以對它進(jìn)行個別說明,以個別說明為準(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á)式的長度超過字符變量的長度時字符表達(dá)式右邊多余字符會丟掉,相反,當(dāng)字符表達(dá)式的長度短于字符變量的長度時則在右邊補空格。以字符變量的長度為準(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ù)據(jù)時,各字符串依次輸出,中間不留空格;如果想要分隔,則應(yīng)在輸出列表中插入選定使用的分隔符。,格式化輸出是由格式編輯符控制的。,§7.1.5 字符型變量作虛參,字符型變量作過程的虛參時,可定義其為固定長度變量或假定長度變量。一般建議用假定長度變量較好。用固定長度變量時,其實際長度與實參的長度可以相同也可以不同,這可能會導(dǎo)致比較隱蔽的錯誤,應(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ù)運算,字符型數(shù)據(jù)的運算符只有字符連接符//一種,也稱加法運算,與字符型數(shù)據(jù)組成字符表達(dá)式,將兩個字符型數(shù)據(jù)連接起來。 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ù)運算,兩個形狀相同的字符型數(shù)組的加法運算是將兩個數(shù)組的對應(yīng)元素相加(字符串的連接),得到一個新的數(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ù)的比較,兩個字符串可以比較,也可用六種關(guān)系運算符: str.GT.char1 str2==a1 st/=name 字符串的比較實際上是比較字符的機內(nèi)碼 字符關(guān)系運算法則: 單個字符比較,代碼大者為“大”: ‘b’ ‘a(chǎn)’ 比較字符串時,如果兩個字符串長度不等, 則首先用空格把短串尾部補齊,使兩字符串 等長;從第1個字符開始依次比較每個字符, 字符大者其所在字符串為大;所有字符都相 等的兩個字符串相等。,統(tǒng)計字符串長度:LEN(S),§7.2.3 處理字符串的系統(tǒng)函數(shù),給出字符串S2在S1中的位置: INDEX(S1,S2)S1,S2為字符串。 例:INDEX(‘FORTRAN’,‘TRA’) 函數(shù)值是整數(shù)值,此處是4。,求ASCII碼的對應(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ù)比較多,實際編程時可參考編輯器的On_Line_Help系統(tǒng)。,字符串中連續(xù)之部分稱為該字符串的子字符串。例: ‘ORT’, ‘RAN P’, ‘rog’, ‘Program’都是字符串‘FORTRAN Program‘的子字符串。,字符串str的子字符串用str([s]:[e])表示,s與e為子字符串在原字符串中的起止位置。str(1:5)表示str 的第1到第5個字符。s的缺省值是1,e的缺省值是字符串的長度;當(dāng)se時,子字符串是空串。,§7.3 字符子串,§7.3.1 字符子串的定義,§7.3.2 字符子串的引用,§7.3.3 字符數(shù)組的子串,字符型數(shù)組或數(shù)組片段的子串是指其每一個數(shù)組元素的子串。 Character(10) A(6) A(1)=“1234567890“; A(2)= 'abcdefghij' Print*,A(1:2)(3:5);END 結(jié)果為:345cde,可以將一個子串賦給另一個子串,例如: 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個單詞,把以字母A開頭的打印出來。 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列輸出,* * * * * * * * * * * * * * * * * * * * * * * * *,,,上半部(四行)的圖形可用下列程序段實現(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,下半部(三行)的圖形可用下列程序段實現(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,程序為: Character*50 line 上半部程序段 下半部程序段 end,例:輸入一段文字,找出包含多少個空格,然后將空格刪除。,(1)下列子程序是求刪除一字符串所有空格后的字符串及其長度: 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)主程序為: 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,例:輸入十個姓名,要求按字母順序輸出,程序為: 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,思考題(上機操作): 輸入十個姓名,要求按實際包含的字母個數(shù)多少的順序輸出。 提示: (1)編寫一子程序,求刪除所有空格后的字符串實際包含的字母個數(shù)。 (2)定義一整型數(shù)組,用來存放每個姓名實際包含的字母個數(shù)。 (3)在對整型數(shù)組排序的同時,交換字符型數(shù)組元素的值。,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- FORTRAN90 第七 字符 數(shù)據(jù)處理
鏈接地址:http://www.3dchina-expo.com/p-2016027.html