第6章+数组-C语言大学实用教程课件.ppt

上传人(卖家):晟晟文业 文档编号:2710960 上传时间:2022-05-20 格式:PPT 页数:73 大小:1.79MB
下载 相关 举报
第6章+数组-C语言大学实用教程课件.ppt_第1页
第1页 / 共73页
第6章+数组-C语言大学实用教程课件.ppt_第2页
第2页 / 共73页
第6章+数组-C语言大学实用教程课件.ppt_第3页
第3页 / 共73页
第6章+数组-C语言大学实用教程课件.ppt_第4页
第4页 / 共73页
第6章+数组-C语言大学实用教程课件.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

1、2022-5-20C语言大学实用教程课件 制作人 苏小红22022-5-20C语言大学实用教程课件 制作人 苏小红3C提供了一组基本类型:提供了一组基本类型:int、double等。除了基本等。除了基本数据类型,数据类型,还有一些组合的数据类型还有一些组合的数据类型,称为,称为构造构造数据类型数据类型。(书上。(书上18页)页) 构造机制包括构造机制包括数组数组、指针、结构、联合。可、指针、结构、联合。可用它们组合数据对象,用它们组合数据对象,作为整体使用作为整体使用。2022-5-20C语言大学实用教程课件 制作人 苏小红4 组合的数据对象称为组合的数据对象称为复合数据对象复合数据对象。复合

2、对。复合对象形成的类型称为象形成的类型称为复合数据类型复合数据类型,组成部分称为,组成部分称为成成分分/成员成员/元素元素。 可创建能存放复合类型数据的变量。可创建能存放复合类型数据的变量。 这种变量这种变量可作为整体使用可作为整体使用,通过名字可以访,通过名字可以访问整个复合对象。问整个复合对象。 也也可以访问复合数据对象的成分可以访问复合数据对象的成分,如:使用,如:使用成分的值或给成分赋值。成分的值或给成分赋值。 本章介绍数组就是常见的组合机制。本章介绍数组就是常见的组合机制。2022-5-20C语言大学实用教程课件 制作人 苏小红52022-5-20C语言大学实用教程课件 制作人 苏小

3、红6保存大保存大量同类量同类型的相型的相关数据关数据2022-5-20C语言大学实用教程课件 制作人 苏小红76.1 数组的概念、定义和使用数组的概念、定义和使用数组(数组(array)是多个)是多个同类型同类型数据对象的组合。数据对象的组合。一个数组汇集了多个数据项,一个数组汇集了多个数据项,数组元素数组元素。可从数组出发处理各元素,以统一方式处理一批可从数组出发处理各元素,以统一方式处理一批/所有所有元素,是元素,是数组数组和和一组独立变量一组独立变量的主要区别。的主要区别。为此需要:为此需要: 数组描述,数组变量定义数组描述,数组变量定义 数组使用,包括通过数组变量使用其元素数组使用,包

4、括通过数组变量使用其元素 数组实现,数组的存储方式数组实现,数组的存储方式2022-5-20C语言大学实用教程课件 制作人 苏小红8 数组变量定义数组变量定义定义数组变量(定义数组变量(定义数组定义数组)时需说明:)时需说明: 数组元素类型数组元素类型 数组(变量)的元素个数数组(变量)的元素个数 元素个数也称数组元素个数也称数组大小大小或或长度长度。 定义数组变量时,方括号内整型表达式说明元素个数,表达定义数组变量时,方括号内整型表达式说明元素个数,表达式应用式应用静态确定值静态确定值,可用字面量或枚举常量。,可用字面量或枚举常量。例,定义两个数组:例,定义两个数组:int a10; dou

