第6章数组第二次_第1页
第6章数组第二次_第2页
第6章数组第二次_第3页
第6章数组第二次_第4页
第6章数组第二次_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 回顾回顾v按序排列的同类型数据元素的集合称为数组;按序排列的同类型数据元素的集合称为数组;v一维数组定义:数据类型一维数组定义:数据类型 数组名数组名长度长度;v数组元素的序号是从数组元素的序号是从0开始;开始;v二维数组定义:数据类型二维数组定义:数据类型 数组名数组名长度长度1长度长度2;v二维数组元素按行存储二维数组元素按行存储;v只能逐个引用数组元素,不能一次引用整个数组;只能逐个引用数组元素,不能一次引用整个数组; 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 6.3 字符数组与字符串字符数组与字符串 教学目标教

2、学目标v掌握字符数组的定义和初始化;掌握字符数组的定义和初始化;v掌握字符串初始化;掌握字符串初始化;v熟悉字符串的输入和输出;熟悉字符串的输入和输出;v掌握字符串函数;掌握字符串函数;重点重点v字符数组的定义和初始化字符数组的定义和初始化v字符串的初始化和字符串函数字符串的初始化和字符串函数 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 6.3 字符数组与字符串字符数组与字符串 vC语言中没有专门的字符串变量,通常用一个字语言中没有专门的字符串变量,通常用一个字符数组存放一个字符串符数组存放一个字符串 v字符数组中的每一个元素存放一个字符。字符数组中的每一个元素存放一个字符。v字

3、符数组是数组的一个特殊情况,它的定义方法字符数组是数组的一个特殊情况,它的定义方法与数值数组相同,但引用方法有其独特的引用方法与数值数组相同,但引用方法有其独特的引用方法 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 字符数组的定义与初始化字符数组的定义与初始化 1.字符数组的定义字符数组的定义字符数组的定义和前面介绍的数值数组类似。例如:字符数组的定义和前面介绍的数值数组类似。例如: char ch10; char name310; 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 字符数组的定义与初始化字符数组的定义与初始化 2.字符数组的初始化字符数组的初始化 (1)

4、 按元素按元素逐个赋值逐个赋值 char ch5=h,e,l,l,o; char ch10=h,e,l,l,o; 未赋初值的元素为未赋初值的元素为0。 注意:注意:如果对全体元素赋初值,可以省略长度说明如果对全体元素赋初值,可以省略长度说明 如:如: char ch =h,e,l,l,o; 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 字符数组的定义与初始化字符数组的定义与初始化 2.字符数组的初始化字符数组的初始化 (2) 使用字符串常量赋初值使用字符串常量赋初值可用字符串直接给字符数组赋初值:可用字符串直接给字符数组赋初值: char ch =hello; 也可以省去花括号,直

5、接写成也可以省去花括号,直接写成: char ch =hello;v可用一维字符数组存放字符串可用一维字符数组存放字符串vC语言用语言用0作为字符串的结束标志,作为字符串的结束标志,0表示空表示空字符字符null(ASCII为为0)v字符数为字符数为n的字符串需占用的字符串需占用n+1个字符空间个字符空间hello0 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 字符数组的定义与初始化字符数组的定义与初始化 2.字符数组的初始化字符数组的初始化 (3) 二维字符数组初始化二维字符数组初始化 一般将一个字符串放在一行,因此,如果有一个一般将一个字符串放在一行,因此,如果有一个n*m的

6、二维字符数组,则可以存放的二维字符数组,则可以存放n个字符串。个字符串。char str410 =China,Japan,Korea,Australia; 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 每行可以看成一个一维字符数组每行可以看成一个一维字符数组,数组名为,数组名为stristri,存放一个字符串。,存放一个字符串。 Str0 Str0 Str1 Str1 Str2 Str2 Str3 Str3China00Japan00Korea00Australia00 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【注意注意】(1) 若写出若写出字符数组长度则必须比字

