欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言 第六章 数组.ppt

    • 资源ID:67340196       资源大小:702KB        全文页数:50页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言 第六章 数组.ppt

    第六章第六章 数组数组 第六章第六章 数组数组n n本章主要内容:本章主要内容:本章主要内容:本章主要内容:6.1 6.1 数组概述数组概述数组概述数组概述6.2 6.2 一维数组一维数组一维数组一维数组6.3 6.3 二维数组二维数组二维数组二维数组6.4 6.4 用字符数组处理字符串用字符数组处理字符串用字符数组处理字符串用字符数组处理字符串6.5 6.5 综合应用举例综合应用举例综合应用举例综合应用举例本章作业本章作业本章作业本章作业n n本章重点:本章重点:本章重点:本章重点:熟练掌握一组数组和字符数组的定义和引用,掌握用熟练掌握一组数组和字符数组的定义和引用,掌握用熟练掌握一组数组和字符数组的定义和引用,掌握用熟练掌握一组数组和字符数组的定义和引用,掌握用数组方法实现排序算法、查找方法;数组方法实现排序算法、查找方法;数组方法实现排序算法、查找方法;数组方法实现排序算法、查找方法;深刻理解一维的字符数组与字符串之间的关系,并比深刻理解一维的字符数组与字符串之间的关系,并比深刻理解一维的字符数组与字符串之间的关系,并比深刻理解一维的字符数组与字符串之间的关系,并比较熟练地掌握使用一维字符数组来处理字符串。较熟练地掌握使用一维字符数组来处理字符串。较熟练地掌握使用一维字符数组来处理字符串。较熟练地掌握使用一维字符数组来处理字符串。C语言程序设计6.1 数组概述数组概述n n在许多数学问题中,经常遇到数列和矩阵的概念。在许多数学问题中,经常遇到数列和矩阵的概念。在许多数学问题中,经常遇到数列和矩阵的概念。在许多数学问题中,经常遇到数列和矩阵的概念。数列和矩阵是用来描述一批数据之间的关系的。数列和矩阵是用来描述一批数据之间的关系的。数列和矩阵是用来描述一批数据之间的关系的。数列和矩阵是用来描述一批数据之间的关系的。如:如:如:如:n n表示表示表示表示x x数列时通常写成:数列时通常写成:数列时通常写成:数列时通常写成:x x1 1,x,x2 2,x,x3 3,x xn nn n表示一个表示一个表示一个表示一个2323矩阵矩阵矩阵矩阵y y可以写成:可以写成:可以写成:可以写成:数组位置号位置号行号行号列号列号C语言程序设计n n分析数列和矩阵不难发现它们有三个特点:分析数列和矩阵不难发现它们有三个特点:分析数列和矩阵不难发现它们有三个特点:分析数列和矩阵不难发现它们有三个特点:有一批数据;有一批数据;有一批数据;有一批数据;这些数据之间有一定的内在联系;这些数据之间有一定的内在联系;这些数据之间有一定的内在联系;这些数据之间有一定的内在联系;这些数据的类型相同。这些数据的类型相同。这些数据的类型相同。这些数据的类型相同。n nC语言中用数组来表达数列和矩阵语言中用数组来表达数列和矩阵。数组名数组名数组名数组名数列名数列名数列名数列名(如如如如x x数列数列数列数列)矩阵名矩阵名矩阵名矩阵名(如如如如y y矩阵矩阵矩阵矩阵)下标用一下标用一下标用一下标用一个数表示个数表示个数表示个数表示下标用两下标用两下标用两下标用两个数表示个数表示个数表示个数表示一维数组一维数组一维数组一维数组二维数组二维数组二维数组二维数组x x2 2y y1313x2x2y13y13数组C语言程序设计n n不用数组时,要处理下面的两个问题你会感到相不用数组时,要处理下面的两个问题你会感到相不用数组时,要处理下面的两个问题你会感到相不用数组时,要处理下面的两个问题你会感到相当困难:当困难:当困难:当困难:将输入的将输入的将输入的将输入的5050个数逆序输出。个数逆序输出。个数逆序输出。个数逆序输出。把输入的把输入的把输入的把输入的3030个成绩中高于平均分的成绩输出。个成绩中高于平均分的成绩输出。个成绩中高于平均分的成绩输出。个成绩中高于平均分的成绩输出。n n所谓数组是指一组有序数据的集合,用一个统一所谓数组是指一组有序数据的集合,用一个统一所谓数组是指一组有序数据的集合,用一个统一所谓数组是指一组有序数据的集合,用一个统一数组名标识这一组数据,用下标来指示数组中元数组名标识这一组数据,用下标来指示数组中元数组名标识这一组数据,用下标来指示数组中元数组名标识这一组数据,用下标来指示数组中元素的位置素的位置素的位置素的位置(序号序号序号序号)。n n数组是最简单的一种构造类型,其数组元素为同数组是最简单的一种构造类型,其数组元素为同数组是最简单的一种构造类型,其数组元素为同数组是最简单的一种构造类型,其数组元素为同一类型,既可以为简单类型一类型,既可以为简单类型一类型,既可以为简单类型一类型,既可以为简单类型(如整型、实型、字符如整型、实型、字符如整型、实型、字符如整型、实型、字符型等型等型等型等),也可以是构造类型。,也可以是构造类型。,也可以是构造类型。,也可以是构造类型。数组C语言程序设计6.2 6.2 一维数组一维数组1 1一维数组的定义一维数组的定义一维数组的定义一维数组的定义n n语法格式为:语法格式为:语法格式为:语法格式为:类型符类型符类型符类型符 数组名数组名数组名数组名 元素个数元素个数元素个数元素个数;n n例如:例如:例如:例如:intint a5;a5;定义了一个数组定义了一个数组定义了一个数组定义了一个数组a a,每个元素的类型为,每个元素的类型为,每个元素的类型为,每个元素的类型为intint,可,可,可,可以称以称以称以称a a为整型数组。它有为整型数组。它有为整型数组。它有为整型数组。它有5 5个元素:个元素:个元素:个元素:a0 a1 a2 a3 a4a0 a1 a2 a3 a4 n n又如:又如:又如:又如:float x2*5;float x2*5;/*Ok*/*Ok*/char char snsn;/*Error*/*Error*/数组常量或常量或常量表达式常量表达式第一个元素的下标为第一个元素的下标为0第后一个元素的下标为第后一个元素的下标为元素个数元素个数-1C语言程序设计2 2一维数组的引用一维数组的引用一维数组的引用一维数组的引用n n一般的引用格式为:一般的引用格式为:一般的引用格式为:一般的引用格式为:数组名数组名数组名数组名 下标下标下标下标 n n如:如:如:如:n=4;a0=3*a3-an-2;n=4;a0=3*a3-an-2;n n数组元素实际上的一种带下标的变量数组元素实际上的一种带下标的变量数组元素实际上的一种带下标的变量数组元素实际上的一种带下标的变量(简称下标简称下标简称下标简称下标变量变量变量变量),它与简单变量,它与简单变量,它与简单变量,它与简单变量(不带下标的变量不带下标的变量不带下标的变量不带下标的变量)在使用在使用在使用在使用上并无不同。上并无不同。上并无不同。上并无不同。n n请比较:请比较:请比较:请比较:intint m,n,p,a5;m,n,p,a5;m=10;m=10;a2=5;a2=5;n=2*m;n=2*m;a1=a2*3;a1=a2*3;scanf(“%d”,&pscanf(“%d”,&p););scanf(“%d”,&a4);scanf(“%d”,&a4);数组可以为常量、可以为常量、变量、表达式变量、表达式C语言程序设计n n引用数组元素更常用的形式:引用数组元素更常用的形式:引用数组元素更常用的形式:引用数组元素更常用的形式:aiai 若若若若i=0i=0,aia0aia0若若若若i=1i=1,aiai a1 a1n n用这种方式可以访问数组中的所有元素,这称为用这种方式可以访问数组中的所有元素,这称为用这种方式可以访问数组中的所有元素,这称为用这种方式可以访问数组中的所有元素,这称为数组的数组的数组的数组的“遍历遍历遍历遍历”。n n遍历数组时是通过循环来改变下标的。遍历数组时是通过循环来改变下标的。遍历数组时是通过循环来改变下标的。遍历数组时是通过循环来改变下标的。n n 例例例例6.1 6.1 将输入的将输入的将输入的将输入的5 5个数逆序输出。个数逆序输出。个数逆序输出。个数逆序输出。读入:读入:读入:读入:for(ifor(i=0;i5;i+)scanf(“%d”,&ai);=0;i=0;i-)printf(“%3d”,ai);=4;i=0;i-)printf(“%3d”,ai);数组C语言程序设计3 3一维数组的初始化一维数组的初始化一维数组的初始化一维数组的初始化n n在定义数组时给元素赋初值。一般语法为:在定义数组时给元素赋初值。一般语法为:在定义数组时给元素赋初值。一般语法为:在定义数组时给元素赋初值。一般语法为:类型符类型符类型符类型符 数组名数组名数组名数组名 元素个数元素个数元素个数元素个数=常量表常量表常量表常量表;n n如:如:如:如:intint a5=1,2,3,4,5;a5=1,2,3,4,5;n n编译系统为数组的所有编译系统为数组的所有编译系统为数组的所有编译系统为数组的所有元素顺序分配存储单元。元素顺序分配存储单元。元素顺序分配存储单元。元素顺序分配存储单元。n n初始化时是把常量表中初始化时是把常量表中初始化时是把常量表中初始化时是把常量表中的常量按内存分配顺序的常量按内存分配顺序的常量按内存分配顺序的常量按内存分配顺序依次存入相应的数组元依次存入相应的数组元依次存入相应的数组元依次存入相应的数组元素。素。素。素。数组1 1 2 2 3 3 4 4 5 5C语言程序设计说明:说明:n n若给所有元素赋初值,若给所有元素赋初值,若给所有元素赋初值,若给所有元素赋初值,“元素个数元素个数元素个数元素个数”可以省略。可以省略。可以省略。可以省略。如:如:如:如:intint a =1,2,3,4,5;a =1,2,3,4,5;n n可以只给一部分元素赋初值,但元素个数不能省可以只给一部分元素赋初值,但元素个数不能省可以只给一部分元素赋初值,但元素个数不能省可以只给一部分元素赋初值,但元素个数不能省略。未被赋初值的元素则为略。未被赋初值的元素则为略。未被赋初值的元素则为略。未被赋初值的元素则为0 0。如:。如:。如:。如:intint a5=1,2,3;a5=1,2,3;n n若使全部元素都为若使全部元素都为若使全部元素都为若使全部元素都为0 0,可以将其定义为,可以将其定义为,可以将其定义为,可以将其定义为“全局变量全局变量全局变量全局变量”或或或或“静态变量静态变量静态变量静态变量”,也可以写成:,也可以写成:,也可以写成:,也可以写成:intint a5=0;a5=0;n n若数组在定义时未进行初始化,则各元素的值是若数组在定义时未进行初始化,则各元素的值是若数组在定义时未进行初始化,则各元素的值是若数组在定义时未进行初始化,则各元素的值是随机的。如:随机的。如:随机的。如:随机的。如:intint a5 a5;数组5 5,0,0;,0,0;,0,0,0,0;,0,0,0,0;=?,?,?,?,?;=?,?,?,?,?;C语言程序设计4 4一维数组的程序举例一维数组的程序举例n n 例例例例6.2 6.2 求输入的求输入的求输入的求输入的1010个数据之和。个数据之和。个数据之和。个数据之和。main()main()intint a10,sum=0,i;a10,sum=0,i;for(ifor(i=0;i10;i+)=0;i10;i+)scanf(“%d”,&aiscanf(“%d”,&ai););for(ifor(i=0;i10;i+)=0;i10;i+)sum=sum=sum+aisum+ai;printf(“Sumprintf(“Sum=%=%dn”,sumdn”,sum););n n练习:把输入的练习:把输入的练习:把输入的练习:把输入的3030个成绩中高于平均分的输出个成绩中高于平均分的输出个成绩中高于平均分的输出个成绩中高于平均分的输出 数组输入数据输入数据输入数据输入数据计算、处理计算、处理计算、处理计算、处理输出数据输出数据输出数据输出数据C语言程序设计n n 例例例例6.36.3 找出输入的找出输入的找出输入的找出输入的5 5个数据中的最大值及所在位个数据中的最大值及所在位个数据中的最大值及所在位个数据中的最大值及所在位置。置。置。置。n n分析:分析:分析:分析:1.1.设设设设a0a0的值最大的值最大的值最大的值最大;2.2.i=1;i=1;3.3.i5imaxmax,则则则则aimax,iaimax,i p pi+;i+;n n思考:思考:思考:思考:1 1、不使用、不使用、不使用、不使用maxmax变量而使程序完成同样的功能。变量而使程序完成同样的功能。变量而使程序完成同样的功能。变量而使程序完成同样的功能。2 2、把找到的最大值与第一个数据互换位置。把找到的最大值与第一个数据互换位置。把找到的最大值与第一个数据互换位置。把找到的最大值与第一个数据互换位置。数组5 52 27 79 96 60 1 2 3 4 50 1 2 3 4 5a amaxmaxi ip p5 57 79 9maxmaxp pBackC语言程序设计n n 例例例例6.4 6.4 输出输出输出输出FibonacciFibonacci数列的前数列的前数列的前数列的前2020项,每行项,每行项,每行项,每行5 5个个个个数据。数据。数据。数据。n n分析:分析:分析:分析:1.1.fab0=fab1=1;fab0=fab1=1;2.2.使使使使n=219n=219ppfabnfabn=fabn-1+fabn-2;=fabn-1+fabn-2;数组C语言程序设计6.3 6.3 二维数组二维数组1 1二维数组的定义二维数组的定义n n一般形式为:一般形式为:一般形式为:一般形式为:类型符类型符类型符类型符 数组名数组名数组名数组名 行数行数行数行数 列数列数列数列数;n n例如:例如:例如:例如:intint b23;b23;定义了一个定义了一个定义了一个定义了一个2323的整型数组的整型数组的整型数组的整型数组b b,它有,它有,它有,它有2 2行、行、行、行、3 3列共列共列共列共6 6个元素。这个元素。这个元素。这个元素。这6 6个元素为:个元素为:个元素为:个元素为:b00 b01 b02b00 b01 b02b10 b11 b12b10 b11 b12 数组C语言程序设计n n多维数组的定义格式为:多维数组的定义格式为:多维数组的定义格式为:多维数组的定义格式为:类型符类型符类型符类型符 数组名数组名数组名数组名 元素长度元素长度元素长度元素长度11元素长度元素长度元素长度元素长度22元素长度元素长度元素长度元素长度nn;n n如:如:如:如:intint x234,y42310;x234,y42310;x x为三维数组,为三维数组,为三维数组,为三维数组,y y为四维数组。为四维数组。为四维数组。为四维数组。数组C语言程序设计2 2二维数组的引用二维数组的引用n n一般格式为:一般格式为:一般格式为:一般格式为:数组名数组名数组名数组名 行下标行下标行下标行下标 列下标列下标列下标列下标 n n如:如:如:如:a12=a01+a2*2-38/5;a12=a01+a2*2-38/5;n n由于二维数组有两个下标,要遍历二维数组一由于二维数组有两个下标,要遍历二维数组一由于二维数组有两个下标,要遍历二维数组一由于二维数组有两个下标,要遍历二维数组一般得用双重循环完成。通常外层的循环变量控般得用双重循环完成。通常外层的循环变量控般得用双重循环完成。通常外层的循环变量控般得用双重循环完成。通常外层的循环变量控制行下标,而内层的循环变量控制列下标。制行下标,而内层的循环变量控制列下标。制行下标,而内层的循环变量控制列下标。制行下标,而内层的循环变量控制列下标。n n 例例例例6.5 6.5 将下列矩阵存入二维数组中,并输出。将下列矩阵存入二维数组中,并输出。将下列矩阵存入二维数组中,并输出。将下列矩阵存入二维数组中,并输出。n n分析:分析:分析:分析:for(ifor(i=0;i2;i+)=0;i2;i+)for(jfor(j=0;j3;j+)=0;j3;j+)scanfscanf();();注意:注意:注意:注意:行、列行、列行、列行、列下标不下标不下标不下标不要越界要越界要越界要越界控制行控制行控制列控制列数组C语言程序设计n n 例例例例6.66.6 找出一个找出一个找出一个找出一个3434矩阵中的最大元素及所在位置。矩阵中的最大元素及所在位置。矩阵中的最大元素及所在位置。矩阵中的最大元素及所在位置。main()main()intint a34,i,j,max,row,col;a34,i,j,max,row,col;for(ifor(i=0;i3;i+)=0;i3;i+)for(jfor(j=0;j4;j+)=0;j4;j+)scanf(“%d”,&aijscanf(“%d”,&aij););max=a00;max=a00;for(ifor(i=0;i3;i+)=0;i3;i+)for(jfor(j=0;j4;j+)=0;j4;j+)if(maxif(max aijaij)max=)max=aij;rowaij;row=i;coli;col=j;=j;printfprintf(“(“最大值最大值最大值最大值=%d,=%d,行行行行=%d,=%d,列列列列=%=%dn”,max,row,coldn”,max,row,col););n n该程序有何问题吗该程序有何问题吗该程序有何问题吗该程序有何问题吗?数组读入数据读入数据遍历数组找最大元素遍历数组找最大元素存放最大值存放最大值最大值所在的行最大值所在的行最大值所在的列最大值所在的列假设假设第一第一个元个元素最素最大大row=0;col=0;row=0;col=0;C语言程序设计三、二维数组的初始化三、二维数组的初始化 在定义二维数组时给元素赋初值。一般语法为:在定义二维数组时给元素赋初值。一般语法为:在定义二维数组时给元素赋初值。一般语法为:在定义二维数组时给元素赋初值。一般语法为:类型符类型符类型符类型符 数组名数组名数组名数组名 行数行数行数行数 列数列数列数列数=常量表常量表常量表常量表;n n如:如:如:如:intint a23=1,2,3,4,5,6;a23=1,2,3,4,5,6;n n即先存入第一行的数据,即先存入第一行的数据,即先存入第一行的数据,即先存入第一行的数据,再存第二行的数据。把这再存第二行的数据。把这再存第二行的数据。把这再存第二行的数据。把这种存储方式称为种存储方式称为种存储方式称为种存储方式称为“按行存储按行存储按行存储按行存储”方式。方式。方式。方式。0 01 10 01 12 2a a1 1 2 2 3 3 4 4 5 5 6 6数组C语言程序设计说明:说明:n n若给所有元素赋初值,若给所有元素赋初值,若给所有元素赋初值,若给所有元素赋初值,“行数行数行数行数”可以省略,但可以省略,但可以省略,但可以省略,但“列数列数列数列数”不能省。如:不能省。如:不能省。如:不能省。如:intint a 3=1,2,3,4,5,6;a 3=1,2,3,4,5,6;n n可以采用分行赋值,以增加程序的可读性。可以采用分行赋值,以增加程序的可读性。可以采用分行赋值,以增加程序的可读性。可以采用分行赋值,以增加程序的可读性。如:如:如:如:intint a 3=1,2,3,4,5,6;a 3=1,2,3,4,5,6;n n可以只给一部分元素赋初值,未被赋初值的元素可以只给一部分元素赋初值,未被赋初值的元素可以只给一部分元素赋初值,未被赋初值的元素可以只给一部分元素赋初值,未被赋初值的元素则为则为则为则为0 0。如:如:如:如:intint a 3=1,2,3;a 3=1,2,3;n n若数组在定义时未进行初始化,则各元素的值是若数组在定义时未进行初始化,则各元素的值是若数组在定义时未进行初始化,则各元素的值是若数组在定义时未进行初始化,则各元素的值是随机的。随机的。随机的。随机的。数组2 2,0,3,0,0;,0,3,0,0;C语言程序设计n n二维数组也可以当成一维数组看待,每一个元素二维数组也可以当成一维数组看待,每一个元素二维数组也可以当成一维数组看待,每一个元素二维数组也可以当成一维数组看待,每一个元素的类型又是一维数组。的类型又是一维数组。的类型又是一维数组。的类型又是一维数组。n n例如:例如:例如:例如:intint b23;b23;b b数组的元素为:数组的元素为:数组的元素为:数组的元素为:b00 b01 b02b00 b01 b02b10 b11 b12b10 b11 b12 ab0b0b1b1aaa数组C语言程序设计四、二维数组的程序举例四、二维数组的程序举例 n n 例例例例6.7 6.7 将将将将3232矩阵转置,如下由矩阵转置,如下由矩阵转置,如下由矩阵转置,如下由A A矩阵转置后得矩阵转置后得矩阵转置后得矩阵转置后得B B矩阵。矩阵。矩阵。矩阵。n n分析:分析:分析:分析:0,00,0A AB B值值值值1 14 42 25 53 36 60,00,00,10,11,01,01,01,00,10,11,11,11,11,12,02,00,20,22,12,11,21,2i,jj,i数组C语言程序设计n n 例例例例6.8 6.8 求求求求4444矩阵的主对角线元素之和。矩阵的主对角线元素之和。矩阵的主对角线元素之和。矩阵的主对角线元素之和。4 8 7 64 8 7 6 1 3 5 7 1 3 5 7 2 6 9 4 2 6 9 4 5 1 2 3 5 1 2 3n n分析:分析:分析:分析:主对角线是指行号与列号相同的那些元素。主对角线是指行号与列号相同的那些元素。主对角线是指行号与列号相同的那些元素。主对角线是指行号与列号相同的那些元素。for(ifor(i=0;i4;i+)=0;i4;i+)for(jfor(j=0;j4;j+)=0;j4;j+)if(iif(i=j)sumj)sum=sum+aijsum+aij;for(i=0;i4;i+)sum=sum+aii;数组C语言程序设计6.4 6.4 用字符数组处理字符串用字符数组处理字符串 n n若有:若有:若有:若有:char s5;char s5;则称则称则称则称s s为字符数组。为字符数组。为字符数组。为字符数组。n n字符数组中每一个元素存放的是字符数组中每一个元素存放的是字符数组中每一个元素存放的是字符数组中每一个元素存放的是charchar型数据,所型数据,所型数据,所型数据,所以可以象处理普通字符型变量一样,来处理字符以可以象处理普通字符型变量一样,来处理字符以可以象处理普通字符型变量一样,来处理字符以可以象处理普通字符型变量一样,来处理字符数组元素。如:数组元素。如:数组元素。如:数组元素。如:char s10;char s10;intint i;i;for(i=0;i10;i+)for(i=0;i10;i+)sisi=getchargetchar();();for(i=0;i10;i+)for(i=0;i10;i+)putchar(siputchar(si););n n字符数组还有它的特殊性。字符数组还有它的特殊性。字符数组还有它的特殊性。字符数组还有它的特殊性。数组C语言程序设计一、字符数组与字符串的关系一、字符数组与字符串的关系n n字符串字符串字符串字符串 “China”China”的存储方式:的存储方式:的存储方式:的存储方式:n n若有:若有:若有:若有:char s=char s=C,h,i,n,aC,h,i,n,a;其存储方式为:其存储方式为:其存储方式为:其存储方式为:n n既然此时初始化是为了提供一个字符串,既然此时初始化是为了提供一个字符串,既然此时初始化是为了提供一个字符串,既然此时初始化是为了提供一个字符串,C C允许允许允许允许写成下面更简单的形式:写成下面更简单的形式:写成下面更简单的形式:写成下面更简单的形式:char c=“China”;char c=“China”;n n甚至:甚至:甚至:甚至:char c=“China”;char c=“China”;,0;,0;字符数组字符数组s s中存放中存放的是一个字符串的是一个字符串!数组C语言程序设计n n通常情况下,初始化时我们是把一个常量送给一通常情况下,初始化时我们是把一个常量送给一通常情况下,初始化时我们是把一个常量送给一通常情况下,初始化时我们是把一个常量送给一个变量,并且它们的类型是一致的。如:个变量,并且它们的类型是一致的。如:个变量,并且它们的类型是一致的。如:个变量,并且它们的类型是一致的。如:intint p=10;p=10;n n对于:对于:对于:对于:char s=“China”;char s=“China”;n n实际上,数组名是常量,表示数组的开始地址,实际上,数组名是常量,表示数组的开始地址,实际上,数组名是常量,表示数组的开始地址,实际上,数组名是常量,表示数组的开始地址,与传统的字符串变量还是有区别的。与传统的字符串变量还是有区别的。与传统的字符串变量还是有区别的。与传统的字符串变量还是有区别的。整型变量整型变量整型常量整型常量字符串变量字符串变量字符串常量字符串常量一维字符数组一维字符数组相相当于当于字符串变量字符串变量数组C语言程序设计二、字符数组的输入与输出二、字符数组的输入与输出1.1.普通的数组处理方式普通的数组处理方式普通的数组处理方式普通的数组处理方式 n n当字符数组中存储的字符不是以当字符数组中存储的字符不是以当字符数组中存储的字符不是以当字符数组中存储的字符不是以 00结束时,结束时,结束时,结束时,只能像普通的数组那样,一个元素一个元素的处只能像普通的数组那样,一个元素一个元素的处只能像普通的数组那样,一个元素一个元素的处只能像普通的数组那样,一个元素一个元素的处理。如:理。如:理。如:理。如:char c5;char c5;/*/*输入输入输入输入*/for(ifor(i=0;i5;i+)=0;i5;i+)scanf(“%c”,&ciscanf(“%c”,&ci););/*/*输出输出输出输出*/for(ifor(i=0;i5;i+)=0;i”ABC”ABC”/*/*字符串比较字符串比较字符串比较字符串比较*/“abc”+“defgabc”+“defg”/*/*字符串连接字符串连接字符串连接字符串连接*/n n在在在在C C语言中这些操作都不能直接完成。语言中这些操作都不能直接完成。语言中这些操作都不能直接完成。语言中这些操作都不能直接完成。n n处理字符串通过库函数来完成。处理字符串通过库函数来完成。处理字符串通过库函数来完成。处理字符串通过库函数来完成。n n在程序开头将字符串库文件包含到程序中:在程序开头将字符串库文件包含到程序中:在程序开头将字符串库文件包含到程序中:在程序开头将字符串库文件包含到程序中:#include#include 数组C语言程序设计1、输出字符串函数 n n格式:格式:格式:格式:puts(puts(字符串表达式字符串表达式字符串表达式字符串表达式)n n功能:将功能:将功能:将功能:将“字符串表达式字符串表达式字符串表达式字符串表达式”输出后并换行。输出后并换行。输出后并换行。输出后并换行。n n如:如:如:如:char char strstr=“China”;=“China”;puts(strputs(str););n n输出:输出:输出:输出:ChinaChina _ _与与printf(printf(“%sn%sn”,str,str););完全等价完全等价数组C语言程序设计2、输入字符串函数n n格式:格式:格式:格式:gets(gets(字符串变量字符串变量字符串变量字符串变量)n n功能:将键盘输入的一行字符串存入功能:将键盘输入的一行字符串存入功能:将键盘输入的一行字符串存入功能:将键盘输入的一行字符串存入“字符串变字符串变字符串变字符串变量量量量”中,当输入回车时才认为字符串输入结束,中,当输入回车时才认为字符串输入结束,中,当输入回车时才认为字符串输入结束,中,当输入回车时才认为字符串输入结束,这就解决了这就解决了这就解决了这就解决了scanfscanf()()函数不能接收带空格的字符串函数不能接收带空格的字符串函数不能接收带空格的字符串函数不能接收带空格的字符串的问题。的问题。的问题。的问题。n n如:如:如:如:char str80;char str80;gets(strgets(str););puts(strputs(str););n n运行:运行:运行:运行:How are you?How are you?How are you?How are you?数组C语言程序设计3、字符串复制函数n n格式:格式:格式:格式:strcpystrcpy(字符串变量,字符串字符串变量,字符串字符串变量,字符串字符串变量,字符串)n n功能:将功能:将功能:将功能:将“字符串字符串字符串字符串”复制到复制到复制到复制到“字符串变量字符串变量字符串变量字符串变量”中,中,中,中,字符串变量的空间必须足够大。字符串变量的空间必须足够大。字符串变量的空间必须足够大。字符串变量的空间必须足够大。n n如:如:如:如:char str80;char str80;strcpy(strstrcpy(str,“China”);,“China”);puts(strputs(str););n n输出:输出:输出:输出:ChinaChinan n注意:字符串不能直接送字符串变量,即:注意:字符串不能直接送字符串变量,即:注意:字符串不能直接送字符串变量,即:注意:字符串不能直接送字符串变量,即:strstr=“China”;/*Error*/=“China”;/*Error*/数组C语言程序设计4、字符串连接函数n n格式:格式:格式:格式:strcatstrcat(字符串变量,字符串字符串变量,字符串字符串变量,字符串字符串变量,字符串)n n功能:将功能:将功能:将功能:将“字符串字符串字符串字符串”连接到连接到连接到连接到“字符串变量字符串变量字符串变量字符串变量”的后的后的后的后面,字符串变量的空间应足够大。面,字符串变量的空间应足够大。面,字符串变量的空间应足够大。面,字符串变量的空间应足够大。n n如:如:如:如:char str80=“I love”;char str80=“I love”;strcat(strstrcat(str,“China”);,“China”);puts(strputs(str););n n输出:输出:输出:输出:I love ChinaI love Chinan n注意:注意:注意:注意:C C语言中不能使用语言中不能使用语言中不能使用语言中不能使用“+”+”完成字符串的连接,完成字符串的连接,完成字符串的连接,完成字符串的连接,即:即:即:即:strstr=strstr+“China”;/*Error*/+“China”;/*Error*/数组C语言程序设计5、字符串比较函数 n n格式:格式:格式:格式:strcmpstrcmp(字符串字符串字符串字符串1 1,字符串,字符串,字符串,字符串2)2)n n功能:完成功能:完成功能:完成功能:完成“字符串字符串字符串字符串1”1”与与与与“字符串字符串字符串字符串2”2”的关系比较,的关系比较,的关系比较,的关系比较,即对两个字符串自左至右逐个字符按其即对两个字符串自左至右逐个字符按其即对两个字符串自左至右逐个字符按其即对两个字符串自左至右逐个字符按其ASCIIASCII码值码值码值码值相比,直到出现不同的字符或遇到相比,直到出现不同的字符或遇到相比,直到出现不同的字符或遇到相比,直到出现不同的字符或遇到 00为止。比为止。比为止。比为止。比较的结果由函数值获得:较的结果由函数值获得:较的结果由函数值获得:较的结果由函数值获得:如果如果如果如果“字符串字符串字符串字符串1”=“1”=“字符串字符串字符串字符串2”2”,函数值为,函数值为,函数值为,函数值为0 0;如果如果如果如果“字符串字符串字符串字符串1”“1”“字符串字符串字符串字符串2”2”,函数值为一正数;,函数值为一正数;,函数值为一正数;,函数值为一正数;如果如果如果如果“字符串字符串字符串字符串1”“1”0)x=y;”,“ABD”)0)x=y;数组C语言程序设计6、测字符串长度函数n n格式:格式:格式:格式:strlenstrlen(字符串字符串字符串字符串)n n功能:得到功能:得到功能:得到功能:得到“字符串字符串字符串字符串”的长度。的长度。的长度。的长度。n n字符串长度:字符串长度:字符串长度:字符串长度:是指双引号括起来的字符个数是指双引号括起来的字符个数是指双引号括起来的字符个数是指双引号括起来的字符个数或,或,或,或,00前面字符的个数前面字符的个数前面字符的个数前面字符的个数或,或,或,或,00所在的下标位置所在的下标位置所在的下标位置所在的下标位置n n如:如:如:如:char str80=“char str80=“abcdabcd”;”;printf(“%d”,strlen(strprintf(“%d”,strlen(str););n n结果:结果:结果:结果:4 4 数组C语言程序设计7、小写字符转换为大写字符串函数 n n格式:格式:格式:格式:struprstrupr(字符串字符串字符串字符串)n n功能:将字符串中的小写字母换为大写字母。功能:将字符串中的小写字母换为大写字母。功能:将字符串中的小写字母换为大写字母。功能:将字符串中的小写字母换为大写字母。n n如:如:如:如:printf(“%s”,strupr(“Chinaprintf(“%s”,strupr(“China”);”);n n结果:结果:结果:结果:CHINACHINA 数组C语言程序设计8、大写字符转换为小写字符串函数 n n格式:格式:格式:格式:strlwrstrlwr(字符串字符串字符串字符串)n n功能:将字符串中的小写字母换为大写字母。功能:将字符串中的小写字母换为大写字母。功能:将字符串中的小写字母换为大写字母。功能:将字符串中的小写字母换为大写字母。n n如:如:如:如:printf(“%s”,strlwr(“Chinaprintf(“%s”,strlwr(“China”);”);n n结果:结果:结果:结果:chinachina 数组C语言程序设计四、字符数组的程序举例 n n 例例例例6.9 6.9 下述程序是把键盘输入的两个整数按从大下述程序是把键盘输入的两个整数按从大下述程序是把键盘输入的两个整数按从大下述程序是把键盘输入的两个整数按从大到小的顺序输出,请修改成对字符串的处理。到小的顺序输出,请修改成对字符串的处理。到小的顺序输出,请修改成对字符串的处理。到小的顺序输出,请修改成对字符串的处理。main()main()intint a,b,ta,b,t;scanf(“%d%d”,&a,&bscanf(“%d%d”,&a,&b););if(aif(ab)aj+1aj+1则将其交换。则将其交换。则将其交换。则将其交换。435126第第第第1 1次次次次0404第第第第2 2次次次次0303第第第第3 3次次次次0202第第第第4 4次次次次0101第第第第5 5次次次次0000N=6N=6N-2N-2N-3N-3N-4N-4N-5N-5N-6N-6i ij:0N-i-1j:0N-i-1数组C语言程序设计n n 例例例例6.136.13 顺序查找:顺序查找:顺序查找:顺序查找:从键盘上输入学生姓名,显示他的分数。从键盘上输入学生姓名,显示他的分数。从键盘上输入学生姓名,显示他的分数。从键盘上输入学生姓名,显示他的分数。n n分析:分析:分析:分析:n n结论:结论:结论:结论:顺序查找是从前向后的顺序查找。

    注意事项

    本文(C语言 第六章 数组.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开