数组C语言大学实用教程课件.ppt
《数组C语言大学实用教程课件.ppt》由会员分享,可在线阅读,更多相关《数组C语言大学实用教程课件.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第6 6 6 6章章章章 数组数组数组数组哈尔滨工业大学计算机科学与技术学院哈尔滨工业大学计算机科学与技术学院苏小红苏小红C C语言大学实用教程语言大学实用教程2023/4/23C语言大学实用教程课件 制作人 苏小红2内容提要内容提要 数组类型;数组类型;数组类型;数组类型;向函数传递一维数组和二维数组;向函数传递一维数组和二维数组;向函数传递一维数组和二维数组;向函数传递一维数组和二维数组;常用算法:排序、查找、求最大最小值等;常用算法:排序、查找、求最大最小值等;常用算法:排序、查找、求最大最小值等;常用算法:排序、查找、求最大最小值等;用字符数组存取字符串;用字符数组存取字符串;用
2、字符数组存取字符串;用字符数组存取字符串;使用字符串处理函数处理字符串使用字符串处理函数处理字符串使用字符串处理函数处理字符串使用字符串处理函数处理字符串2023/4/23C语言大学实用教程课件 制作人 苏小红3C提供了一组基本类型:提供了一组基本类型:int、double等。除了基本等。除了基本数据类型,数据类型,还有一些组合的数据类型还有一些组合的数据类型,称为,称为构造构造数据类型数据类型。(书上。(书上18页)页)构造机制包括构造机制包括数组数组、指针、结构、联合。可、指针、结构、联合。可用它们组合数据对象,用它们组合数据对象,作为整体使用作为整体使用。2023/4/23C语言大学实用
3、教程课件 制作人 苏小红4 组合的数据对象称为组合的数据对象称为复合数据对象复合数据对象。复合对。复合对象形成的类型称为象形成的类型称为复合数据类型复合数据类型,组成部分称为,组成部分称为成成分分/成员成员/元素元素。可创建能存放复合类型数据的变量。可创建能存放复合类型数据的变量。这种变量这种变量可作为整体使用可作为整体使用,通过名字可以访,通过名字可以访问整个复合对象。问整个复合对象。也也可以访问复合数据对象的成分可以访问复合数据对象的成分,如:使用,如:使用成分的值或给成分赋值。成分的值或给成分赋值。本章介绍数组就是常见的组合机制。本章介绍数组就是常见的组合机制。2023/4/23C语言大
4、学实用教程课件 制作人 苏小红5数组的用处数组的用处 保存大量同类型的相关数据的问题保存大量同类型的相关数据的问题保存大量同类型的相关数据的问题保存大量同类型的相关数据的问题-例如,输入全班例如,输入全班例如,输入全班例如,输入全班3030个学生的成绩,并排出名次。个学生的成绩,并排出名次。个学生的成绩,并排出名次。个学生的成绩,并排出名次。-例如,矩阵运算,表格数据等。例如,矩阵运算,表格数据等。例如,矩阵运算,表格数据等。例如,矩阵运算,表格数据等。2023/4/23C语言大学实用教程课件 制作人 苏小红6为什么使用数组为什么使用数组 例子:要读入某班全体例子:要读入某班全体例子:要读入某
5、班全体例子:要读入某班全体5050位同学某科学习成绩,然后进行位同学某科学习成绩,然后进行位同学某科学习成绩,然后进行位同学某科学习成绩,然后进行简单处理(求平均成绩、最高分、最低分简单处理(求平均成绩、最高分、最低分简单处理(求平均成绩、最高分、最低分简单处理(求平均成绩、最高分、最低分)若用简单变量,需若用简单变量,需若用简单变量,需若用简单变量,需5050个不同变量名,要用很多个个不同变量名,要用很多个个不同变量名,要用很多个个不同变量名,要用很多个scanfscanf命令命令命令命令 int score1,score2,score50int score1,score2,score50;
6、scanf(%d,%d,%d,&score1,&score2,&score3);scanf(%d,%d,%d,&score1,&score2,&score3);scanf(%d,%d,%d,&score4,&score5,&score6);scanf(%d,%d,%d,&score4,&score5,&score6);而用数组,可共用一个而用数组,可共用一个而用数组,可共用一个而用数组,可共用一个scanfscanf命令并利用循环结构读取命令并利用循环结构读取命令并利用循环结构读取命令并利用循环结构读取 int score50,i;int score50,i;for(i=0;i50;i+)fo
7、r(i=0;i50;i+)scanf(%d,&scorei);scanf(%d,&scorei);保存大保存大量同类量同类型的相型的相关数据关数据2023/4/23C语言大学实用教程课件 制作人 苏小红76.1 数组的概念、定义和使用数组的概念、定义和使用数组(数组(array)是多个)是多个同类型同类型数据对象的组合。数据对象的组合。一个数组汇集了多个数据项,一个数组汇集了多个数据项,数组元素数组元素。可从数组出发处理各元素,以统一方式处理一批可从数组出发处理各元素,以统一方式处理一批/所有所有元素,是元素,是数组数组和和一组独立变量一组独立变量的主要区别。的主要区别。为此需要:为此需要:数
8、组描述,数组变量定义数组描述,数组变量定义数组使用,包括通过数组变量使用其元素数组使用,包括通过数组变量使用其元素数组实现,数组的存储方式数组实现,数组的存储方式2023/4/23C语言大学实用教程课件 制作人 苏小红8 数组变量定义数组变量定义定义数组变量(定义数组变量(定义数组定义数组)时需说明:)时需说明:数组元素类型数组元素类型数组(变量)的元素个数数组(变量)的元素个数 元素个数也称数组元素个数也称数组大小大小或或长度长度。定义数组变量时,方括号内整型表达式说明元素个数,表达定义数组变量时,方括号内整型表达式说明元素个数,表达式应用式应用静态确定值静态确定值,可用字面量或枚举常量。,
9、可用字面量或枚举常量。例,定义两个数组:例,定义两个数组:int a10;double a1100;数组定义可以与其他变量定义写在一起,如:数组定义可以与其他变量定义写在一起,如:int a216,n,a325,m;2023/4/23C语言大学实用教程课件 制作人 苏小红9 定义定义定义定义 存储类型存储类型存储类型存储类型 数据类型数据类型数据类型数据类型 数组名数组名数组名数组名 整数整数整数整数1 1 整数整数整数整数2 2 整数整数整数整数n;n;a9a8a7a1a0数组首地址数组首地址intint a10;a10;定义一个有定义一个有定义一个有定义一个有1010个个个个intint型
10、元素的数组型元素的数组型元素的数组型元素的数组 系统会在内存分配连续的系统会在内存分配连续的系统会在内存分配连续的系统会在内存分配连续的1010个个个个intint空间给此数组空间给此数组空间给此数组空间给此数组 直接对直接对直接对直接对a a的访问,就是访问此数组的首地址的访问,就是访问此数组的首地址的访问,就是访问此数组的首地址的访问,就是访问此数组的首地址 使用使用使用使用a0a0、a1a1、a2a2、a9a9这样这样这样这样的形式访问每个元素。可以像使用普通变量的形式访问每个元素。可以像使用普通变量的形式访问每个元素。可以像使用普通变量的形式访问每个元素。可以像使用普通变量一样使用他们
11、。一样使用他们。一样使用他们。一样使用他们。数组数组(Array)的实现的实现2023/4/23C语言大学实用教程课件 制作人 苏小红10 数组大小最好用宏来定义,以适应未来可能的变化数组大小最好用宏来定义,以适应未来可能的变化数组大小最好用宏来定义,以适应未来可能的变化数组大小最好用宏来定义,以适应未来可能的变化#define#define SIZE 10 SIZE 10intint aSIZE;aSIZE;数组大小定义好后,将永远不变数组大小定义好后,将永远不变数组大小定义好后,将永远不变数组大小定义好后,将永远不变#includeinclude#define#define SIZE 10
12、 SIZE 10mainmain()()intint aSIZE;aSIZE;2023/4/23C语言大学实用教程课件 制作人 苏小红11 也也可可定定义义外外部部数数组组和和局局部部静静态态数数组组(用用static)。作用域与存在期与简单变量相同。作用域与存在期与简单变量相同。数组的外部说明不必描述数组大小。例:数组的外部说明不必描述数组大小。例:extern int a;extern double a1;下面函数里数组定义不合法:下面函数里数组定义不合法:void f(int m,int n)int bn;/*非法,编译时无法确定大小非法,编译时无法确定大小*/.新新 C99 标准支持这
13、种定义,满足标准支持这种定义,满足 C99 的编译器很少的编译器很少2023/4/23C语言大学实用教程课件 制作人 苏小红12 根据数组的根据数组的根据数组的根据数组的数据类型数据类型数据类型数据类型,为每一元素安排相同长度的存储单元,为每一元素安排相同长度的存储单元,为每一元素安排相同长度的存储单元,为每一元素安排相同长度的存储单元 根据数组的根据数组的根据数组的根据数组的存储类型存储类型存储类型存储类型,将其安排在内存的动态、静态存储区,将其安排在内存的动态、静态存储区,将其安排在内存的动态、静态存储区,将其安排在内存的动态、静态存储区或寄存器区或寄存器区或寄存器区或寄存器区 用用用用s
14、izeofsizeof(a)(a)来获得数组来获得数组来获得数组来获得数组a a所占字节数所占字节数所占字节数所占字节数shortshort数组的存储结构数组的存储结构 一维数组占用字节数一维数组占用字节数一维数组占用字节数一维数组占用字节数=数组长度数组长度数组长度数组长度 sizeof(sizeof(基类型基类型基类型基类型)2023/4/23C语言大学实用教程课件 制作人 苏小红13 数组使用数组使用 基本操作是基本操作是元素访问元素访问。元素顺序编号,。元素顺序编号,首元素序号首元素序号0,其余顺序编号。其余顺序编号。n元数组元素编号是元数组元素编号是0到到n-1。定义:。定义:int
15、 b100;元素编号为元素编号为0、1、2、。称为。称为下标下标或或指标指标。元元素素访访问问通通过过运运算算符符,优优先先级级最最高高,运运算算对对象象是是数数组组名名和和括括号号里里表表示示下下标标的的表表达达式式。表表达达式式、语语句句里里的的 b3 称称为为下下标表达式。标表达式。例:有上面定义后,可写:例:有上面定义后,可写:b0=1;b1=1;b2=b0+b1;b3=b1+b2;99992023/4/23C语言大学实用教程课件 制作人 苏小红14 数数组组意意义义在在于于能能以以统统一一方方式式描描述述对对一一组组数数据据的的处处理理。下标表达式可用一般的整型表达式。如:下标表达式
16、可用一般的整型表达式。如:bi=bi-1+bi-2;访访问问哪哪个个元元素素由由i值值确确定定。同同一一语语句句可可访访问问不不同同元元素素,可用在循环里访问一批元素。可用在循环里访问一批元素。for(i=0;i 100;+i)bi+=a1i*a2i;/*假设数组都有定义假设数组都有定义*/循环中涉及到循环中涉及到300个基本数据对象。个基本数据对象。2023/4/23C语言大学实用教程课件 制作人 苏小红15对数组的多个或全部元素操作,常用对数组的多个或全部元素操作,常用for语句。语句。令变量遍历数组下标:令变量遍历数组下标:for(n=0;n 数组长度数组长度;+n).问题:问题:fib
17、是是30个元素的数组,假设程序里写:个元素的数组,假设程序里写:for(n=2;n=30;+n)fibn=fibn-1+fibn-2;循环中试图访问循环中试图访问fib30,实际无此元素。,实际无此元素。用用超超范范围围的的下下标标访访问问称称为为越越界界访访问问,是是数数组组使使用用中中最最常常见见的的错错误误。使使用用大大于于最最大大下下标标的的下下标标,将将访访问问数数组组以以外外的的空空间间。那那里里的的数数据据是是未未知知的的。下下标标值值超超范范围围是是运运行行中中的问题的问题。2023/4/23C语言大学实用教程课件 制作人 苏小红16 C不检查数组元素访问的合法性,运行中出现越
18、界不检查数组元素访问的合法性,运行中出现越界不会报错。不会报错。超范围访问是严重错误,后果无法预料超范围访问是严重错误,后果无法预料。在一些系统里越界访问在一些系统里越界访问可能导致动态错可能导致动态错,系统强行,系统强行终止出错的程序。终止出错的程序。DOS 不检查非法访问,越界可能破坏不检查非法访问,越界可能破坏本程序的数据本程序的数据/程序本身程序本身/其他软件,甚至其他软件,甚至 DOS 系统。系统。编程者要保证数组下标值的合法性,保证不越界。编程者要保证数组下标值的合法性,保证不越界。2023/4/23C语言大学实用教程课件 制作人 苏小红17数组定义后的初值仍然是随机数,一般需要我
19、们来初始化数组定义后的初值仍然是随机数,一般需要我们来初始化数组定义后的初值仍然是随机数,一般需要我们来初始化数组定义后的初值仍然是随机数,一般需要我们来初始化 定义数组时可直接初始化。外部、局部静态或自动数定义数组时可直接初始化。外部、局部静态或自动数组都可在定义时进行初始化。组都可在定义时进行初始化。定义时初始化的例子:定义时初始化的例子: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;初值表达式必须是常量表达式初值表达式必须是常量表达式。对自动数组也一样。对自动数组也一样。数组初
20、始化数组初始化2023/4/23C语言大学实用教程课件 制作人 苏小红18这种写法只能用于数组初始化,这种写法只能用于数组初始化,不能用在语句里不能用在语句里。若若定定义义时时未未初初始始化化,外外部部和和局局部部静静态态数数组组的的元元素素自自动初始化为动初始化为0;自动数组不自动初始化自动数组不自动初始化。可可只只为为部部分分元元素素提提供供初初值值,其其余余元元素素将将自自动动置置0。初初始化表元素个数不得超过数组元素个数。例:始化表元素个数不得超过数组元素个数。例:int b14=1,2;b12、b13将给初值将给初值0。若若给给了了所所有有元元素素的的初初值值,可可以以不不写写数数组
21、组大大小小而而只只写写方括号,元素个数由初值个数确定。例:方括号,元素个数由初值个数确定。例:int fib=1,1,2,3,5,8,13,21,34,55;这种写法能减少维护负担,有利于程序修改。这种写法能减少维护负担,有利于程序修改。2023/4/23C语言大学实用教程课件 制作人 苏小红19 快速地随机访问快速地随机访问快速地随机访问快速地随机访问 一旦定义,不能改变大小一旦定义,不能改变大小一旦定义,不能改变大小一旦定义,不能改变大小数组的特点数组的特点2023/4/23C语言大学实用教程课件 制作人 苏小红20只能逐个对数组元素进行操作(字符数组例外)只能逐个对数组元素进行操作(字符
22、数组例外)输入方法:输入方法:输入方法:输入方法:int a10,i;输入第输入第输入第输入第i i个数组元素:个数组元素:个数组元素:个数组元素:scanf(%d,&ai);输入整个数组元素输入整个数组元素输入整个数组元素输入整个数组元素:for(i=0;i10;i+)scanf(%d,&ai);输出方法:输出方法:输出方法:输出方法:输出第输出第输出第输出第i i个数组元素:个数组元素:个数组元素:个数组元素:printf(%d,ai);输出整个数组元素:输出整个数组元素:输出整个数组元素:输出整个数组元素:for(i=0;i10;i+)printf(%d,ai);一维数组的输入和输出20
23、23/4/23C语言大学实用教程课件 制作人 苏小红21举例:请登记某班级数学成绩,再输出举例:请登记某班级数学成绩,再输出举例:请登记某班级数学成绩,再输出举例:请登记某班级数学成绩,再输出2023/4/23C语言大学实用教程课件 制作人 苏小红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(“Please enter the
24、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);2023/4/23C语言大学实用教程课件 制作人 苏小红23一维数组和多维数组一维数组和多维数组 一维数组一维数组一维数组一维数组 用一个下标确定各元素在数组中的顺序用一个下标确定各元素在数组
25、中的顺序用一个下标确定各元素在数组中的顺序用一个下标确定各元素在数组中的顺序 可用排列成一行的元素组来表示可用排列成一行的元素组来表示可用排列成一行的元素组来表示可用排列成一行的元素组来表示 如如如如 int a5;int a5;二维数组二维数组二维数组二维数组 用两个下标确定各元素在数组中的顺序用两个下标确定各元素在数组中的顺序用两个下标确定各元素在数组中的顺序用两个下标确定各元素在数组中的顺序 可用排列成可用排列成可用排列成可用排列成i i行,行,行,行,j j列的元素组来表示列的元素组来表示列的元素组来表示列的元素组来表示 如如如如 int b23;int b23;n n维数组维数组维数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 语言 大学 实用教程 课件
限制150内