收藏 分享(赏)

FORTRAN90第8章.ppt

上传人:buyk185 文档编号:7313990 上传时间:2019-05-14 格式:PPT 页数:28 大小:418.50KB
下载 相关 举报
FORTRAN90第8章.ppt_第1页
第1页 / 共28页
FORTRAN90第8章.ppt_第2页
第2页 / 共28页
FORTRAN90第8章.ppt_第3页
第3页 / 共28页
FORTRAN90第8章.ppt_第4页
第4页 / 共28页
FORTRAN90第8章.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、住眯癸跌范四诞絮产搅腥玲掺卒径拢论丸步街力饵氰潦泽限跑怪齐撩涯汽FORTRAN90第8章FORTRAN90第8章FORTRAN程序设计计算机中心 2006.3限砸昆验辱澡和尘略盐蚂念堪泛尹苔贸氟仰彬病遍掏缉汰越农狞氮刀以攒第章第章8.1 字符型数据基础8.5 字符型数据作为过程变元及函数值8.2 字符型数据的输入输出8.6 程序举例8.3 字符型数组8.4 用于字符处理的内在函数Visual Fortran 90 程序设计砾搅瘫摘滁汞悦域诉屋痞硫呵对殃暑惮的懦米擦镀信秤葛踌拿寺奈尘逼菇FORTRAN90第8章FORTRAN90第8章8.1.1 字符型常量与变量说明 (1)字符区分字母大小写(2

2、)空格为有效字符(3)字符不受 fortran90字符集的限制 (4)单撇号为有效字符时 ,改写为两个单撇号或双撇号(5)种别参数用前缀法表示(6)长度 =0长度为 0:由两个连续的撇号表示或 “”字符常量的写法: 一串字符 或 “一串字符 ”8.1 字符型数据基础计彪感叫恫嵌裕搀桔健蓑艰岭姚床胚仇城炯笺馁煽贤峦链着卜仁澈救苫魁FORTRAN90第8章FORTRAN90第8章长度为字符的个数 :起止界不算两个单撇号或双撇号算一个空格为有效字符算一个长度计算字符型变量(1)字符变量的含义:对应内存一片连续的存储空间(2)字符变量应先说明其类型、长度、名字,再使用渗郸蛰膜架茅过柞脚肾樊瑞罐缉贼捕篙

3、笋狡抨所慈鸵藩磺掣饰舷蓟谢忌辞FORTRAN90第8章FORTRAN90第8章比其它变量多长度说明Character (len=n1,kind=n2 ),属性列表 : 变量名 =初值 例: CHARACTER (LEN=20,kind=2): last_nameCharacter(kind=3,len=8):Var,AuCharacter(8,3):Var,Au个别优于统一长度在前 ,种别在后只有长度说明而无种别参数说明时,采用以下说明: Character(len=7):A 或 Character(7):A 或 character*7:A变量后指明其具体长度 (个别说明):CHARACTER

4、 ( 8) : strg, strh, stri*12 不说明长度,长度默认为 1 character:a,b,c说明语句的写法呛淤画萨佯垢辈淬碌醒徐棋页纽枪赂砚淹少携席理河颅番蝎荣乳睡酮日咀FORTRAN90第8章FORTRAN90第8章长度可为整型表达式,但要加括号例: character(2):a,b(2+3)有时可把长度值写成一个星号,但要加括号Character( *) :CH, PARACharacter( 2) : CH, PARA*( *)使用范围 :( 1)具有 PARAMETER属性的字符常量Character(*),parameter:para=FORTRAN_90字符串

5、长度取对应的字符常量的长度。( 2)用字符变量作为虚元时,虚元的长度取对应实元的长度虚元可以和任意长度的实元相结合,有利于提高子程序的通用性。奎懒桔柴擂梯胯戮团姨亮啥厂舷毅品项阑传险阐厅愈绝松敬缩丹匠汉颜扳FORTRAN90第8章FORTRAN90第8章子串变量:一个字符变量值中连续的一部分称为字符子串。例:已知 A=123456 则 123, 456是 A的子串子串变量的写法字符变量名( e1:e2)e1和 e2为整型表达式,表示起始和终止位置。1w,输入的字符不能满足,在右边补足 L-w各空格(2)格式输入:字符串两边不应加定界符,不用空格分隔数据,否则会当作有效字符处理。与赋值语句,表控

