好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Fortran第8章字符型数据教案资料.ppt

31页
  • 卖家[上传人]:youn****329
  • 文档编号:239542052
  • 上传时间:2022-01-14
  • 文档格式:PPT
  • 文档大小:642.50KB
  • / 31 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Fortran 90Visual Fortran 90 程序设计8.1 字符型数据8.2 字符型数据的运算8.3 字符字串8.4 字符型数据的应用举例Fortran 908.1 字符型数据8.1.1 字符型常量说明(1)字符区分字母大小写 (2)空格为有效字符 (3)字符不受fortran90字符集的限制 (4)单撇号为有效字符时,如起止界为单撇号,则改写为两个单撇号;或起止界用双撇号 (5)长度=0长度为0:由两个连续的撇号表示或写法:一串字符 或 一串字符Fortran 90长度为字符的个数(字节数): 起止界不算 两个单撇号或双撇号算一个 空格为有效字符算一个 一个汉字占两个字节长度计算8.1.2字符型变量(1)字符变量的含义:对应内存一片连续的存储空间(2)字符变量应先说明其类型、长度、名字,再使用Fortran 90Fortran 90长度可为整型表达式,但要加括号例: character(2):a,b*(2+3)有时可把长度值写成一个星号,但要加括号 Character(*):CH,PARA Character(2): CH,PARA*(*)使用范围:(1)具有PARAMETER属性的字符型符号常量 Character(*),parameter:para=FORTRAN_90 字符串长度取对应的字符常量的长度。

      2)用字符变量作为虚元时,虚元的长度取对应实元的长度 虚元可以和任意长度的实元相结合,有利于提高子程序的通用性Fortran 90字符型数组如果具有Dimension属性,就成为字符数组变量例: character(3),dimension(4):a,b*6a的每个元素的长度均为3b的每个元素的长度均为6Fortran 908.3 字符子串子串变量:一个字符变量值中连续的一部分称为字符子串例:已知 A=123456 则 123,456是A的子串子串变量的写法字符变量名(e1:e2) 其中:不可省略 e1和e2为整型表达式,表示起始和终止位置且1=e1=e2 e2,则为空串例:子串变量写法 A(1:3) 123 A(4:5) 45 A(3: 3) 3 A(:4) 1234 A(4:) 456 A(:) 123456Fortran 90数组元素(片段)子串:数组元素(e1:e2)例8-9 阅读下面程序,写出程序运行结果PROGRAM EXAM9IMPLICIT NONECHARACTER(LEN=5),DIMENSION(4):AA=(/12345, ABCDE, 56789, EFGHK/)PRINT*,A(1:4:2)(2:3)END2367Fortran 908.1-8.2 字符表达式与字符赋值语句8.2字符表达式用字符运算符把字符常数、字符变量、字符数组元素等字符型数据连接起来的有意义的式子。

      8.2字符运算符1、字符连接符“/” 功能:将两个字符型数据按顺序首尾连接起来,成为一个新的字符型数据例:abc/def 得 abcdef注意:不满足交换律Fortran 902、关系运算(比较运算): 例:abcada比较规则: 1.两个字符比较时,以它们的ASCII码值决定大小 2.字符串比较:从左到右逐个字符进行比较 若所有字符完全相同,则表达式相等,否则,以第一次出现不等字符的比较结果为准 3.若两个字符串中字符个数不等时,则将较短的字符串后补足空格后再比较 ASCII顺序:空格 0 9 , A Z , a z 32 4857 6590 97122 Fortran 908.1.3字符型赋值语句(1) 写法 :字符变量或子串变量V=字符型表达式e 功能:计算e;转化为V的长度;赋值 例:character : LONG*8 , SHORT*3 LONG=ABCD; SHORT =ABCDEF LONG: SHORT: A B CA B C D长:截取左边 短:右补空格(一左一右) LONG(1:2)=SS 子串赋值不影响其它子串的值注:同一变量名出现在赋值号两侧,有警告错误,但仍可执行。

      错例: NAME=NAME/SUNFortran 908.1.4 字符型数据的输入与输出表控格式输入例如: CHARACTER(5): A,B,C Read *,A,B,C输入: CHINA,NEW,SHANGHAI结果: A值 CHINA ;B值NEW ;C值SHANG注意(1):长度转换同赋值 长:截取左边 短:右补空格(2) :表控格式输入字符型数据时 必须输入用单撇号或双撇号做定界符的字符串 各常量之间应用逗号分隔 Fortran 90用户规定格式输入(1)用字符型编辑符:Aw w是规定的输入宽度. (2)用字符型编辑符:A 宽度w的值同长度的值注意: (1)长度转化规则是: 若长度L=w,输入的字符个数恰好够用 若Lw,输入的字符不能满足,在右边补足L-w个空格(2)格式输入:字符串两边不应加定界符,不用空格分隔数据,否则会当作有效字符处理两右Fortran 90例:Character(3):a,b,cRead(*,fmt=(a3,a2,a4)a,b,c如输入1231234123则a值123B值12C值412Fortran 90表控格式输出语句:CHARACTER(3):A,BPRINT*,A,B !原样显示用户规定的格式输出语句CHARACTER(3):A,BPRINT(A2,A4),A,B长:截取左边 短:左补空格(两左)Fortran 90例8-2 阅读下面程序PROGRAM EXAM2IMPLICIT NONECHARACTER(LEN=6):A1,A2,A3READ(A6,A8,A3),A1,A2,A3PRINT*,A1,A2,A3END如输入123456ABCDEFGH222,程序运行结果是什么?123456CDEFGH222Fortran 90例8-3 阅读下面程序,写出程序运行结果PROGRAM EXAM3IMPLICIT NONECHARACTER(LEN=5):S1,S2,S3S1=12345; S2=ABCDE; S3= 09876 PRINT(S1=,A7,2X,S2=,A3,2X, S3=,A5),S1,S2,S3ENDS1= 12345 S2=ABC S3=09876Fortran 90例: 用自定格式输入和输出字符型数据。

      掌握数据输入格式)如输入:FORTRANCHARACTER(LEN=1),DIMENSION(1:7):A1、READ(7A1),(A(I),I=1,7)输入:FORTRAN !7个数据,有格式2、READ*,(A(I),I=1,7)输入:F,O,R,T,R,A,N !7个数据,*格式CHARACTER(7):A1、READ*,A 输入FORTRAN !一个数据2、READ(A),A 输入FORTRAN !一个数据Fortran 908.2.3 用于字符处理的内在函数1.求字符串长度函数 LEN:求字符串的长度 例:LEN(ASD ) 值6 LEN_TRIM:去掉尾部空格后的长度 例:LEN _TRIM(ASD ) 值32.除去字符串尾部空格函数(TRIM) 例:TRIM(ASD ) 值ASD3.字符与码值转换函数: Ichar(iachar),char(achar) Iachar 和achar 只针对ASCII码(其他编码不可)例: char(82):R !char求ASCII码字符 ichar(REST):82 ! Ichar求首字符ASCII码例:char(ichar(ab)+4)/123的值为e123Fortran 904.子串位置函数(INDEX) INDEX(STR1,STR2):返回STR2在STR1中的起始位置,值为零,表示STR2不包含在STR1中。

      例:index(follfodcfod,fod)值为5 例:character(4):a A=fod Index(follfodcfod,A)的值为0其它函数见附录2Fortran 908.4 字符型数据的应用举例Fortran 90例8-6 从键盘上输入5个城市的名称(用汉语拼音表示,长度不超过10),然后按从小到大的顺序(字典顺序)排序排序算法同数值型数组)输入:Harbin,Shanghai,Anda,Beijing,DaqingCHARACTER(10),DIMENSION(5):CITYCHARACTER(10):T; integer:I,JREAD*,CITYDO I=1,4 !数组直接排序法 DO J=I+1,5 IF(CITY(I)CITY(J)THEN T=CITY(I);CITY(I)=CITY(J);CITY(J)=T ENDIF ENDDOENDDOWRITE(*,(A)CITYENDFortran 90例:输出*号图形 5行,每行7个*,每行左移一个位置算法:引入LINE变量存放每一行的数据(长度为图形的第一列到最右) LINE变量子串赋值输出LINE变量LINE变量回归为空串重复循环PROGRAM MAINIMPLICIT NONECHARACTER(11):LINEINTEGER:I,J DO I=1,5 DO J=6-I,12-I LINE(J:J)=* ENDDO PRINT*,LINE LINE= ENDDO END观察法不能少DO J=1,7 LINE(5-I+J:5-I+J)=*ENDDOFortran 90例8-10 输出三角形图形(174页)用数组A存放每一行的数据(每个元素长度为1)PROGRAM EXAM10CHARACTER,DIMENSION(9):AINTEGER:IA=DO I=1,5 A(6-I)=* A(4+I)=* PRINT*,AENDDOEND PROGRAM EXAM10Fortran 90例8.11输入5个单词,打印以字母A开头的单词用数组存放5个单词:PROGRAM EXAM11IMPLICIT NONECHARACTER (LEN=20),DIMENSION(5):WORDINTEGER IREAD*,WORE DO I=1,5 IF (INDEX(WORD(I),A)=1)PRINT *,WORD(I) ENDDO END PROGRAM EXAM11Fortran 90例8-13 译密码。

      编程,将电文按规律转换:将字母A变成D,a变成d,即将字母变成其后的第3个字母,其他不变使用变量存放电文从左往右:重复(循环结构) 1、取出每个字符, 2、判断是否为字母选择结构 再转换ichar、charFortran 90CHARACTER(LEN=100):LINE,C*1INTEGER:I,NREAD*,LINE; N=LEN_TRIM(LINE)DO I=1,N C=LINE(I:I) IF(C=A.AND.C=a.AND.C=X.AND.C =x.AND.C=z).)THEN C=CHAR(ICHAR(C)+3-26) LINE(I:I)=CEndifEnddoPRINT*,LINEEND PROGRAMFortran 90补充: 字符型数据作为函数子程序虚元1.字符型变量作为虚元: 对应的实元必须是字符型变量、字符型数组元素、字符串常量或字符表达式等 虚元长度说明:可采用固定长度,也可采用(*)例8-7 编写函数子程序,实现字符内在函数LEN_TRIM的功能在主程序中输入一个字符串,对去掉尾部空格部分的字符子串中的字符逆序存放后输出输入:Good morning!使用变量存放字符型数据(1)去尾部空格算法:从右往左顺序查找非空格字符(2)逆序算法:交换首尾对应元素Fortran 90PROGRAM CHAR_INVERSEIMPLICIT NONECHARACTER(20):STRING1,C*1INTEGER:I,K,LENTRIMREAD(A),STRING1K=LENTRIM(STRING1)DO I=1,K/2 C=STRING1(I:I) STRING1(I。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.