FORTRAN90第七章字符数据处理课件_第1页
FORTRAN90第七章字符数据处理课件_第2页
FORTRAN90第七章字符数据处理课件_第3页
FORTRAN90第七章字符数据处理课件_第4页
FORTRAN90第七章字符数据处理课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FORTRAN90第七章字符数据处理7 字符字符数据处理数据处理=7.1 字符型字符型数据数据=7.2 字符型字符型数据的运算数据的运算=7.3 字符子串字符子串=7.4 字符型字符型数据的应用举例数据的应用举例FORTRAN90第七章字符数据处理一个字符在内存中占一个字节。一个字符在内存中占一个字节。7.1 字符型字符型数据数据7.1.1 字符型常量字符型常量字符型常量字符型常量是用定界符括起来的一串字符。是用定界符括起来的一串字符。定界符可用单引号或双引号定界符可用单引号或双引号,但前后必须一致。但前后必须一致。FORTRAN90第七章字符数据处理7.1.1 字符型常量字符型常量字符型符号

2、常量字符型符号常量:可用可用parameter属性给字符串属性给字符串命名命名,此名称就是字符型符号常量此名称就是字符型符号常量,因为是常量因为是常量,当然不能在程序中给它赋值。当然不能在程序中给它赋值。给字符型符号常量时给字符型符号常量时,其长度可用其长度可用*表示。表示。Character(20),Parameter: Addr=“Hefei Character(*),Parameter: Book=RedStar7.1.2 字符型变量字符型变量字符型变量用于存放字符型常量。必须先定义字符型变量用于存放字符型常量。必须先定义定义格式定义格式Character(Len=字符串长度字符串长度)

3、:变量名变量名,变量名变量名FORTRAN90第七章字符数据处理7.1.2 字符型变量字符型变量Len=可以不写可以不写,当长度为当长度为1时可以连时可以连()也没有。也没有。如果变量表中有长度不同于如果变量表中有长度不同于Len=域指定的变量域指定的变量,可以对它进行个别说明可以对它进行个别说明,以个别说明为准。以个别说明为准。Character(20):ch1,ch2,ch3*15,ch4*1,ch5*12Character c1,c2,c3character(20) s1,s2,s3*3还可以定义字符型数组还可以定义字符型数组character(20) c1(3),c2(5,6),c3(

4、4,5)*8character(20):s1(3),t2(5,6),u(4,5)*8FORTRAN90第七章字符数据处理7.1.3 字符型变量的赋值字符型变量的赋值格式:格式:字符变量字符变量=字符表达式字符表达式当当字符表达式字符表达式的长度超过字符变量的长度时的长度超过字符变量的长度时字字符表达式符表达式右边多余字符会丢掉右边多余字符会丢掉,相反相反,当当字符表达字符表达式式的长度短于字符变量的长度时则在右边补空的长度短于字符变量的长度时则在右边补空格。以字符变量的长度为准。格。以字符变量的长度为准。character(20) s1,s2s1=“ABCDEFGHHIJKL.s2=“1224

5、WEFWE还可以将整型表达式赋给字符变量还可以将整型表达式赋给字符变量Character(20) aa=65*256+66;print *,a;End !输出为输出为BAFORTRAN90第七章字符数据处理7.1.4 字符型变量的输入与输出字符型变量的输入与输出用表控格式输入字符型数据时要带定界符用表控格式输入字符型数据时要带定界符,格式格式化输入时不要带定界符。化输入时不要带定界符。用表控格式输出字符型数据时用表控格式输出字符型数据时,各字符串依次输各字符串依次输出出,中间不留空格中间不留空格;如果想要分隔如果想要分隔,则应在输出列则应在输出列表中插入选定使用的分隔符。表中插入选定使用的分隔

6、符。格式化输出是由格式编辑符控制的。格式化输出是由格式编辑符控制的。FORTRAN90第七章字符数据处理7.1.5 字符型变量作虚参字符型变量作虚参字符型变量作过程的虚参时字符型变量作过程的虚参时,可定义其为固定长可定义其为固定长度变量或假定长度变量。一般建议用假定长度度变量或假定长度变量。一般建议用假定长度变量较好。用固定长度变量时变量较好。用固定长度变量时,其实际长度与实其实际长度与实参的长度可以相同也可以不同参的长度可以相同也可以不同,这可能会导致比这可能会导致比较隐蔽的错误较隐蔽的错误,应该引起注意。应该引起注意。Character (20) a,b,c call sub(a,b,c)

