第8章 文本信息处理程序设计 (1)_第1页
第8章 文本信息处理程序设计 (1)_第2页
第8章 文本信息处理程序设计 (1)_第3页
第8章 文本信息处理程序设计 (1)_第4页
第8章 文本信息处理程序设计 (1)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、程序设计基础程序设计基础8.1 字符数组与字符串字符数组与字符串8.2 字符串的输入输出字符串的输入输出8.3 对字符串的操作对字符串的操作程序设计基础用来存放字符数据的数组是字符数组用来存放字符数据的数组是字符数组字符数组中的一个元素存放一个字符字符数组中的一个元素存放一个字符定义字符数组的方法与定义数值型数定义字符数组的方法与定义数值型数组的方法类似组的方法类似程序设计基础char c10;c0=I; c1= ;c2=a; c3=m;c4= ; c5=h; c6=a; c7=p; c8=p; c9=y;Iam happyc0c1c2c3c4c5c6c7c8c9程序设计基础char c10=

2、I, ,a,m, ,h,a,p,p,y; char c10=c, ,p,r,o,g,r,a,m;Iam happyc0c1c2c3c4c5c6c7c8c9cpro gram 0c0c1c2c3c4c5c6c7c8c9程序设计基础char diamond55= , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,* ;程序设计基础例例1 输出一个已知的字符串。输出一个已知的字符串。解题思路:解题思路:u定义一个字符数组,并用定义一个字符数组,并用“初始化列初始化列表表”对其赋以初值对其赋以初值u用循环逐个输出此字符数组中的字符用循环逐个输出此字符数组中的字符程序设计基础#in

3、clude int main() char c15=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.; int i; for(i=0;i15;i+) printf(%c,ci); printf(n); return 0; 例例1 输出一个已知的字符串输出一个已知的字符串程序设计基础例例2 输出一个菱形图。输出一个菱形图。解题思路:解题思路:u定义一个字符型的二维数组,用定义一个字符型的二维数组,用“初初始化列表始化列表”进行初始化进行初始化u用嵌套的用嵌套的for循环输出字符数组中的循环输出字符数组中的所有元素。所有元素。程序设计基础#include int main() char

4、diamond5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*; int i,j; for (i=0;i5;i+) for (j=0;j5;j+) printf(%c,diamondij); printf(n); return 0;程序设计基础在在C语言中,是将字符串作为语言中,是将字符串作为字符数组字符数组来处理的来处理的关心的是字符串的关心的是字符串的有效长度有效长度而不是字符而不是字符数组的长度数组的长度为了测定字符串的实际长度,为了测定字符串的实际长度,C语言规语言规定了字符串结束标志定了字符串结束标志0从从ASCII码表可以查到,码表可以查到,ASCII

5、码为码为0的字符不是一个可以显示的字符,而是的字符不是一个可以显示的字符,而是一个一个“空操作符空操作符”,即它什么也不做,即它什么也不做程序设计基础 char c=”I am happy”;可写成可写成char c=”I am happy”;相当于相当于char c11=”I am happy”;程序设计基础char c10=”China”;可写成可写成char c10=”China”;从从c5开始,元素值均为开始,元素值均为0只显示只显示printf(”%s”,c);China 00000程序设计基础字符数组的输入输出可以有两种方法字符数组的输入输出可以有两种方法:u 逐个字符输入输出逐个

6、字符输入输出(%c)u 整个字符串一次输入输出整个字符串一次输入输出(%s)输出的字符中不包括结束符输出的字符中不包括结束符0用用%s输出字符串时,输出字符串时,printf函数中的函数中的输出项是字符数组名,不是数组元素名输出项是字符数组名,不是数组元素名程序设计基础如果一个字符数组中包含如果一个字符数组中包含多个多个0,则,则遇第一个遇第一个0时输出就结束时输出就结束可以用可以用scanf函数输入一个字符串函数输入一个字符串scanf函数中的输入项函数中的输入项c是已定义的字是已定义的字符数组名,输入的字符串应符数组名,输入的字符串应短于短于已定义已定义的字符数组的长度的字符数组的长度程序