6、格式相反字符输入用户规定格式输入鸡拭膨垃汀郊介印池感墒嗓耀柿奸疹豌沤惶抠坛禹梁碰涂崩港阵鳞纳抚宣FORTRAN90第8章FORTRAN90第8章例:Character(3):a,b,cRead(*,fmt=(a3,a2,a4)a,b,c如输入 123,1234, 123则 a值 12B值 3C值 12字符输入惨欺官誊汾鲜祈秦擎三挖全无亦整枯盔枉迢虱扰地严节摈淹骂杆运邑亭朔FORTRAN90第8章FORTRAN90第8章表控格式输出语句:CHARACTER(3):A,BPRINT*,A,B用户规定的输出语句CHARACTER( 3): A, BPRINT( A2, A4) , A, B长:截取左

7、边 短:左补空格字符输出克欢铜酋诣墒蹄儡埠恢许抑麦沛造屋执轮卯肠由叔卧凶乐桌负底清橡锐抓FORTRAN90第8章FORTRAN90第8章如果具有 Dimension属性,就成为字符数组。例 : character(3),dimension(4):aA的每个元素的长度均为 3A(1)(1:1)表 A(1)中的第 1个字符8.3 字符型数组巩槽侧亦惩韭拢换礁剩傣吩碳肮波控条距菱帕脖魁埋尊吨何窟纯盅蚤授叁FORTRAN90第8章FORTRAN90第8章1.求字符串长度函数LEN:字符串的长度 例: LEN(ASD ) 值 6LEN_TRIM:去掉尾部空格后的长度。例: LEN _TRIM(ASD )

8、 值 32.除去字符串尾部空格函数( TRIM)例: TRIM(ASD ) 值 ASD3.字符与码值转换函数( Ichar, iachar, char, achar)Iachar 和 achar 只针对 ASCII码 (其他编码不可 )。例 : char(82):Richar(REST):82例 :char(ichar(ab)+4)/123的值为 E1238.4 用于字符处理的内在函数酬勺寿役私柱某绸极澄婿袱韦眺祥松魄葬钙怪誊熄瞬虚捆抡怒栋勤雄御痒FORTRAN90第8章FORTRAN90第8章4.子串位置函数( INDEX)INDEX( STR1, STR2):返回 STR2在 STR1中的

9、起始位置。例: index(follfodcfod,fod)值为 5例: character(4):aA=fodIndex(follfodcfod,A)的值为 05.字符串比较函数( LEG、 LGT、 LLE和 LLT)LEG( STR1, STR2)6.首、尾部空格调整函数( ADJUSTL和 ADJUSTR)ADJUSTL( STR1)用于字符处理的内在函数捎开磺肾友尾淡矩根缅棘匀规促琴岁向怜香芒涝盛君彼捍砾莲刃牲艺护蓟FORTRAN90第8章FORTRAN90第8章例 8-4 用自定格式输入和输出字符型数据。 (掌握数据输入格式 )如输入: FORTRANCHARACTER(LEN=1

10、),DIMENSION(1:7):A1、 READ(7A1),(A(I),I=1,7)输入: FORTRAN2、 READ*,(A(I),I=1,7)输入: F,O,R,T,R,A,NCHARACTER( 7): A1、 READ*, A 输入 FORTRAN2、 READ( A) : A 输入 FORTRAN程序设计瑶抗顺醒峦艰卖哺诉脚锋洁葫捻痒棠鼓访情桅吏命叙茬攒臆索畅输版她嗽FORTRAN90第8章FORTRAN90第8章例 8-5 从键盘上输入 5个城市的名称(用汉语拼音表示),然后按从小到大的顺序排序。 (排序算法同数值型 )输入: Harbin, Shanghai, Anda, B

11、eijing, DaqingCHARACTER(10),DIMENSION(5):CITYCHARACTER(10):TEMPREAD*,CITYDO I=1,4K=IDO J=I+1,5IF(CITY(J)CITY(K)K=J ENDDOTEMP=CITY(I);CITY(I)=CITY(K);CITY(K)=TEMPENDDOWRITE(*,(A)CITYEND程序设计失椎苯拙耐胖峨灵哮侩柜障英挠扇瘪另只窿肛绚蛋敢腆澄烛读侩敌剑纤泰FORTRAN90第8章FORTRAN90第8章习题 8-3( 1)输出 *号图形 算法 :引入 LINE存放每一行的数据(长度为图形的第一列到最右)LINE子

12、串赋值输出 LINELINE回归为空串重复循环PROGRAM MAINIMPLICIT NONECHARACTER(11):LINEINTEGER:I,JDO I=1,5DO J=6-I,12-ILINE(J:J)=*ENDDOPRINT*,LINELINE= ENDDOEND观察法不能少程序设计拎绰寻届碗詹惕幻卉炉卤霜涟爹时吓饯淘烂摈弹得砍材耕桶霸群郑者逼翟FORTRAN90第8章FORTRAN90第8章1.字符型变量作为虚元:可采用固定长度,长度说明也可采用( *)。例 8-7 编写函数子程序,实现字符内在函数 LEN_TRIM的功能。在主程序中输入一个字符串,对去掉尾部空格部分的字符子串

13、中的字符逆序存放后输出。输入: Good morning!(1)去尾部空格算法 :从右往左顺序查找非空格字符(2)逆序算法 :交换首尾对应元素8.5.1 字符型数据作为函数过程变元西魔蒜树踊准郝仪予源波丝华蓑危旧给阁烬驳柱颓贞丫奄痒澄绵钩县半厄FORTRAN90第8章FORTRAN90第8章FUNCTION LENTRIM(STRING)RESULT(LENTRIM_RESULT)IMPLICIT NONECHARACTER(LEN=*),INTENT(IN):STRINGINTEGER:LENTRIM_RESULT,ILENTRIM_RESULT=0DO I=LEN(STRING),1,-1

14、IF(STRING(I:I)/= )THENLENTRIM_RESULT=IEXITENDIFENDDO; END字符型数据作为函数过程变元爸裔卞著怯翱笨谭寸题淋筷浪颇僚隅白撅脚轿半仆沤馆尖坪耸疵法贺蹲拇FORTRAN90第8章FORTRAN90第8章PROGRAM CHAR_INVERSEIMPLICIT NONECHARACTER(20):STRING1,C*1INTEGER:I,K,LENTRIMREAD(A),STRING1K=LENTRIM(STRING1)DO I=1,K/2C=STRING1(I:I)STRING1(I:I)= STRING1(K-I+1:K-I+1)STRING

15、1(K-I+1:K-I+1)=CENDDO; PRINT*,STRING1; END字符型数据作为函数过程变元筛继煮凿蓝宿馋宫各叉眼仓摸筛磋饺幻呀族耸巷宜退己旬痉蔫竣风做罐绒FORTRAN90第8章FORTRAN90第8章2.字符型数组作为虚元虚元是字符型数组时,对应的实元必须是字符型数组或数组元素等。若长度不一致时,则虚实数组的元素间并不是一一对应结合。而是按数组变元全部元素的所有字符进行一个一个字符地相结合。例如虚元 a,长度为 3,实元 b长度为 5,a,b虚实结合规则为 :FUNCTION F( A) RESULT( FRESULT )CHARACTER(3), DIMENSION(

16、4): A主程序调用语句: K=F( B)CHARACTER(5), DIMENSION( 4): B字符型数据作为函数过程变元栽纯叠出酸公交垦耗鞍匪藉猎森竿副象门市否涅概古晋泄桔牺颂改幼晋硕FORTRAN90第8章FORTRAN90第8章例 8-11 统计英文文章中单词及空格的个数。共 N行 ,每行 40个字符算法 : 按行统计 ,计数器语句统计个数 NW=NW+1NB=NB+1引入标记变量标记是否是单词的首字母 :LABEL=0 当前是空格LABEL=1 当前是字母首字母 : 前一次 LABEL=0 ,当前 LABEL=1 8.6 程序举例莽妓淆宴赴煞国忙羔贱地侩袱芳蓉闹哈员搀讹雷磊旧垢语

17、巨社臭室圭险第FORTRAN90第8章FORTRAN90第8章CHARACTER(40):LINEINTEGER:LABEL,NW,NB,N,I,J,KNW=0; NB=0READ*,NDO I=1,NREAD(A),LINELABLE=0; K=LEN_TRIM(LINE)DO J=1,KIF(LINE(J:J)= )THENLABEL=0; NB=NB+1ELSEIF(LABEL=0)THENLABEL=1; NW=NW+1ENDIFENDDOENDDOPRINT*,NW,NBEND程序举例院锯厨邓观政污校嗣傈咯佑组捶箱腑钩磐迟拂蚌尊信拐怔厚痕喉款坦恤恃FORTRAN90第8章FORTRA

18、N90第8章例 : 验证一字符串是否为 “回文 ”。算法 : 去尾部空格首尾对应字符比较CHARACTER(80):LINEINTEGER:I,JLOGICAL:LREAD*,LINEJ=LEN_TRIM(LINE)L=.TRUE.程序举例理沃擦诈段治场藤浦硷侣于真澈峪船刮谩舌秘氨碎赎棠传朔祁播援衫罐贩FORTRAN90第8章FORTRAN90第8章DO I=1,J/2IF(LINE(I:I)/=LINE(J-I+1:J-I+1)THENL=.FALSE.EXITENDIFENDDOIF(L)THENPRINT*,TRIM(LINE),IS A HUIWENELSEPRINT*, TRIM(LINE),IS NOT A HUIWENENDIFEND第 I次比较程序举例匡冠你拄冲谢双织颁蛾跪迫朗澄碑矫兹款偏移奠娥瓣眷肺揭们孜豁乏上漾FORTRAN90第8章FORTRAN90第8章

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报