已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 数组与字符串,7.1 一维数组 7.2 多维数组 7.3 字符数组与字符串,当我们需要处理相关联的一批数据时,基本类型数据就不能进行有效的表示、存储和处理。为了解决这个问题,引入了构造数据类型。数组是构造数据类型中的一种。 数组是由一些相同类型的数据按一定的规则构成的数据类型。它的每个成员称为数组元素,每个数组元素都可作为简单变量来使用。,字符串,是字符的序列。它不是C语言的数据类型,但与数组密切相关。因此,字符串也是本章的一个重要内容。 数组操作中,离不开循环程序技术的配合,两种技术总是密切地联系在一起。,7.1 一 维 数 组,数组是一些同类型数据的有序集合,它们存储在内存的一个连续的存储区内。数组中的每个元素用下标加以区别。所以,数组元素又称为下标变量。 数组下标的个数,称为数组的维数。,7.1.1 一维数组的定义 和其他变量一样,数组也要遵循“先定义后引用”的原则。程序中使用数组时,必须先用数组定义语句对其进行说明。通过定义说明数组的名字,数据类型,维数和容量。 一维数组定义语句的一般格式为: 数据类型 数组名常量表达式;,常量表达式表示的是数组容量,也叫做数组的长度。它说明数组元素的个数。 当定义了一个数组后,系统就在内存的数据区为它开辟一个连续空间,用来存储各数组各元素的数据。 下标值是从零开始的。作为变量的数组元素,它的下标,既可以是常量表达式,也可以是含变量的表达式,例如,abci,absi+j等。,构造数据类型之一 数组:有序数据的集合,用数组名标识 元素:属同一数据类型,用数组名和下标确定 一维数组的定义 定义方式: 数据类型 数组名常量表达式;,合法标识符,表示元素个数 下标从0开始, :数组运算符 单目运算符 优先级(1) 左结合 不能用( ),例 int a6;,编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型),数组名表示内存首地址, 是地址常量,7.1.2 数组元素的引用 数组元素的引用是通过数组下标变量的实现的。下标变量的形式为: 数组名下标 例7.1.1 设有整型数组a,其长度为5。编写程序,令5个数组元素的值依次为10,20,30,40和50并输出数组各元素的值。 这个问题可以用循环结构技术完成。程序如下:,#include “stdio.h“ main() int i,a5; for(i=1;i=5;i+) ai-1=i*10; /*为数组元素赋值*/ for(i=0;i=4;i+) printf(“a%d=%dn“,i,ai); /* 输出数组各元素的值*/ ,程序给出下面的输出结果: a0=10 a1=20 a2=30 a3=40 a4=50,可以看到,数组元素的引用是通过数组名和相应的下标引用的。这种引用方法叫作“下标法”。 在程序中引用数组元素时,其下标不能超过该数组定义的长度。C语言系统不进行数组是否超出定义的边界的检查,这个任务由用户自己解决。这就要求程序设计人员必须给数组以足够的容量,当然,还要注意程序的正确性。数组容量不够或程序的错误,都有可能导致数组的运算超出数组的边界。运算超出数组边界是有一定危险的,编程时要特别注意。,一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名下标 其中:下标可以是常量或整型表达式,例 int i=15; int datai; (不能用变量定义数组维数),例 int a10; printf(“%d”,a); () 必须 for(j=0;j10;j+) printf(“%dt”,aj); (),例 int data5; data5=10; /C语言对数组不作越界检查,使用时要 注意,7.1.3 一维数组的初始化 初始化方式,在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值),int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),static int a5; 等价于:a0=0; a1=0; a2=0; a3=0; a4=0;,只给部分数组元素赋初值,int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组维数,7.1.4 一维数组程序设计 一维数组的程序设计,仍然离不开我们已经学过的顺序结构、选择结构和循环结构的设计方法。但在这一节我们更关注的是数组的设计和处理。我们要学习如何根据问题确定所需要的数组,如何处理数组中的各个数组元素。,对于若干个相互关联的,有某种联系的数据,一般用数组来组织这些数据,会对程序的数据处理带来很大的好处,减小程序设计的难度,提高数据处理的效率。 在加工处理数组数据方面,循环程序技术起着非常大的作用。在许多情况下,不采用循环程序设计恐怕是不可能的。 下面通过一些程序例子来学习一维数组程序的设计。,程序举例,例 读10个整数存入数组,找出其中最大值和最小值,步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x0 (b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi 3. 输出:max和min,#include #define SIZE 10 main() int xSIZE,i,max,min; printf(“Enter 10 integers:n“); for(i=0;ixi) min=xi; printf(“Maximum value is %dn“,max); printf(“Minimum value is %dn“,min); ,例 用简单选择法对10个数排序,排序过程: (1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数 交换第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录, 将它与第二个数交换第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束,例,初始: 49 38 65 97 76 13 27 ,i=1,13,49,一趟: 13 38 65 97 76 49 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022-2023学年山西省忻州市高二下学期期中联考数学试题(解析版)
- 高新技术方案
- 2024年烧烤行业产业链及市场格局分析
- 六年级语文下册第一单元《人生感悟》教学设计
- 悬挂外省农机号牌机动车排查登记表
- 商务谈判设计(办公室管理课件)
- 通关02 光现象-备战2024年中考物理抢分秘籍(解析版)
- 跨境电商理论课的心得体会 跨境电商实训心得体会(8篇)
- 酒店暖场开业庆典活动生活服务策划方案
- 常识高分专项课-音乐与戏曲8
- 沥青拌合站设备保养计划汇总
- 商标代理委托书POWEROFATTORNEY(精编版)
- 六年级下册美术-名人漫画像课件
- 燃气管线设施保护措施
- 关于交通安全的诗歌朗诵交通安全的诗歌范文
- (完整版)美术教师个人专业发展五年规划(总3页)
- (完整版)诗朗诵《教师颂》
- 办公用品入库单模板.doc
- 函数项级数的一致收敛性与非一致收敛性判别法归纳
- 配料机 PLD 1200 YT1200C 使用 说明书
- 2021年甘肃省建筑与装饰工程预算定额说明(含章节说明)
评论
0/150
提交评论