7、设计基础char c6;scanf(”%s”,c); China 系统自动在系统自动在China后面加一个后面加一个0程序设计基础char str15,str25,str35;scanf(”%s%s%s”,str1,str2,str3);How are you? How00str1are00str2you?0str3程序设计基础 在在C函数库中提供了一些用来专门处理字符串的函数库中提供了一些用来专门处理字符串的函数,使用方便函数,使用方便1.puts函数函数-输出字符串的函数输出字符串的函数 其一般形式为其一般形式为: puts (字符数组字符数组) 作用是将一个字符串输出到终端作用是将一个字

8、符串输出到终端char str20=”China”;puts(str); 输出输出China程序设计基础2. gets函数函数-输入字符串的函数输入字符串的函数 其一般形式为其一般形式为: gets(字符数组字符数组)作用是输入一个字符串到字符数组作用是输入一个字符串到字符数组char str20;gets(str); Computer 程序设计基础 在在C函数库中提供了一些用来专门处理字符串的函数库中提供了一些用来专门处理字符串的函数,使用方便函数,使用方便1. strcat函数函数-字符串连接函数字符串连接函数 其一般形式为其一般形式为: strcat(字符数组字符数组1,字符数组,字符数

9、组2) 其作用是把两个字符串连接起来,把字符串其作用是把两个字符串连接起来,把字符串2接接到字符串到字符串1的后面,结果放在字符数组的后面,结果放在字符数组1中中使用字符串函数时使用字符串函数时,在程序开头用在程序开头用#include 程序设计基础2. strcat函数函数-字符串连接函数字符串连接函数 char str130=”People”; char str2=”China”; printf(”%s”, strcat(str1,str2); 输出:输出:PeopleChina要足够大要足够大程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 strcpy一般

10、形式为一般形式为: strcpy(字符数组字符数组1,字符串字符串2) 作用是将字符串作用是将字符串2复制到字符数组复制到字符数组1中去中去char str110,str2=”China”;strcpy(str1,str2);China 00000str1程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 strcpy一般形式为一般形式为: strcpy(字符数组字符数组1,字符串字符串2) 作用是将字符串作用是将字符串2复制到字符数组复制到字符数组1中去中去char str110,str2=”China”;strcpy(str1,str2);China 00000

11、str1要足够大要足够大程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 strcpy一般形式为一般形式为: strcpy(字符数组字符数组1,字符串字符串2) 作用是将字符串作用是将字符串2复制到字符数组复制到字符数组1中去中去char str110,str2=”China”;strcpy(str1,str2);数组名形式数组名形式程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 strcpy一般形式为一般形式为: strcpy(字符数组字符数组1,字符串字符串2) 作用是将字符串作用是将字符串2复制到字符数组复制到字符数组1中去中

12、去char str110,str2=”China”;strcpy(str1,str2);数组名数组名或或字符串常量字符串常量程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 strcpy一般形式为一般形式为: strcpy(字符数组字符数组1,字符串字符串2) 作用是将字符串作用是将字符串2复制到字符数组复制到字符数组1中去中去char str110,str2=”China”;strcpy(str1,str2); 相当于相当于strcpy(str1,”China”);程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 char str1

13、10,str2=”China”; str1=”China”; 错误错误 str1=str2; 错误错误程序设计基础3. strcpy和和strncpy函数函数-字符串复制字符串复制 可以用可以用strncpy函数将字符串函数将字符串2中前面中前面n个字符复制到字符数组个字符复制到字符数组1中去中去 strncpy(str1,str2,2);u作用是将作用是将str2中最前面中最前面2个字符复制到个字符复制到str1中,取代中,取代str1中原有的最前面中原有的最前面2个字符个字符u复制的字符个数复制的字符个数n不应多于不应多于str1中原有的字符中原有的字符程序设计基础4. strcmp函数函

14、数-字符串比较函数字符串比较函数 其一般形式为其一般形式为 strcmp(字符串字符串1,字符串,字符串2) 作用是比较字符串作用是比较字符串1和字符串和字符串2 strcmp(str1,str2); strcmp(”China”,”Korea”); strcmp(str1,”Beijing”);程序设计基础4. strcmp函数函数-字符串比较函数字符串比较函数 字符串比较的规则是:将两个字符串自左字符串比较的规则是:将两个字符串自左至右逐个字符相比,直到出现不同的字符至右逐个字符相比,直到出现不同的字符或遇到或遇到0为止为止 如全部字符相同,认为两个字符串相等如全部字符相同,认为两个字符串

