《C语言设计》课程教学资源(PPT课件)第七章 数组

第七章数组 在程序设计中,为了处理方便,把具有相同类 型的若干变量按有序的形式组织起来。这些按序排 列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。用一个统一的数组名和下 标来唯一地确定数组中的元素
第七章 数组 在程序设计中,为了处理方便,把具有相同类 型的若干变量按有序的形式组织起来。这些按序排 列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。用一个统一的数组名和下 标来唯一地确定数组中的元素

7.1维数组的定义和引用 7.1.1一维数组的定义方式 在C语言中使用数组必须先进行定义。 维数组的定义方式为: 类型说明符数组名常量表达式]; 其中:数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也 称为数组的长度。 例如:inta[10] float b[10]. c[20] char ch[20] 说明: )数组的类型实际上是指数组元素的取值类型。对于同一 个数组,其所有元素的数据类型都是相同的 2)数组名的书写规则应符合标识符的书写规定
7.1 一维数组的定义和引用 7.1.1 一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为: 类型说明符 数组名[常量表达式]; 其中:数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也 称为数组的长度。 例如:int a[10]; float b[10],c[20]; char ch[20]; 说明: 1) 数组的类型实际上是指数组元素的取值类型。对于同一 个数组,其所有元素的数据类型都是相同的。 2) 数组名的书写规则应符合标识符的书写规定

3)数组名不能与其它变量名相同 例如: maino [ int a; float a[10]: }是错误的。 4)数组名后是用方括弧括起来的常量表达式,不 能用圆括弧 5)允许在同一个类型说明中,说明多个数组和多 个变量 例如:inta,b,cd,k1[10,k2[20]
3) 数组名不能与其它变量名相同。 例如: main() { int a; float a[10]; …… } 是错误的。 4) 数组名后是用方括弧括起来的常量表达式,不 能用圆括弧。 5) 允许在同一个类型说明中,说明多个数组和多 个变量。 例如: int a,b,c,d,k1[10],k2[20];

6)不能在方括号中用变量来表示元素的个数,但是可 以是符号常数或常量表达式。 例如:# define FD5 maino i int a[3+2], b[FD]: }是合法的。但是下述说明方式是错误的: maino [ int n=5 int ann]:
6) 不能在方括号中用变量来表示元素的个数,但是可 以是符号常数或常量表达式。 例如:#define FD 5 main() { int a[3+2],b[FD]; …… } 是合法的。但是下述说明方式是错误的: main() { int n=5; int a[n]; …… }

712一维数组元素的引用 数组元素的一般形式为: 数组名[下标] 其中下标可能为整型常量或整型表达式。下标从O开 始 数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。 下标变量和数组说明在形式中有些相似,但这两者 具有完全不同的含义。数组说明的方括号中给出的是某 维的长度;而数组元素中的下标是该元素在数组中的 位置标识。前者只能是常量,后者可以是常量,变量或 表达式
7.1.2 一维数组元素的引用 数组元素的一般形式为: 数组名[下标] 其中下标可能为整型常量或整型表达式。下标从0开 始。 数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。 下标变量和数组说明在形式中有些相似,但这两者 具有完全不同的含义。数组说明的方括号中给出的是某 一维的长度;而数组元素中的下标是该元素在数组中的 位置标识。前者只能是常量,后者可以是常量,变量或 表达式

在C语言中只能逐个地使用下标变量,而 不能一次引用整个数组 例如,输出有10个元素的数组必须使用循 环语句逐个输出各下标变量: for(i=0:i<10:i++) printf("%d",a[i〕) 而不能用一个语句输出整个数组。 下面的写法是错误的: printf(" %d",a)
在C语言中只能逐个地使用下标变量,而 不能一次引用整个数组。 例如,输出有10个元素的数组必须使用循 环语句逐个输出各下标变量: for(i=0; i<10; i++) printf("%d",a[i]); 而不能用一个语句输出整个数组。 下面的写法是错误的: printf(" %d",a);

713一维数组的初始化 数组初始化是指在数组定义时给数组元素赋予初值 初始化赋值的一般形式为: 类型说明符数组名[常量表达式]={值,值…值}; 其中在{}中的各数值即为各元素的初值,各值之间用 逗号间隔。 例如: inta[10]={01,2,34,5,6789} 相当于a[]=0:q1]=1∷a[9]=9
7.1.3 一维数组的初始化 数组初始化是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为: 类型说明符 数组名[常量表达式]={值,值……值}; 其中在{ }中的各数值即为各元素的初值,各值之间用 逗号间隔。 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1;...a[9]=9;

