FORTRAN90第七章 字符数据处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 结果为: 结果为:thiisis□aok□□□□□□□□□ □ □□□□□□□□□
字符型数据运算 §8.2 字符型数据运算 §7.2.1 字符表达式
§7.3.2 字符子串的引用
可以将一个子串赋给另一个子串,例如: 可以将一个子串赋给另一个子串,例如: Chrracter str*20 Str=’1234567890abcdefghij’ Str(4:6)=str(11:12) Print*,str End 结果为:123ab□7890abcdefghij 结果为: □
字符数据处理 §7 字符数据处理 字符型数据 §7.1 字符型数据 字符型数据的运算 §7.2 字符型数据的运算 §7.3 字符子串 字符型数据的应用举例 §7.4 字符型数据的应用举例
字符型数据 §7.1 字符型数据
一个字符在内存中占一个字节。 一个字符在内存中占一个字节。
界符可用单引号或双引号,但前后必须一致。 界符可用单引号或双引号 但前后必须一致。 但前后必须一致
§7.4 字符型数据的应用举例 例:用字符串方式输出 用字符串方式输出sin(x)与cos(x)的图像 与 的图像
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.2 字符型数据运算 §7.2.1 字符表达式
字符型数据的运算符只有字符连接符//一种 字符型数据的运算符只有字符连接符 一种, 一种 也称加法运算,与字符型数据组成字符表达式, 与字符型数据组成字符表达式 也称加法运算 与字符型数据组成字符表达式 将两个字符型数据连接起来。 将两个字符型数据连接起来。
要求中间一列在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 End do 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
§7.1.1 字符型常量 是用定界符括起来的一串字符。 字符型常量是用定界符括起来的一串字符。定
§7.1.1 字符型常量
字符型符号常量:可用 字符型符号常量 可用parameter属性给字符 可用 属性给字符 串命名,此名称就是字符型符号常量 此名称就是字符型符号常量,因为是常 串命名 此名称就是字符型符号常量 因为是常 当然不能在程序中给它赋值。 量,当然不能在程序中给它赋值。 当然不能在程序中给它赋值 给字符型符号常量时,其长度可用 表示。 其长度可用*表示 给字符型符号常量时 其长度可用 表示。 Character(20),Parameter:: Addr=“Hefei" Character(*),Parameter:: Book="RedStar"
§7.2.3 处理字符串的系统函数 统计字符串长度:LEN(S) 统计字符串长度
给出字符串S2在 中的位置 中的位置: 给出字符串 在S1中的位置 INDEX(S1,S2)S1,S2为字符串。 为字符串。 为字符串 例:INDEX(‘FORTRAN’,‘TRA’) 函数值是整数值,此处是 。 函数值是整数值 此处是4。 此处是 求ASCII码的对应字符 码的对应字符:char(I) I 为ASCII 码的对应字符 函数值是‘ 例: CHAR(65) 函数值是‘A’
例:字符串的逆序串 字符串的逆序串
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
§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.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.3 处理字符串的系统函数
求字符ASCII码: 如果字符型变量 的值为 码 如果字符型变量CH的值为 求字符 函数值是65。 ‘A’,则ICHAR(CH) 函数值是 。 则 字符串比较: 字符串比较 LGE(C1,C2),LGT(C1,C2), LLE(C1,C2)与 与 LLT(C1,C2) FORTRAN90提供的字符串处理函数比较多 提供的字符串处理函数比较多, 提供的字符串处理函数比较多 实际编程时可参考编辑器的On_Line_Help系 实际编程时可参考编辑器的 系 统。
个单词, 开头的打印出来。 例:输入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’
§7.1.4 字符型变量的输入与输出
用表控格式输入字符型数据时要带定界符,格 用表控格式输入字符型数据时要带定界符 格 式化输入时不要带定界符。 式化输入时不要带定界符。 用表控格式输出字符型数据时,各字符串依次 用表控格式输出字符型数据时 各字符串依次 输出,中间不留空格 如果想要分隔,则应在输出 中间不留空格;如果想要分隔 输出 中间不留空格 如果想要分隔 则应在输出 列表中插入选定使用的分隔符。 列表中插入选定使用的分隔符。 格式化输出是由格式编辑符控制的。 格式化输出是由格式编辑符控制的。
§7.3.3 字符数组的子串
字符型数组或数组片段的子串是指其每一个数组元素的子串。 字符型数组或数组片段的子串是指其每一个数组元素的子串。 Character(10) A(6) A(1)="1234567890"; A(2)= 'abcdefghij' Print*,A(1:2)(3:5);END 结果为: 结果为:345cde
§7.3 字符子串 §7.3.1 字符子串的定义
字符串中连续之部分称为该字符串的子字符 串。例: ‘ORT’, ‘RAN P’, ‘rog’, ‘Program’都 都 是字符串‘ 的子字符串。 是字符串‘FORTRAN Program‘的子字符串。 的子字符串 字符串str的子字符串用 表示,s与 字符串 的子字符串用str([s]:[e])表示 与 e 的子字符串用 表示 为子字符串在原字符串中的起止位置。 为子字符串在原字符串中的起止位置。str(1:5) 表示str 的第 到第 个字符。s的缺省值是 的 的第1到第 个字符。 的缺省值是 到第5个字符 的缺省值是1,e的 表示 缺省值是字符串的长度;当 时 子字符串是空 缺省值是字符串的长度 当s>e时,子字符串是空 串。
两个形状相同的字符型数组的加法运算是将 两个数组的对应元素相加(字符串的连接 字符串的连接),得到 两个数组的对应元素相加 字符串的连接 得到 一个新的数组。例如: 一个新的数组。例如:
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个字符开始依次比较每个字符 等长 从第 个字符开始依次比较每个字符 字符大者其所在字符串为大 所有字符都相 字符大者其所在字符串为大;所有字符都相 等的两个字符串相等 相等。 等的两个字符串相等。
相关文档
最新文档