7、符串中字符的个数字符数组长度则必须比字符串中字符的个数多多1,以容纳以容纳0。(2) 用用字符串形式字符串形式对字符数组初始化时,系统会对字符数组初始化时,系统会自动在自动在其末尾加上其末尾加上0。(3)我们在程序中可以依靠检测我们在程序中可以依靠检测0来判定字符串是否来判定字符串是否结束。结束。(P111 1、8) 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 字符串的输入和输出字符串的输入和输出 (1) 逐个输入输出字符串中的字符逐个输入输出字符串中的字符v 在在scanf和和printf函数中用函数中用“%c”输入输出:输入输出: for(i=0;i3;i+) scanf(“

8、%c”,&ai); printf(“%c%c%c”,a0,a2,a3);v 使用使用getchar和和putchar函数输入输出单个字符:函数输入输出单个字符: for(i=0;i3;i+) ai=getchar(); for(i=0;i3;i+) putchar(ai); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【例】使用【例】使用%c输入输出字符串输入输出字符串 main() int i; char ch4; printf(输入输入4个字符个字符: ); for(i=0;i4;i+) scanf(%c,&chi); printf(这些字符是这些字符是: )

9、; for(i=0;i4;i+)printf(%c,chi); printf(n); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【例】用【例】用getchar和和putchar函数输入输出字符串函数输入输出字符串#include main() int i; char ch4; printf(输入输入4个字符个字符:); for(i=0;i4;i+) chi=getchar(); printf(这些字符是这些字符是: ); for(i=0;i4;i+)putchar(chi); printf(n); 运行结果相同。运行结果相同。 合肥师范学院公共计算机教学部合肥师范学院公共计算机

10、教学部 v输入项为字符数组名输入项为字符数组名(首地址首地址),不能加,不能加&China0Japan0(2)整个字符串(数组)的输入整个字符串(数组)的输入 在在scanf函数和函数和printf函数函数中使用中使用%s 输入输出输入输出: 形式:形式: scanf(%s,字符数组首地址字符数组首地址)char str110, str210; scanf(%s%s,str1, str2);键盘输入键盘输入China Japan 结果存储为:结果存储为: 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 (2)整个字符串(数组)的输入整个字符串(数组)的输入 在在scanf函数

11、函数和和printf函数函数中使用中使用%s 输入输出:输入输出: 形式:形式:printf (“%s”, 字符数组首地址或常量字符串字符数组首地址或常量字符串)printf(%s %sn ,str1,Korea);v 用用“s”输出字符串时遇第一个输出字符串时遇第一个0结束结束v 用用“s”输出字符串时输出字符串时printf函数输出项是字符数函数输出项是字符数组名,而不是数组元素名组名,而不是数组元素名v 注意:注意:如果输出按元素逐个赋值的字符数组时,如果输出按元素逐个赋值的字符数组时,容易出错。容易出错。 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 例:用格式化函数输入输

12、出一个字符串例:用格式化函数输入输出一个字符串main() char str20; printf(“输入字符串:n); scanf(%s,str); printf(%sn,str); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 (2) 整个字符串的输入输出整个字符串的输入输出 使用函数使用函数gets和和puts输入和输出字符串输入和输出字符串 形式:形式:gets (字符数组首地址字符数组首地址) 例如:例如:gets(str1); puts (字符数组首地址或常量字符串字符数组首地址或常量字符串) 例如:例如:puts(str1); puts(“China”); 合肥师范学院

13、公共计算机教学部合肥师范学院公共计算机教学部 例:用例:用gets输入输入puts输出一个字符串输出一个字符串#include main()char str20; printf(“输入字符串输入字符串:n); gets (str); puts(str); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 3字符串函数 注意注意:字符串函数需要字符串函数需要 #include 字符串拷贝函数 strcpy 字符串连接函数 strcat 字符串比较函数 strcmp 测字符串的长度函数 strlen 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 strcpy 字符串拷贝函数字符

14、串拷贝函数 strcpy,形式如下:,形式如下: strcpy(字符数组名,字符串字符数组名,字符串)【功能】【功能】将一个字符串复制到一个字符数组中。将一个字符串复制到一个字符数组中。字符串结束标志字符串结束标志0也一同拷贝。也一同拷贝。 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【例【例6】将一个字符串复制到另一个字符数组中】将一个字符串复制到另一个字符数组中#include#includemain()char str110,str2=China; strcpy(str1,str2); puts(str1); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 str

