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

    C语言新教材PPT课堂课件-第7章_数组2.ppt

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

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

    C语言新教材PPT课堂课件-第7章_数组2.ppt

    第七章第七章问题问题:给一组数排序,这组给一组数排序,这组 数该数该 如何存放如何存放呢呢?这些数据如何存放才便于排序82945637617188888888881111111111111118 8 88888888这便是本章所要解决的问题l 本章要点掌握一维、二维数组的定义和引用掌握一维、二维数组的定义和引用方法、存储结构和初始化方法。方法、存储结构和初始化方法。掌握有关一维数组的有关算法掌握有关一维数组的有关算法掌握数组的运算。掌握数组的运算。l 主要内容7.1 7.1 一维数组的定义和引用一维数组的定义和引用7.2 7.2 二维数组的定义和引用二维数组的定义和引用7.3 7.3 字符数组字符数组 7.17.1 一维数组的定义和引用一维数组的定义和引用 C语言为这些数据,提供了一种构造数据类型:语言为这些数据,提供了一种构造数据类型:数组。数组。所谓数组所谓数组就是一组具有相同数据类型的数据就是一组具有相同数据类型的数据的有序集合。的有序集合。一个班学生的学习成绩一行文字一个矩阵这些数据的特点是:1.具有相同的数据类型2.使用过程中需要保留原始数据1.1.一维数组的定义格式为一维数组的定义格式为:类型说明符类型说明符 数组名常量表达式;数组名常量表达式;例如:例如:int a10;它表示定义了一个整形数组,数组名为a,此数组有10个元素。7.1.17.1.1一维数组的定义一维数组的定义说明:说明:1.数组名定名规则和变量名相同,遵循标识符定名规则。2.在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。3.常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如:例如:intint n;n;scanfscanf(“%d%d,&n);&n);/*/*在程序中临时输在程序中临时输入数入数 组的大小组的大小 */intint a an n;数组说明中其他常见的错误:数组说明中其他常见的错误:数组说明中其他常见的错误:数组说明中其他常见的错误:float a0;/*/*数组大小为数组大小为0 0没有意义没有意义 */int b(2)(3);/*/*不能使用圆括号不能使用圆括号 */int k,ak;/*/*不能用变量说明数组大小不能用变量说明数组大小*/2.2.一维数组在内存中的存放一维数组在内存中的存放每个数据元素占用的每个数据元素占用的字节数,就是字节数,就是基类型基类型的字节数的字节数一个元素占一个元素占4个个字节字节一维数组:一维数组:floatfloat markmark100;100;mark0mark1mark2mark3.mark9986.592.077.552.0.94.0低地址低地址 高地址高地址注意:注意:定义数组时用到的“数组名常量表达式”和引用数组元素时用到的“数组名下标”是有区别的。例如例如 int a10;t=a6;7.1.2 7.1.2一维数组元素的引用一维数组元素的引用1.1.数组元素的引用方式数组元素的引用方式数组名下标下标可以是整型常量或整型表达式。例如例如:a0=a5+a7-a2*32.2.一维数组元素引用的一维数组元素引用的程序实例程序实例#include void main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);printf(n);运行结果如下:运行结果如下:9 8 7 6 5 4 3 2 1 09 8 7 6 5 4 3 2 1 0 程序使程序使a0到到a9的值为的值为09,然后按逆序输出。然后按逆序输出。对数组元素初始化的实现方法:对数组元素初始化的实现方法:1.1.在定义数组时对数组元素赋以初值。在定义数组时对数组元素赋以初值。例如例如:intint a a1010=0,1,2,3,4,5,6,7,8,9;=0,1,2,3,4,5,6,7,8,9;将数组元素的初值依次放在一对花括弧内。经过上面的定义和初始化之后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9。7.1.37.1.3一维数组的初始化一维数组的初始化 3.3.如果想使一个数组中全部元素值为如果想使一个数组中全部元素值为0 0,可以写成,可以写成:int int a a1010=0,0,0,0,0,0,0,0,0,0;=0,0,0,0,0,0,0,0,0,0;或或intainta1010=0;=0;不不能写成能写成:intint a a1010=0*10;=0*10;2.2.可以只给一部分元素赋值。可以只给一部分元素赋值。例如例如:intint a a1010=0=0,1 1,2 2,3 3,4;4;定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。4.4.在对全部数组元素赋初值时,由于数据的个数已在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。经确定,因此可以不指定数组长度。例如例如:intint a a5 5=1=1,2 2,3 3,4 4,5;5;也可以写成也可以写成 intint a a=1=1,2 2,3 3,4 4,5;5;intint a a1010=1=1,2 2,3 3,4 4,5;5;只初始化前5个元素,后5个元素为0。例例例例7-17-17-17-1:用数组来用数组来处理处理,求解求解Fibonacci数列。数列。程序实例:程序实例:#include void main()int i;int f20=1,1;Fibonacci数列公式:数列公式:已知已知:a a1 1=a=a2 2=1=1a an n=a=an-1n-1+a+an-2 n-2 即即:1,1,2,3,5,8,13:1,1,2,3,5,8,137.1.47.1.4一维数组程序举例一维数组程序举例for(i=2;i20;i+)for(i=2;i20;i+)f fi i=f=fi-2i-2+f+fi-1i-1;for(i=0;i20;i+)for(i=0;i20;i+)if(i%5=0)if(i%5=0)printfprintf(n);n);printf(%12d printf(%12d,f fi i)/*For/*For循环结束循环结束*/*/*程序结束程序结束*/运行结果如下:运行结果如下:1 1 2 3 51 1 2 3 5 8 13 21 34 55 8 13 21 34 55 89 144 233 377 610 89 144 233 377 610 987 1597 2584 4181 6765 987 1597 2584 4181 6765if语句用来控制换行,每行输出5个数据。程序举例程序举例程序举例程序举例2 2 2 2:用用起泡法对起泡法对1010个数排序个数排序(由小到大由小到大)。第一趟比较 经过第一趟(共5次比较与交换)后,最大的数9已“沉底”。然后进行对余下的前面5个数第二趟比较,第二趟比较如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。程序流程图如下:程序流程图如下:程序实例程序实例7.3:#include void main()int a10;int i,j,t;printf(input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);for(j=0;j9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers:n);for(i=0;i10;i+)printf(%d,ai);printf(n);/*/*程序结束程序结束*/程序运行结果如下:程序运行结果如下:input 10 numbers:input 10 numbers:1 0 4 8 12 65-76 100-45 1231 0 4 8 12 65-76 100-45 123the sorted numbers:the sorted numbers:-76-45 0 1 4 8 12 65 100 123-76-45 0 1 4 8 12 65 100 123 7.27.2 二维数组的定义和引用二维数组的定义和引用 7.2.17.2.1二维数组的定义二维数组的定义二维数组定义的一般形式为二维数组定义的一般形式为类型说明符 数组名常量表达式常量表达式;例如:例如:定义a为34(3行4列)的数组,b为510(5行10列)的数组。如下:float a34,b510;不能写成不能写成 float afloat a3 3,4 4,b b5 5,1010;注意:注意:我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如:例如:可以把a看作是一个一维数组,它有3个元素:a0、a1、a2,每个元素又是一个包含4个元素的一维数组。7.2.17.2.1二维数组的定义二维数组的定义 二维数组中的元素在内存中的排列顺序是:按行存放,即先顺序存放第一行的元素,再存放第二行的元素 一维数组在内存中的存放一维数组在内存中的存放一维数组在内存中的存放一维数组在内存中的存放下图表示对下图表示对下图表示对下图表示对a a3 34 4数组存放的顺序数组存放的顺序数组存放的顺序数组存放的顺序 地址地址地址地址 值值值值 数组元素数组元素数组元素数组元素b b0000b b0101b b0202b b1010b b1111b b1212b b2020b b2121b b22223003000 0H H3003002 2H H3003004 4H H3003006 6H H3003008 8H H300300A AH H300300C CH H300300E EH H30301010H H例如:例如:整型数组整型数组b33=1,2,3,4,5,6,7,8,9;123456789问题:有了二维数组的基础,那么多维数组如何定义呢?定义三维数组:float a234;注意:注意:多维数组元素在内存中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快。7.2.17.2.1二维数组的定义二维数组的定义 a000a000a001a001a002a002a003a003 a010 a010a011a011a012a012a013a013 a020a020a021a021a022a022a023a023 a100 a100a101a101a102a102a103a103 a110 a110a111a111a112a112a113a113 a120 a120a121a121a122a122a123a123三维数组的元素排列顺序三维数组的元素排列顺序二维数组元素的表示形式为:数组名下标下标数组名下标下标例如:例如:a23下标可以是整型表达式,如 a2-12*2-1数组元素可以出现在表达式中,也可以被赋值例如:例如:b b1 12 2=a=a2 23 3/2/2不要写成不要写成 a a2 2,3 3,a a2-12-1,2*2-12*2-1形式形式 7.2.27.2.2二维数组的引用二维数组的引用常出现的错误有:常出现的错误有:inta34;/*/*定义定义a a为为3 34 4的数组的数组 */a34=3;在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。可以用下面可以用下面4 4种方法对二维数组初始化:种方法对二维数组初始化:数据类型 数组名 常量表达式1常量表达式2初始化数据;.分行给二维数组赋初值。例如:例如:intint a a3 34 4=1=1,2 2,3 3,44,55,6 6,7 7,88,99,1010,1111,12;12;.可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。例如:例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;7.2.3 7.2.3二维数组的引用二维数组的引用.可以对部分元素赋初值。例如:例如:int a34=1,5,9;1 0 0 01 0 0 05 0 0 0 5 0 0 0 9000也可以对各行中的某一元素赋初值,如intint a a3 34 4=1=1,00,66,00,0 0,11;11;1 0 0 01 0 0 00 6 0 00 6 0 00 00 0 110 0 11 1 0 0 01 0 0 05 6 0 0 5 6 0 0 0000也可以只对某几行元素赋初值。如:inta34=1,5,6;.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。例如:例如:intint a a3 34 4=1=1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,1010,1111,12;12;它等价于:int a4=1,2,3,4,5,6,7,8,9,10,11,12;在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。例如例如:intint a a4 4=0=0,0 0,33,00,10;10;0 0 3 00 0 0 00 10 0 0 7.2.47.2.4二维数组程序举例二维数组程序举例 例例7.4 7.4 将一个二维数组行和列元素互换,存到另一个将一个二维数组行和列元素互换,存到另一个 二维数组中。二维数组中。#include void main()int a23=1,2,3,4,5,6;int b32,i,j;printf(array a:n);for(i=0;i=1;i+)for(j=0;j=2;j+)例如:例如:a=1 2 3 1 4a=1 2 3 1 4 4 5 6 b=2 5 4 5 6 b=2 5 3 6 3 6 printf(%5d,aij);bji=aij;printf(n);printf(array b:n);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(%5d,bij);printf(n);/*/*程序结束程序结束*/运行结果如下:运行结果如下:array a:array a:1 2 3 1 2 3 4 5 6 4 5 6array b:array b:1 4 1 4 2 5 2 536 6 例例7.5:7.5:有一个有一个34的矩阵,要求编程序求出其中值最大的的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。那个元素的值,以及其所在的行号和列号。N-S流程图表示算法流程图表示算法如下:如下:程序:程序:#include void main()int i,j,row=0,colum=0,max;int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i=2;i+)for(j=0;jmax)max=aij;row=i;colum=j;printf(max=%d,row=%d,colum=%dn,max,row,colum);/*程序结束程序结束*/7.37.3 字符数组字符数组 7.3.17.3.1字符数组的定义字符数组的定义定义方法与前面介绍的类似。例如:char c10;c0=I;c1=;c2=a;c3=m;c4=;c5=h;c6=a;c7=p;c8=p;c9=y;对字符数组初始化,可逐个字符赋给数组中各元素。对字符数组初始化,可逐个字符赋给数组中各元素。例如:例如:char c10=I,a,m,h,a,p,p,y 7.3.27.3.2字符数组的初始化字符数组的初始化如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。char cchar c1010=c=c,pp,rr,oo,gg,rr,aa,m;m;如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。char cchar c=I,a,m,h,=I,a,m,h,a,p,p,y;a,p,p,y;数组数组c c的长度自动定为的长度自动定为1010。char diamondchar diamond5 55 5=,*,*,*,*,*,*,*,*定义和初始化一个二维字符数组定义和初始化一个二维字符数组 7.3.37.3.3字符数组的引用字符数组的引用例例7.6输输出一个字符串。出一个字符串。程序如下:程序如下:#includevoidmain()charc10=I,a,m,a,b,o,y;inti;for(i=0;i10;i+)printf(%c,ci);printf(n);运行结果:运行结果:I am a boyI am a boy 例例7.7 7.7 输出一个钻石图形输出一个钻石图形#include void main()char diamond5=,*,*,*,*,*,*,*,*;int i,j;for(i=0;i5;i+)for(j=0;j字符串2,函数值为一正整数。(3)(3)如果字符串1str2)printf(yes);而只能用if(strcmp(str1,str2)0)printf(yes);6.strlen函数函数 其一般形式为其一般形式为:strlen(字符数组字符数组)strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括0在内)。例如:例如:char char strstr1010=China;=China;printfprintf(%d(%d,strlenstrlen(strstr););输出结果不是10,也不是6,而是5。也可以直接测试字符串常量的长度,如strlen(China);7.7.strlwr函数函数 其一般形式为其一般形式为:strlwrstrlwr(字符串字符串)strlwr函数的作用是将字符串中大写字母换成小写字母。8.8.strupr函数函数 其一般形式为其一般形式为:struprstrupr(字符串字符串)strupr函数的作用是将字符串中小写字母换成大写字母。例例7.8 7.8 输入一行字符,统计其中有多少个单词,单输入一行字符,统计其中有多少个单词,单 词之间用空格分隔开。词之间用空格分隔开。7.3.77.3.7字符数组应用举例字符数组应用举例 程序如下:程序如下:#include void main()char string81;int i,num=0,word=0;char c;gets(string);for(i=0;(c=stringi)!=0;i+)if(c=)word=0;else if(word=0)word=1;num+;printf(There are%d words in the line.n,num);运行情况如下:运行情况如下:I am a boy.There are 4 words in the line.例例7.9 7.9 有有3 3个字符串个字符串,要求找出其中最大者要求找出其中最大者 程序如下程序如下:#include#includevoid main()char string20;char str320;int i;for(i=0;i0)strcpy(string,str0)else strcpy(string,str1);if(strcmp(str2,string)0)strcpy(string,str2);printf(nthe largest string is n%sn,string);运行结果如下运行结果如下:CHINAHOLLANDAMERICA the largest string isHOLLAND

    注意事项

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

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




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

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

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

    收起
    展开