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

下载本文档

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

文档简介

7 字符数据处理,7.1 字符型数据 7.2 字符型数据的运算 7.3 字符子串 7.4 字符型数据的应用举例,一个字符在内存中占一个字节。,7.1 字符型数据,7.1.1 字符型常量 字符型常量是用定界符括起来的一串字符。定界符可用单引号或双引号,但前后必须一致。,7.1.1 字符型常量,字符型符号常量:可用parameter属性给字符串命名,此名称就是字符型符号常量,因为是常量,当然不能在程序中给它赋值。 给字符型符号常量时,其长度可用*表示。 Character(20),Parameter: Addr=“Hefei“ Character(*),Parameter: Book=“RedStar“,7.1.2 字符型变量,字符型变量用于存放字符型常量。必须先定义 定义格式 Character(Len=字符串长度):变量名,变量名,7.1.2 字符型变量,Len=可以不写,当长度为1时可以连()也没有。 如果变量表中有长度不同于Len=域指定的变量,可以对它进行个别说明,以个别说明为准。 Character(20):ch1,ch2,ch3*15,ch4*1,ch5*12 Character c1,c2,c3 character(20) s1,s2,s3*3,还可以定义字符型数组 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 字符型变量的赋值,格式:字符变量=字符表达式,当字符表达式的长度超过字符变量的长度时字符表达式右边多余字符会丢掉,相反,当字符表达式的长度短于字符变量的长度时则在右边补空格。以字符变量的长度为准。 character(20) s1,s2 s1=“ABCDEFGHHIJKL.“ s2=“1224WEFWE“,还可以将整型表达式赋给字符变量 Character(20) a a=65*256+66;print *,a;End !输出为BA,7.1.4 字符型变量的输入与输出,用表控格式输入字符型数据时要带定界符,格式化输入时不要带定界符。,用表控格式输出字符型数据时,各字符串依次输出,中间不留空格;如果想要分隔,则应在输出列表中插入选定使用的分隔符。,格式化输出是由格式编辑符控制的。,7.1.5 字符型变量作虚参,字符型变量作过程的虚参时,可定义其为固定长度变量或假定长度变量。一般建议用假定长度变量较好。用固定长度变量时,其实际长度与实参的长度可以相同也可以不同,这可能会导致比较隐蔽的错误,应该引起注意。,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 字符表达式,7.2 字符型数据运算,字符型数据的运算符只有字符连接符/一种,也称加法运算,与字符型数据组成字符表达式,将两个字符型数据连接起来。 Character *20 c,a*4,b*5 a= “This“ b= “isa“ c=a/b/“ test“ c=a(1:3)/b(:2)/c(5:8)/“OK“ Print *,c END 结果为:thiisisaok,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_2 End 结果为: abcxyz123456,7.2.2 字符型数据的比较,两个字符串可以比较,也可用六种关系运算符: str.GT.char1 str2=a1 st/=name 字符串的比较实际上是比较字符的机内码 字符关系运算法则: 单个字符比较,代码大者为“大”: b a 比较字符串时,如果两个字符串长度不等, 则首先用空格把短串尾部补齐,使两字符串 等长;从第1个字符开始依次比较每个字符, 字符大者其所在字符串为大;所有字符都相 等的两个字符串相等。,统计字符串长度:LEN(S),7.2.3 处理字符串的系统函数,给出字符串S2在S1中的位置: INDEX(S1,S2)S1,S2为字符串。 例:INDEX(FORTRAN,TRA) 函数值是整数值,此处是4。,求ASCII码的对应字符:char(I) I 为ASCII 例: CHAR(65) 函数值是A,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系统。,字符串中连续之部分称为该字符串的子字符串。例: 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 字符子串的定义,7.3.2 字符子串的引用,7.3.3 字符数组的子串,字符型数组或数组片段的子串是指其每一个数组元素的子串。 Character(10) A(6) A(1)=“1234567890“; A(2)= abcdefghij Print*,A(1:2)(3:5);END 结果为:345cde,可以将一个子串赋给另一个子串,例如: Chrracter str*20 Str=1234567890abcdefghij Str(4:6)=str(11:12) Print*,str End 结果为:123ab7890abcdefghij,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 字符型数据的应用举例,例:用字符串方式输出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列输出,* * * * * * * * * * * * * * * * * * * * * * * * *,上半部(四行)的图形可用下列程序段实现 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,下半部(三行)的图形可用下列程序段实现 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论