15、相等 若出现不相同的字符,则以第一对不相同若出现不相同的字符,则以第一对不相同的字符的比较结果为准的字符的比较结果为准程序设计基础4. strcmp函数函数-字符串比较函数字符串比较函数 ”A”A” ”computer”compare” ”these”that” ”1A”$20” ”CHINA”CANADA” ”DOG”TSINGHUA”程序设计基础4. strcmp函数函数-字符串比较函数字符串比较函数 比较的结果由函数值带回比较的结果由函数值带回u如果字符串如果字符串1=字符串字符串2,则函数值为,则函数值为0u如果字符串如果字符串1字符串字符串2,则函数值为一个,则函数值为一个正整数正整

16、数u如果字符串如果字符串1str2) printf(”yes”); 错误错误if(strcmp(str1,str2)0) printf(”yes”); 正确正确程序设计基础5. strlen函数函数-测字符串长度的函数测字符串长度的函数 其一般形式为其一般形式为: strlen (字符数组字符数组) 它是测试字符串长度的函数它是测试字符串长度的函数 函数的值为字符串中的实际长度函数的值为字符串中的实际长度程序设计基础5. strlen函数函数-测字符串长度的函数测字符串长度的函数 char str10=”China”; printf(”%d”,strlen(str); 输出结果是输出结果是5

17、也可以直接测试字符串常量的长度也可以直接测试字符串常量的长度 strlen(”China”);程序设计基础6. strlwr函数函数-转换为小写的函数转换为小写的函数 其一般形式为其一般形式为 strlwr (字符串字符串) 函数的作用是将字符串中大写字母换成函数的作用是将字符串中大写字母换成小写字母小写字母程序设计基础7. strupr函数函数-转换为大写的函数转换为大写的函数 其一般形式为其一般形式为 strupr (字符串字符串) 函数的作用是将字符串中小写字母换成函数的作用是将字符串中小写字母换成大写字母大写字母程序设计基础 例例4 输入一行字符,统计其中有多少个输入一行字符,统计其中

18、有多少个单词,单词之间用空格分隔开。单词,单词之间用空格分隔开。 解题思路:问题的关键是怎样确定解题思路:问题的关键是怎样确定“出出现一个新单词了现一个新单词了”u 从第从第1个字符开始逐个字符进行检查,判断个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就此字符是否是新单词的开头,如果是,就使变量使变量num的值加的值加1,最后得到的,最后得到的num的的值就是单词总数值就是单词总数程序设计基础u判断是否出现新单词,可以由是否有空格出判断是否出现新单词,可以由是否有空格出现来决定现来决定(连续的若干个空格作为出现一次连续的若干个空格作为出现一次空格;一行开头的空格不统计在内

19、空格;一行开头的空格不统计在内)u如果测出某一个字符为非空格,而它的前面如果测出某一个字符为非空格,而它的前面的字符是空格,则表示的字符是空格,则表示“新的单词开始了新的单词开始了”,此时使,此时使num累加累加1u如果当前字符为非空格而其前面的字符也是如果当前字符为非空格而其前面的字符也是非空格,则非空格,则num不应再累加不应再累加1程序设计基础u用变量用变量word作为判别当前是否开始了一个作为判别当前是否开始了一个新单词的标志,若新单词的标志,若word=0表示未出现新表示未出现新单词,如出现了新单词,就把单词,如出现了新单词,就把word置成置成1u前面一个字符是否空格可以从前面一个

20、字符是否空格可以从word的值看的值看出来,若出来,若word等于等于0,则表示前一个字符,则表示前一个字符是空格;如果是空格;如果word等于等于1,意味着前一个,意味着前一个字符为非空格字符为非空格程序设计基础Yc=空格word=0Nword=0Yword=1num+Nif(c= ) word=0; else if(word=0) word=1; num+; 程序设计基础当前字符当前字符I Ia am ma ab bo oy y. .是否空格是否空格否否 是是 否否 否否 是是 否否 是是 否否 否否 否否 否否wordword原值原值0 01 10 01 11 10 01 10 01 11 11 1新单词开始否新单词开始否 是是 否否 是是 否否 否否 是是 否否 是是 否否 否否 否否wordword新值新值1 10 01 11 10 01 10 01 11 11 11 1numnum值值1 11 12 22 22 23 33 34 44 44 44 4程序设计基础 char string81,c; int i,num=0,word=0; gets(string); for (i=0;(c=stringi)!=0;i+) if(c= ) word=0; else

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论