15、cat字符串连接函数字符串连接函数strcat,形式如下:形式如下: strcat(字符数组名字符数组名1,字符数组名,字符数组名2)【功能】连接两个字符数组中的字符串,把字【功能】连接两个字符数组中的字符串,把字符串符串2接到字符串接到字符串1 的后面,结果存放在字符数的后面,结果存放在字符数组组1中,本函数的返回值为字符数组中,本函数的返回值为字符数组1的首地址的首地址。 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【例【例6】连接两个字符串】连接两个字符串 #include #include main()char str150=“I Love; char str2 =“Ch

16、ina !; strcat(str1,str2); puts(str1); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 (3)字符串比较函数字符串比较函数strcmp形式为:形式为: strcmp(字符串字符串1,字符串,字符串2)【功能】比较两个字符串,返回值为比较结果:【功能】比较两个字符串,返回值为比较结果:当当 字符串字符串1 =字符串字符串2,函数返回值为,函数返回值为0; 字符串字符串1 字符串字符串2,函数返回值为一正数;,函数返回值为一正数; 字符串字符串1 字符串字符串2,函数返回值为一负数。,函数返回值为一负数。字符串的字符串的比较规则比较规则为:为:按字符的

17、按字符的ASCII码值的大小码值的大小,直至出现不同的字符或直至出现不同的字符或遇到遇到0为止为止。strcmp 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【例【例6 6】输入输入5个字符串,将其中最大的字符串输出个字符串,将其中最大的字符串输出#include#includemain()char str10,max10; int i; gets(max); for(i=0;i4;i+) gets(str); if(strcmp(max,str)0) strcpy(max,str); printf(n The max string is: %s,max); 思考:输出最小的字符

18、串思考:输出最小的字符串(实验八)(实验八) 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 (4)测字符串的长度函数测字符串的长度函数strlen形式如下:形式如下: strlen(字符串)(字符串)【功能】测字符串中第一个【功能】测字符串中第一个0之前的实际字符个数之前的实际字符个数(不含(不含0标志)标志) strlen 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 【例】测字符串的长度。【例】测字符串的长度。#include main() char str =“China; printf(string length:%d,strlen(str); 合肥师范学院公共

19、计算机教学部合肥师范学院公共计算机教学部 6.3.3 6.3.3 字符串的应用字符串的应用 【例】删除一个字符串中的某个特定字符,本题以字【例】删除一个字符串中的某个特定字符,本题以字符符ss为例。为例。【分析】字符串存入字符数组中,要删除的字符可能【分析】字符串存入字符数组中,要删除的字符可能不止一个,方法是将后面的字符覆盖要删除的字不止一个,方法是将后面的字符覆盖要删除的字符。具体做法:符。具体做法:对字符数组设定两个作为下标的对字符数组设定两个作为下标的变量变量,一个用作访问所有的元素一个用作访问所有的元素,另一个用作,另一个用作复复制不删除的元素制不删除的元素,最后赋,最后赋00值作为

20、新字符串值作为新字符串结束标志。结束标志。 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 main()char str =this is a book; char c=s; /*设本例中要删除的特定字符为设本例中要删除的特定字符为s*/ int i,j=0; for(i=0;stri!=0;i+) if(stri!=c) strj+=stri; strj=0; printf(%sn,str); 合肥师范学院公共计算机教学部合肥师范学院公共计算机教学部 程序举例编程输出以下的杨辉三角形编程输出以下的杨辉三角形( (输出前输出前1010行行) )#define N 10main() int i,j,aNN; for(i=0;iN;i+) aii=1; ai0=1; for(i=2;iN;i+) for(j=1;j=i-1;j+) aij=ai-1j-1+ai-1j; for(i=0;iN;i+) for(j=0;j=i;j+) printf(%5d,aij); printf(n); 合肥师范学院公共计

温馨提示

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

评论

0/150

提交评论