7、 endSubroutine sub(a,b,c)Character(10) a,b*(*),c*20End subroutine subFORTRAN90第七章字符数据处理7.2.1 字符表达式字符表达式7.2 字符型字符型数据运算数据运算字符型数据的运算符只有字符连接符字符型数据的运算符只有字符连接符/一种一种,也也称加法运算称加法运算,与字符型数据组成与字符型数据组成字符表达式字符表达式,将将两个字符型数据连接起来。两个字符型数据连接起来。Character *20 c,a*4,b*5a= Thisb= isac=a/b/ testc=a(1:3)/b(:2)/c(5:8)/OKPrin

8、t *,cEND结果为:结果为:thiisisaokFORTRAN90第七章字符数据处理7.2.1 字符表达式字符表达式8.2 字符型字符型数据运算数据运算两个形状相同的字符型数组的加法运算是将两个形状相同的字符型数组的加法运算是将两个数组的对应元素相加两个数组的对应元素相加(字符串的连接字符串的连接),得到得到一个新的数组。例如:一个新的数组。例如:Character(3),dimension(2):text_1=(/abc,123/) Character(3),dimension(2):text_2=(/xyz,456/)Print*, text_1/ text_2End结果为:结果为:

9、abcxyz123456FORTRAN90第七章字符数据处理7.2.2 字符型数据的比较字符型数据的比较两个字符串可以比较两个字符串可以比较,也可用六种关系运算符也可用六种关系运算符: str.GT.char1 str2=a1 st/=name字符串的比较实际上是比较字符的机内码字符串的比较实际上是比较字符的机内码字符关系运算法则字符关系运算法则: 单个字符比较单个字符比较,代码大者为代码大者为“大大”: b a 比较字符串时比较字符串时,如果两个字符串长度不等如果两个字符串长度不等, 则首先用空格把短串尾部补齐则首先用空格把短串尾部补齐,使两字符串使两字符串 等长等长;从第从第1个字符开始依

10、次比较每个字符个字符开始依次比较每个字符, 字符大者其所在字符串为字符大者其所在字符串为大大;所有字符都相所有字符都相 等的两个字符串等的两个字符串相等相等。FORTRAN90第七章字符数据处理 统计字符串长度统计字符串长度:LEN(S)7.2.3 处理字符串的系统函数处理字符串的系统函数 给出字符串给出字符串S2在在S1中的位置中的位置: INDEX(S1,S2)S1,S2为字符串。为字符串。 例例:INDEX(FORTRAN,TRA) 函数值是整数值函数值是整数值,此处是此处是4。 求求ASCII码的对应字符码的对应字符:char(I) I 为为ASCII 例例: CHAR(65) 函数值

11、是函数值是AFORTRAN90第七章字符数据处理7.2.3 处理字符串的系统函数处理字符串的系统函数 求字符求字符ASCII码码: 如果字符型变量如果字符型变量CH的值为的值为A,则则ICHAR(CH) 函数值是函数值是65。字符串比较字符串比较: LGE(C1,C2),LGT(C1,C2), LLE(C1,C2)与与 LLT(C1,C2)FORTRAN90提供的字符串处理函数比较多提供的字符串处理函数比较多,实际编程时可参考编辑器的实际编程时可参考编辑器的On_Line_Help系系统。统。 FORTRAN90第七章字符数据处理字符串中连续之部分称为该字符串的子字符字符串中连续之部分称为该字

12、符串的子字符串。例串。例: ORT, RAN P, rog, Program都都是字符串是字符串FORTRAN Program的子字符串。的子字符串。 字符串字符串str的子字符串用的子字符串用str(s:e)表示表示,s与与e为为子字符串在原字符串中的起止位置。子字符串在原字符串中的起止位置。str(1:5)表表示示str 的第的第1到第到第5个字符。个字符。s的缺省值是的缺省值是1,e的缺的缺省值是字符串的长度省值是字符串的长度;当当se时时,子字符串是空串。子字符串是空串。7.3 字符子串字符子串7.3.1 字符子串的定义字符子串的定义FORTRAN90第七章字符数据处理7.3.2 字符