5、ble a1100;数组定义可以与其他变量定义写在一起,如:数组定义可以与其他变量定义写在一起,如:int a216, n, a325, m;2022-5-20C语言大学实用教程课件 制作人 苏小红9a9a8a7a1a0数组首地址数组首地址数组数组(Array)的实现的实现2022-5-20C语言大学实用教程课件 制作人 苏小红102022-5-20C语言大学实用教程课件 制作人 苏小红11 也可定义也可定义外部数组外部数组和和局部静态数组局部静态数组(用(用static)。作用域与存在期与简单变量相同。作用域与存在期与简单变量相同。数组的外部说明不必描述数组大小。例:数组的外部说明不必描述数

6、组大小。例:extern int a;extern double a1;下面函数里数组定义不合法:下面函数里数组定义不合法:void f(int m, int n) int bn; /*非法,编译时无法确定大小非法,编译时无法确定大小*/ .新新 C99 标准支持这种定义,满足标准支持这种定义,满足 C99 的编译器很少的编译器很少2022-5-20C语言大学实用教程课件 制作人 苏小红12数组的存储结构数组的存储结构2022-5-20C语言大学实用教程课件 制作人 苏小红13 数组使用数组使用 基本操作是基本操作是元素访问元素访问。元素顺序编号,。元素顺序编号,首元素序号首元素序号0,其余顺

7、序编号。其余顺序编号。n元数组元素编号是元数组元素编号是0到到n-1。定义:。定义:int b100;元素编号为元素编号为0、1、2、 。称为。称为下标下标或或指标指标。 元素访问通过元素访问通过运算符,优先级最高,运算对象是数组名运算符,优先级最高,运算对象是数组名和括号里表示下标的表达式。表达式、语句里的和括号里表示下标的表达式。表达式、语句里的 b3 称为下称为下标表达式。标表达式。例:有上面定义后,可写:例:有上面定义后,可写:b0 = 1; b1 = 1;b2 = b0 + b1;b3 = b1 + b2;2022-5-20C语言大学实用教程课件 制作人 苏小红14 数组意义在于能以

8、统一方式描述对一组数据的处理。数组意义在于能以统一方式描述对一组数据的处理。下标表达式可用一般的整型表达式。如:下标表达式可用一般的整型表达式。如:bi = bi-1 + bi-2;访问哪个元素由访问哪个元素由i值确定值确定。同一语句可访问不同元素,。同一语句可访问不同元素,可用在循环里访问一批元素。可用在循环里访问一批元素。for (i = 0; i 100; +i) bi += a1i * a2i; /* 假设数组都有定义假设数组都有定义 */循环中涉及到循环中涉及到300个基本数据对象。个基本数据对象。2022-5-20C语言大学实用教程课件 制作人 苏小红15对数组的多个或全部元素操作

9、,常用对数组的多个或全部元素操作,常用for语句。语句。令变量遍历数组下标:令变量遍历数组下标:for (n = 0; n 数组长度数组长度; +n) .问题:问题:fib是是30个元素的数组,假设程序里写:个元素的数组,假设程序里写: for(n = 2; n = 30; +n) fibn = fibn-1 + fibn-2;循环中试图访问循环中试图访问fib30,实际无此元素。,实际无此元素。用超范围的下标访问称为用超范围的下标访问称为越界访问越界访问,是数组使用中最常,是数组使用中最常见的错误。使用见的错误。使用大于大于最大下标的下标,最大下标的下标,将访问数组以外将访问数组以外的空间的

10、空间。那里的数据是未知的。那里的数据是未知的。下标值超范围是运行中下标值超范围是运行中的问题的问题。2022-5-20C语言大学实用教程课件 制作人 苏小红16 C不检查数组元素访问的合法性,运行中出现越界不检查数组元素访问的合法性,运行中出现越界不会报错。不会报错。超范围访问是严重错误,后果无法预料超范围访问是严重错误,后果无法预料。 在一些系统里越界访问在一些系统里越界访问可能导致动态错可能导致动态错,系统强行,系统强行终止出错的程序。终止出错的程序。DOS 不检查非法访问,越界可能破不检查非法访问,越界可能破坏本程序的数据坏本程序的数据/程序本身程序本身/其他软件,甚至其他软件,甚至 D

11、OS 系统。系统。编程者要保证数组下标值的合法性,保证不越界。编程者要保证数组下标值的合法性,保证不越界。2022-5-20C语言大学实用教程课件 制作人 苏小红17 定义数组时可直接初始化。外部、局部静态或自动数定义数组时可直接初始化。外部、局部静态或自动数组都可在定义时进行初始化。组都可在定义时进行初始化。定义时初始化的例子:定义时初始化的例子: int b4 = 1, 1, 2, 3;double ax6 = 1.3,2.24,5.11,8.37,6.5; int a5 = 0 ; int a = 11, 22, 33, 44, 55 ; 初值表达式必须是常量表达式初值表达式必须是常量表

12、达式。对自动数组也一样。对自动数组也一样。数组初始化数组初始化2022-5-20C语言大学实用教程课件 制作人 苏小红18这种写法只能用于数组初始化,这种写法只能用于数组初始化,不能用在语句里不能用在语句里。 若定义时未初始化,外部和局部静态数组的元素自若定义时未初始化,外部和局部静态数组的元素自动初始化为动初始化为0;自动数组不自动初始化自动数组不自动初始化。 可只为部分元素提供初值,其余元素将自动置可只为部分元素提供初值,其余元素将自动置0。初始化表元素个数不得超过数组元素个数。例:初始化表元素个数不得超过数组元素个数。例:int b14 = 1, 2;b12、b13将给初值将给初值0。

13、若给了所有元素的初值,可以不写数组大小而只写若给了所有元素的初值,可以不写数组大小而只写方括号,元素个数由初值个数确定。例:方括号,元素个数由初值个数确定。例:int fib = 1,1,2,3,5,8,13,21,34,55;这种写法能减少维护负担,有利于程序修改。这种写法能减少维护负担,有利于程序修改。2022-5-20C语言大学实用教程课件 制作人 苏小红19数组的特点数组的特点2022-5-20C语言大学实用教程课件 制作人 苏小红20只能逐个对数组元素进行操作(字符数组例外)只能逐个对数组元素进行操作(字符数组例外)int a10,i;scanf( %d ,&ai);for (i=0

14、;i10;i+) scanf( %d ,&ai);printf( %d ,ai);for (i=0;i10;i+) printf( %d ,ai);2022-5-20C语言大学实用教程课件 制作人 苏小红212022-5-20C语言大学实用教程课件 制作人 苏小红22#include #define ARR_SIZE 40main() float scoreARR_SIZE; int n, i; long numARR_SIZE; printf(Please enter total number:); scanf(%d, &n); /*从键盘输入学生人数从键盘输入学生人数n*/ printf(

15、“Please enter the number and score:n”); for (i=0; in; i+) /*分别以长整型和实型格式输入学生的学号和成绩分别以长整型和实型格式输入学生的学号和成绩*/ scanf(%ld%f, &numi, &scorei); printf(Your enter the number and score:n); for (i=0; in; i+) printf(%d %fn, numi, scorei); system(pause);2022-5-20C语言大学实用教程课件 制作人 苏小红232022-5-20C语言大学实用教程课件 制作人 苏小红24

