版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 9 章 字符串处理算法2018/10/21字符串的查找、替换及字符串与数值之间的转换是字符串处理中比较常用的算法,在FORTRAN 95中,字符处理的对象是字符型数据。字符型数据包括:字符型常数、字符型变量、字符型数组、字符子串、字符表达式和字符函数,除了字符函数之外,其它字符型数据通过前面章节学习已介绍了它们的使用,本章介绍字符函数的用法。 为了方便对文字信息的处理,FORTRAN 95提供了一些字符运算的函数 ,其格式和功能见教材。2018/10/22常用字符函数使用例9.1 输出一个由英文字母构成的字符串,把字符串中所有小写字母转换为大写字母并输出。program ex901impl
2、icit none character*80 strl,str2 integer k,l,i read(*,(a)strl str2=strlk=len(str2) l=ichar(a)-ichar(“A) do i=1,kif(str2(i:i)=a.and.str2(i:i)=85)then jl(i)=”优”else if(cj(i)=60)then jl(i)=”合格”elsejl(i)=”不合格” end ifend do do i=1,5write(*,*)trim(name(i)/”外语竞赛成绩是”/jl(i) end doend,王丽,于红/)2018/10/24例9.5 从字
3、符串S中删除前两个非A字符后,输出S字符串。program ex905 implicit none character s*60,c*1 integer i,k s=ABCADA c=Ado k=1,2i=verify(s,c) s(i:)=s(i+1:)end do print *,s end!求非A在字符串s中的位置2018/10/25例9.6 编写输出三角形的程序。program ex906implicit none character*80,line integer ndo n=1,6 line= line(40-2*(n-1):40+2*(n-1)= repeat(* ,2*n-1)
4、 print *,lineend do end程序执行示例:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2018/10/26例9.11 设一个英文句子是由多个单词组成的,且每两个单词之间包含一个或多个空格,句子用句号(圆点)结束,句子的长度不超过80个字符,列出这个英文句子的各个单词。程 序 如 下 : program ex911implicit none character(len=80)text integer endofwordprint *,输入一个英文句子: read(*,*)texttext=adjust
5、l(text) call compress(text,.)call compress_bb(text) doif(len_trim(text)=0)exit!把字符串text首部空格调到尾部(字符串左对齐)!调用子程序compress,去掉英文句中句号.!调用子程序compress_bb,压缩双空格为单空格.endofword=index(text, )-1 print *,text(1:endofword)!输出一个单词!去掉已输出的单词text=text(endofword+2:) end doend2018/10/27! 去掉英文句中句号的子程序subroutine compress(s
6、tr,ch)implicit none character(len=*)str,ch*1 integer idoi=index(str,ch) if(i=0)exit str(i:)=str(i+1:)end do end! 压缩双空格为单空格的子程序subroutine compress_bb(text) implicit none character(len=*)textinteger i do!查找双空格在字符串text中的左起开始位置i=index(trim(text) ,) if(i=0)exittext(i:)=text(i+1:) end doend程序执行示例:All that
7、 glitters isnot gold输入一个英文句子:“All thatglittersis not gold.”2018/10/28例9.12 有一篇英文文章有N行,每行不超过40个字符。编写程序统计出文章中英文单词(一个单词由若干个连续的非空格字符组成)的个数和空格的个数。程序如下:! label: 标志变量,当其值为0时,表示一个单词刚开始;当其值为1时,表示正进行一! 个单词统计。! nw: 记录英文单词个数! nb: 记录空格个数! n:记录英文文章的行数2018/10/29program ex912 implicit nonecharacter(len=40):line int
8、eger: label,nw,nb,n,i,j,k nw=0;nb=0.print *,请输入英文文章的行数: read*,ndo i=1,nwrite(*,(1x,a,i2,a)请输入英文文章第,i,行内容: read (a),linelabel=0k=len_trim(line) do j=1,kif(line(j:j)= )then label=0; nb=nb+1else if(label=0)then label=1;nw=nw+1end if end do!去掉尾部空格的长度=kend doprint “(英文单词=,i4,5x,空格=,i4)”, nw, nbend ex1112
9、2018/10/210程序执行示例:请输入英文文章的行数: 3请输入英文文章第 1行内容: I COME FROM CHINA请输入英文文章第 2行内容: MY NAME IS ZHZNC请输入英文文章第 3行内容: I AM 30英文单词=11空格=82018/10/211例9.13 编写一个子例程子程序sing,检测去掉尾部空格的一字符串是否为“回文”(回文是指一个字符串左右对应位置的字符相同)。例如字符串“tabcbat”和“2EE2”都是回文, 而“nkjhmkn”和“ASFA”都不是回文的。在主程序中调用子程序sing验证三个字符串是否为“回文”。程序如下:2018/10/212pr
10、ogram ex913 implicit nonecharacter(len=80):line character*4:char_blankinteger:i,j,n logical ldo n=1,3!i: 字符串line左字符对应位置print *,输入一个字符串: read (a),linej=len_trim(line) call sing(line,l,i,j)!去掉字符串line尾空格的长度=jif(l)thenprint *,trim(line),是回文串elseprint *,trim(line),不是回文串print *,字符串左第,i,个字符是,char_blank(lin
11、e(i:i) print *,字符串右第,i,个字符是,char_blank(line(j:j)end ifend do end2018/10/213!字符串line是否为回文的子程序!l: line是否为回文(.true./.fause.)!i: 字符串line左位置!j: 去掉字符串line尾空格的长度subroutine sing(line,l,i,j)character(len=80),intent(in):line logical,intent(out):l integer,intent(out):i integer,intent(inout):jl=.true. do i=1,j/2if(line(i:i)/=line(j:j)then l=.false.exit elsej=j-1 end if end doend2018/10/214! 判断不是回文的相应字符是空格还是字符的函数function char_blank(ch) result(ch_result)character(len=4):ch_result character(len=1),intent(in):ch if(ch= )thench_result
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年共青团学期工作计划书
- 2026年生涯规划书备用方案
- 2026年口腔科开业活动流程安排
- 2026年小学数学教学方法探讨与研究
- 2026年小班美术活动 棒棒糖
- 2026年大学生智育活动方案
- 2026年版网红直播间商业合作合同三篇
- 滁州职业技术学院下穿醉翁西路地下人行通道 工程(人防工程)项目水土保持方案报告表
- 年产5万立方米零醛添加无醛级胶合板项目可行性研究报告模板立项申批备案
- 2025-2026学年六一居士传教案
- 2026年高考物理一轮复习备考复习策略讲座
- 2024-2025学年广东省深圳市龙岗区七年级(下)期末历史试卷
- 2025年北京市中考英语试卷真题(含答案)
- DB5104∕T 67-2023 户外广告和招牌设施管理规范
- 藏医培训课件
- 比亚迪绩效管理制度
- 大学生安全教育论文2000字范文
- 市政工程商务培训课件
- 2025年压片糖果项目市场调查研究报告
- 动车组塞拉门54课件
- 【MOOC】物理与艺术-南京航空航天大学 中国大学慕课MOOC答案
评论
0/150
提交评论