13、子串的引用字符子串的引用7.3.3 字符数组的子串字符数组的子串 字符型数组或数组片段的子串是指其每一个数组元素的子串。字符型数组或数组片段的子串是指其每一个数组元素的子串。Character(10) A(6)A(1)=1234567890; A(2)= abcdefghijPrint*,A(1:2)(3:5);END结果为:结果为:345cde可以将一个子串赋给另一个子串,例如:可以将一个子串赋给另一个子串,例如:Chrracter str*20Str=1234567890abcdefghijStr(4:6)=str(11:12)Print*,strEnd结果为:结果为:123ab7890a

14、bcdefghijFORTRAN90第七章字符数据处理Character(80) A; Integer m,nReal :PI=3.14159265,DX,XDX = pi*0.05;X=0;m = int(pi/dx+0.5*dx)+1Do L=1,Mwrite(a,(1X,F4.2) Xn = int(25*sin(x)+40a(40:40) = :;a(n:n) = Sn = int(25*cos(x)+40;a(n:n) = cprint (A), a;x = x+dxEnddo;End7.4 字符型数据的应用举例字符型数据的应用举例例例:用用字符串方式输出字符串方式输出sin(x)与

15、与cos(x)的图像的图像FORTRAN90第七章字符数据处理Character(LEN=80) A,c*1Integer s,eread (A), Ae = LEN(A); s = 1do while(s = e) c = A(S:S); A(S:S) = A(E:E); A(E:E)=c e = e-1; s = s+1enddoprint (1X,A), aEnd例例:字符串的逆序串字符串的逆序串FORTRAN90第七章字符数据处理例:输入例:输入50个单词,把以字母个单词,把以字母A开头的打印出来。开头的打印出来。Character*15 wordDo I=1,50Read*,word

16、If(index(word,A)=1)PRINT*,WORDEND DOEND上式中上式中index(word,A)=1可改为:可改为: word(1:1)=AFORTRAN90第七章字符数据处理例:打印下列图形例:打印下列图形,要求中间一列在要求中间一列在30列输出列输出* * * * * * * * * * * * * * * * * * *上半部(四行)的图形可用上半部(四行)的图形可用下列程序段实现下列程序段实现Do I=1,4Line= K=2*I-1Do J=1,kline(30+j-I: 30+j-I)=*End doPrint*,lineEnd do下半部(三行)的图形可下半部

17、(三行)的图形可用下列程序段实现用下列程序段实现Do I=3, 1,-1Line= K=2*I-1Do J=1,kline(30+j-I: 30+j-I)=*enddoPrint*,lineEnd do程序为:程序为:Character*50 line上半部程序段上半部程序段下半部程序段下半部程序段end FORTRAN90第七章字符数据处理例:输入一段文字,找出包含多少个空格,然后将空格删除。例:输入一段文字,找出包含多少个空格,然后将空格删除。(1)下列子程序是)下列子程序是求求删除一字符串所删除一字符串所有空格后的字符串及其长度有空格后的字符串及其长度:SUBROUTINE SUB(ST

18、R,L)CHARACTER*(*)STRinteger pL=LEN(TRIM(STR)p=1do while(pL)if(str(p:p)/= )then p=p+1elsestr(p:L-1)=STR(P+1:L) L=L-1END IFEND DOEND SUBROUTINE SUB(2)主程序为:主程序为:CHARACTER*80 lineInteger: m,n=0Read*,kDo I=1,kRead*,lineCall sub(line,m)Print*,line(1:m)N=n+(80-m)End doendFORTRAN90第七章字符数据处理例:输入十个姓名,要求按字母顺序输出例:输入十个姓名,要求按字母顺序输出程序为:程序为:Parameter(n=10)Character*15 a(n),chRead*,aDo I=1,n-1 P=I do j=I+1,n if(a(j)a(p)p=jEnd do ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论