16、- - 2022-5-20C语言大学实用教程课件 制作人 苏小红251 2 34 5 06 0 00 0 0结果:结果:5, 0, 0【例二例二】若若int a 3=1, 2, 3, 4, 5, 6, 7,则则a数组的第一维大小是多少?数组的第一维大小是多少? 1 2 34 5 67 0 02022-5-20C语言大学实用教程课件 制作人 苏小红262022-5-20C语言大学实用教程课件 制作人 苏小红272022-5-20C语言大学实用教程课件 制作人 苏小红28short int a23;a0a1a10 a11a12a00 a01a02存放顺序:存放顺序:先顺序存放第先顺序存放第0 0行

17、的元素行的元素再存放第再存放第1 1行的元素行的元素a00a01a02a10a11a12所以需要知道数组的每一行所以需要知道数组的每一行 有多少列,这样从有多少列,这样从起始地址开始,才能正确的读出数组的元素起始地址开始,才能正确的读出数组的元素按行存放按行存放2022-5-20C语言大学实用教程课件 制作人 苏小红292022-5-20C语言大学实用教程课件 制作人 苏小红30数组的输入和输出只能逐个对数组元素进行操作数组的输入和输出只能逐个对数组元素进行操作(字符数组例外)(字符数组例外)int a23,i,j;输入第输入第i行第行第j列元素:列元素:scanf(“%d”,&aij);输入

18、整个数组元素:输入整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);输出第输出第i行第行第j列列元素:元素:printf(“%d”,aij);输出整个数组元素:输出整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);2022-5-20C语言大学实用教程课件 制作人 苏小红31main() int a4 = 1,2,3,4, b4; b = a; 解决方法解决方法 法法1:1:逐个元素赋值逐个元素赋值 b0=a0; b1=a1; b2=a2; b3=a3; 法法2:2:通过循环赋

19、值通过循环赋值 int i; for (i=0;i4;i+) bi = ai; 原因原因: :数组名表示数组的首地址数组名表示数组的首地址, ,其值不可改变其值不可改变! !2022-5-20C语言大学实用教程课件 制作人 苏小红32 通过双重循环赋值通过双重循环赋值 int a42=1,2,3,4,5,6,7,8; int b42; int i,j; for (i=0; i4; i+) for (j=0; jamid, low=mid+1第二次循环:第二次循环:99011 99013 99015 99017 99019 low=mid high x=amid,找到,找到哈,找到了!2022-

20、5-20C语言大学实用教程课件 制作人 苏小红59数组下标数组下标 0 1 2 3 4 5 6第一次循环:第一次循环:99011 99013 99015 99017 99019 查找值查找值x=99016 low mid high xamid, low=mid+1第二次循环:第二次循环:99011 99013 99015 99017 99019 low=mid high xamid, high=mid-1第三次循环:第三次循环:99011 99013 99015 99017 99019 high low 不满足不满足low=high, 循环结束循环结束,未找到未找到 唉,没找到!2022-5-

21、20C语言大学实用教程课件 制作人 苏小红602022-5-20C语言大学实用教程课件 制作人 苏小红61a00a01a02a10a11a12a00a01a02a10a11a122022-5-20C语言大学实用教程课件 制作人 苏小红622022-5-20C语言大学实用教程课件 制作人 苏小红632022-5-20C语言大学实用教程课件 制作人 苏小红642022-5-20C语言大学实用教程课件 制作人 苏小红652022-5-20C语言大学实用教程课件 制作人 苏小红662022-5-20C语言大学实用教程课件 制作人 苏小红672022-5-20C语言大学实用教程课件 制作人 苏小红682022-5-20C语言大学实用教程课件 制作人 苏小红692022-5-20C语言大学实用教程课件 制作人 苏小红702022-5-20C语言大学实用教程课件 制作人 苏小红712022-5-20C语言大学实用教程课件 制作人 苏小红722022-5-20C语言大学实用教程课件 制作人 苏小红73

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第6章+数组-C语言大学实用教程课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|