C语言对数组的初始化赋值还有以下几点规定: 1)可以只给部分元素赋初值 当〔}中值的个数少于元素个数时,只给前面部分元素 赋值,其余自动赋O值。 例如:inta[10]={0,1,2,3,4] 2)只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋1值,只能写为: inta[10]={1,1,1,1,1,1,1,1,1,1} 而不能写为:inta[10]=1 但全部赋值为O时可以写作inta[10]=0} 3)如给全部元素赋值,则在数组说明中,可以不给出数 组元素的个数 例如:inq[5]={1,2,3,4,5 可写为:inta[={1,2,345}
C语言对数组的初始化赋值还有以下几点规定: 1) 可以只给部分元素赋初值。 当{ }中值的个数少于元素个数时,只给前面部分元素 赋值,其余自动赋0值。 例如: int a[10]={0,1,2,3,4}; 2) 只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋1值,只能写为: int a[10]={1,1,1,1,1,1,1,1,1,1}; 而不能写为:int a[10]=1; 但全部赋值为0时可以写作int a[10]={0}; 3) 如给全部元素赋值,则在数组说明中,可以不给出数 组元素的个数。 例如: int a[5]={1,2,3,4,5}; 可写为: int a[]={1,2,3,4,5};

714一维数组程序举例 例1:用数组来处理求 Fibonacci数列问题。(73c) intf[20]={1,1]: for(i=2ia[i+1{a[]:a[i=a[+1]a[i+1]=t} 结论:若有n个数,则要进行n-1趟比较。 在第1趟比较中,要进行η1次两两比较; 在第j趟比较中,要进行nj次两两比较;
例1:用数组来处理求Fibonacci数列问题。(l7_3.c) int f[20]={1,1}; for ( i=2; ia[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}

【例75】用比较法将数组元素按从大到小的顺 序输出(75c) for(=0<10:i+) p=i: q=a[i] for(j=i+1<10+ if(q<[ p=j: q=a[j]: y if(il=P) [s=a[i]: a[i]=a[p]: a[p]=s: y printf %d,a[iD:
【例7.5】用比较法将数组元素按从大到小的顺 序输出 /*(l7_5.c)*/ for(i=0;i<10;i++) { p=i;q=a[i]; for(j=i+1;j<10;j++) if(q<a[j]) { p=j;q=a[j]; } if(i!=p) {s=a[i]; a[i]=a[p]; a[p]=s; } printf("%d",a[i]); }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第七章 电子邮件(E-mail).ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第七章 HTTP协议.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第四章 TCP/IP协议.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第五章 域名体系与域名系统.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第四章 TCP/IP协议.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第三章 IP地址与地址解析.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第二章 Internet分层体系结构.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)第一章 Internet概述.ppt
- 哈尔滨工业大学:《互联网技术 INTERNET TECHNOLOGY》课程教学资源(PPT课件)GOOGLE搜索从入门到精通.ppt
- 湖北大学数计学院:《计算机图形学》习题解答.ppt
- 湖北大学数计学院:《计算机图形学》第一章 计算机图形设备、系统和应用.doc
- 湖北大学数计学院:《计算机图形学》第八章 交互技术与用户接口.ppt
- 湖北大学数计学院:《计算机图形学》第九章 OpenGL.ppt
- 湖北大学数计学院:《计算机图形学》第八章 交互技术与用户接口.ppt
- 湖北大学数计学院:《计算机图形学》第七章(7-4)投影变换.ppt
- 湖北大学数计学院:《计算机图形学》第七章(7-1)窗口视图变换.ppt
- 湖北大学数计学院:《计算机图形学》第六章 二维图形的运算.ppt
- 湖北大学数计学院:《计算机图形学》第五章(5-4)区域填充.ppt
- 湖北大学数计学院:《计算机图形学》第五章(5-1)直线的扫描转换.ppt
- 湖北大学数计学院:《计算机图形学》第四章 一个简单的二维光栅图形软件包.ppt
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第2讲 51架构与51系列单片机概述.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第1讲 绪论:单片机应用概述.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第10讲 汇编语言程序设计案例——动态显示.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第9讲 指令功能及汇编语言程序设计(三).pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第8讲 指令功能及汇编语言程序设计(二).pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第7讲 指令功能及汇编语言程序设计(一).pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第4讲 8051及P89V51RD2单片机数据存储器.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第5讲 8051及P89V51RD2单片机的时钟、时序和复位.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第6讲 51单片机指令格式及指令系统.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第3讲 8051及P8V51RD2的程序存储器.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第19讲 单片机应用系统设计的基本方法.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第11讲 汇编语言程序设计案例2障碍物检测.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第18讲 单片机A/D和D/A应用接口技术.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第17讲 PWM的调速原理与应用一小车调速.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第15讲 定时器/计数器基础.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第14讲 外部中断应用程序设计范例.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第13讲 中断的概念及51单片机的中断系统.pps
- 四川工程职业技术学院:《单片机应用技术》课程电子教案(PPT课件)第12讲 汇编语言程序设计案例3障碍物方位检测.pps
- 华中科技大学:《微型计算机常用外部设备》课程PPT教学课件_第三章 非击打式印刷机.ppt
- 华中科技大学:《微型计算机常用外部设备》课程PPT教学课件_第二章 击打式打印机.ppt