第16次(一维数组).ppt_第1页
第16次(一维数组).ppt_第2页
第16次(一维数组).ppt_第3页
第16次(一维数组).ppt_第4页
第16次(一维数组).ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,IT Education scanf(“%d”, ,在“学生成绩管理系统”中,我们需要对多个学生进行处理,比如100个学生,是否必须定义100个变量呢? Student stu1; Student stu2; Student stu3; Student stu100; 定义多个变量,在定义、输入、输出、处理的时候非常不方便。 如果需要处理5000个学生的成绩,情况就更糟。,问题2,以上两个例子有什么共同之处?,问题2,具有相同的数据类型!,数组的概念,数组是一组变量,满足下列条件:(1)具有相同的名字(2)具有相同的数据类型(3)在存储器中连续存放 每个变量名字相同下标不同,称为“数组元素”

2、 “数组名”代表整个数组,其值是这组变量在内存中所占连续存储空间的首地址。 数组要先定义后使用。 数组名不能与相同作用域的其他变量名重名,问题,如何定义数组? 如何为数组元素赋值? 如何引用数组元素?,一维数组的定义,一维数组: 只有一个下标的数组 定义形式为:类型说明符 数组名常量表达式 例如: int a10; 说明 数组名为a 数组中每个元素的数据类型为int类型 10个数组元素 内是常量表达式,不能为变量,1、定义100个整型变量 2、定义50个浮点型变量 3、定义1000个“学生”变量,“学生”类型定义如下: typedef struct char acNum10; char acN

3、ame15; Student;,模仿练习,以下一维数组的定义是否正确?,int a ; #define SIZE 100 float bSIZE; int n=10; char cn; int 2a10;,数组元素的引用,数组就是一组变量的集合,每个数组元素相当于是一个变量 数组元素的表示: 数组名下标 如:int a5;所定义的数组就是五个变量的集合,分别是: a0, a1,a2, a3, a4 int aN; 下标的取值范围:0N-1 ,其中N为数组的大小 下标是整型值,可以是整型常量、整型变量或整型表达式 如:ai a3+1 a2*i-1 注意:下标不能越界,否则可能覆盖其他数据,造成严

4、重后果,定义数组之后,与普通变量一样,数组是沒有初始值的,各存储单元的值都是不定的。 初始化:定义数组的同时赋初值 语法: 数据类型说明符 数组名长度=数值1,数值2,; 如 : int data10=0,1,2,3,4,5,6,7,8,9;,一维数组的初始化,1、定义并初始化一个float型数组,包含5个元素。 2、定义并初始化一个字符型数组,包含6个元素。 3、定义一个全0的整形数组,包含15个元素。,模仿练习,初始化注意事项: (1) 允许初始化一部分元素,其他没有赋初值的元素初值为0; int a10=0,1,2,3,4,5; 相当于 int a10=0,1,2,3,4,5,0,0,0

5、,0; (2)允许初始化时省略数组的长度,数组的长度为赋初值的个数; int a=1,2,3,4,5; 相当于 int a5=1,2,3,4,5; (3)不能对整个数组初始化; int data5=1; 错误,应为: int data5=1,1,1,1,1;,一维数组的初始化,数组的赋值只能对数组元素单独操作,不能对数组整体操作。 赋值的两种方式:int a5; 赋值运算符 如:a3=8; 输入函数 如:scanf(“%d”, 错误,应单独为每个元素赋值 对数组的整体赋值只能在初始化时进行,一维数组的赋值,解决问题1 从键盘输入5个整数,保存到数组a中;再逆序输出。,main() int a5

6、; scanf(“%d”, ,一维数组的遍历,数组的遍历一般用循环语句实现 注意下标的取值范围,不能越界(编译系统对下标的越界不做检查),解法1:记下最大数其值 void main() int i, max,a10; printf(enter data:n); for(i=0;imax) max=ai; printf(“最大数是%dn, max); ,案例从键盘输入10个整数存放在数组中,找出其中最大的一个数,输出该最大数。,解法2:记下最大数相应的下标 void main() int i, max_id,a10; printf(enter data:n); for(i=0;iamax_id)

7、 max_id=i; printf(“最大数是%dn,amax_id); ,学生模仿练习,1、把8、9、5、8、6、4、2、8和9、6、2、3、6、2、1、3这两组数保存在两个一维数组中,再把两个数组对应 元素的值相减后显示出来。 2、从键盘输入10个整数保存到数组中,求和、平均值并输出。 3、从键盘输入10个整数保存到数组中,求值最小的元素,将这个值最小的元素与数组的第一个元素交换。最后输出整个数组。,小组讨论并总结,如何保证数组不越界? 数组的起始下标和最后一个元素的下标分别是多少?,结论1保证数组不越界,C语言编译系统并不检查数组是否越界。它只给已定义的数组元素分配内存,超过的部分则依次往后排,至于那些位置的用途是什么,系统是不管的。读出那些单元一般不会出问题,但如果往那里面写入数据会导致不可预料的错误。 时刻注意数组的起始元素下标值和最后元素的下标值,结论2起始元素和最后元素的下标,数组下标为非负整数 数组起始的下标为0 最后元素的下标为:数组长度-1,学以致用,寻找你身边的一个实际问题,用到一维数组。例如:编写程序实现功能:学号为1至10的同学的体重依次是:44,34,45,38,55,60,52,35,43,46,从中找出最轻者,及该同学的学号。,作业每人必做,将“学生成绩管理系统”中的“学生”变量定义成数组,学生信息的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论