




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章 数组 2、一维数组的定义和引用 3、二维数组的定义和引用 4、字符数组 1、概述 1. 基本类型之外,C语言还提供了构造类型的数据 ,它们有:数组类型、结构体类型、共用体类型。 构造类型数据是由基本类型数据按一定规则组成的 ,因此也可以称之为“导出类型”。 2. 数组是有序数据的集合。 (a)数组中的每一个元素都属于同一个数据类型。 (b)用一个统一的数组名和下标,唯一的确定数组 中的元素。 章节总览 一维数组的定义(1) 一、定义方式: 类型说明符 数组名 常量表达式 ; 二、说明: (1)数组名定名规则和变量名相同,遵循标识符定名 规则。 例如: int a 10 ; 表示数组名为a ,此数组有10个元素,每个元素为整型数据. (2)数组名后是用方括弧括起来的常量表达式,不能用圆括 弧。 下面的用法是错误的:int a(10); (3)常量表达式表示元素的个数,即数组长度。 例如: 在a10中,10表示a数组中有10个元素, 下标从0开始,这10个元素是:a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 注意:不能使用数组元素a10; (4)常量表达式可以包括常量和符号常量,不能包含变 量。C不允许对数组的大小作动态定义,即数组的大小不 依赖于程序运行过程中变量的值。 例如:下面这样定义数组是不行的: int n; scanf(“%d”, int an; 一维数组的定义(2) 更准确的说法是 整型常量表达式 例 int i=15; int datai; (不能用变量定义数组维数) 合法标识符 表示元素个数 下标从0开始 a0 1 2 5 6 a1 a2 a3 a4 a5 3 4 a 编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型) 数组名表示内存首地址, 是地址常量 int a10; 数组在内存的存放形式 一、规则: (1)数组必须先定义,后使用。 一维数组元素的引用(1) (2)数组元素的使用形式为: 数组名 下标 下标可以是整型常量或整型表达式, 例如: a0=a5+a7-a2*3; 注意: C语言规定只能逐个引用数组元素, 不能一次引用整个数组. 例7.1 数组元素的引用 一维数组元素的引用举例 main() int i ,a10; for( i =0; i=0;i-) printf(“%d”,ai); 运行结果: 9,8,7,6,5,4,3,2,1,0, 1、在定义数组时对数组元素赋以初值。 一维数组的初始化(1) 例如:int a10= 0,1,2,3,4,5,6,7,8,9 ; 初始化之后:a0=0,a1=1,a8=8,a9=9。 2、可以只给一部分元素赋值. 例如:int a10=0,1,2,3,4; 只给前五个元素赋值,后五个元素为0。 初始化之后:a0=0,a1=1,a2=2,a3=3,a4=4, a5=0,,a8=0,a9=0。 3、如果想使一个数组中全部元素值为0, 可以写成 int a10=0,0,0,0,0,0,0,0,0,0; 不能写成 int a10=0*10; 4、对全部数组元素赋初值时,可以不指定数组长度。 一维数组的初始化(2) 例如:int a=1,2,3,4,5; 上面的写法中, 中只有五个数,系统会据此自动定 义数组的长度为5。 初始化之后:a0=1,a1=2,a2=3,a4=4,a5=5 。 如果被定义的数组长度与提供初值的个数不同, 则数组长度不能省略。 例如:想定义数组长度为10,就不能省略数组长度的定义。 而必须写成 int a10= 1,2,3,4,5; 只初始化前面5个元素,后5个元素为0。 不能写成 int a =1,2,3,4,5; 注意:对部分元素赋初值时,长度不能省。 一维数组的程序举例(1) 例 7.2 用数组来处理Fibonacci数列问题。(见教材124页) 程序如下: /*行号1*/main( ) /*行号2*/int i; /*行号3*/int f20=1,1; /*行号4*/for(i=2,i8,交换*/ (2)895420 /*95,交换*/ (3)859420 /*94,交换*/ (4)854920 /*92,交换*/ (5)854290 /*90,交换*/ 第一轮结束854209 那么第一轮进行了 n-1=6-1=5 次比较即循环了5次 一维数组的程序举例(3.2) 第二轮交换: (1)854209 /*85,交换*/ (2)584209 /*84,交换*/ (3)548209 /*82交换*/ (4)542809 /*80,交换*/ 第二轮结束542089 那么第二轮进行了 n-2=6-2=4 次比较即循环了4次 总结:第 i 轮进行了n- i 比较即循环了n- i 次. 一共要n-1轮比较即外围循环n-1次 一维数组的程序举例(3.3) 算法的N-S结构流程图如下: a ia i+1 for i =0 to n-j-1 for j=1 to n-1 输入n个数给a0到an-1 真 假 t=ai; a i=ai+1; ai+1=t; 输出a0到an 源程序如下: main()int a10, i,j,t; for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t; for(i=0;i10;i+) printf(“%d”,ai); 求2-100以内的素数 题目分析:首先定义一个int型数组b100,将b当作一个筛 子,并规定当bi的值为非0时,表示整数i在筛中。2为素数 ,将2输出,然后将筛中2的倍数筛去,即将下标为2的倍数的 元素清零。此时,筛中下一个非零元素为b3,说明3为素 数将其输出,然后再将下标为3的倍数的元素清零(筛去3的倍 数)。这样,在下一个元素为b5,将5输出并筛去5的倍数 ,直到筛中无非零元素为止
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗技术助力下的化学实验教学策略分析
- 教育心理学的智慧解码学生行为背后
- 心理辅导在招生过程中的作用
- 教育技术与职业发展
- 企业内部培训与教育心理学的结合
- 医疗教育机器人的研发与应用前景
- 教育投资的新风向游戏化学习平台融资指南
- 2025届江西省新余市高二物理第二学期期末综合测试模拟试题含解析
- 培养学习动力教育心理学的力量
- 企业园区的智能交通管理方案
- 和谐型机车坡道起车操纵办法细化措施
- 集团资金集中管理办法
- 和面机使用方法安全操作规程
- 建设用地报批程序及基本要求
- 北师大版八年级数学上册教学课件全套
- GB/T 19806-2005塑料管材和管件聚乙烯电熔组件的挤压剥离试验
- 日本茶叶农残限量标准
- 社区工作者招聘考试笔试题库大全(含答案详解)
- 2022江苏省中央财政补贴型奶牛养殖保险条款
- 外贸业务员KPI考核量表
- 智慧物业管理系统解决方案
评论
0/150
提交评论