当前位置:
文档之家› C语言入门学习-C第7章_数组
C语言入门学习-C第7章_数组
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 15
例:已知一个升序排列的数组有十个数据,输入一个数,查
找它是否存在。若存在打印该数及其所在位置,否则,输出
“n算o fo法un:d!”.
a[i] i
假定:数组为a[10],待查找的数为 x
15
设三个位置指针 top(顶),bot(中),mid(底) 21
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 6
4. 在对全部数组元素赋初值时,由于数据的个数已 经确定,因此可以不指定数组长度。
例如:int a[5]={1,2,3,4,5}; 也可以写成 int a[]={1,2,3,4,5};
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 7
第一个和第二个元素值比较,记住较大的元素值,刚才 比较得出的较大的元素值再和第三个元素值比较,记住两个 数中的较大值,依此类推,直到最后一个元素。 第三步:输出数组中的最大值
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 12
习题讲解
数组中找出最大值元素的位置 命名为zuidazhiweizhi.c
例如: int a[10];
它表示定义了一个整形数组,数组名为a,此数组 有10个元素。
数组名定名规则和变量名相同,遵循标识符定名规则。
数组说明中其他常见的错误: ① float a[0]; /* 数组大小为0没有意义 */ ② int k, a[k]; /* 不能用变量说明数组大小*/
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 3
7.1.2一维数组元素的引用
1.数组元素的引用方式 数组名[下标] 下标可以是整型常量或整型表达式。 例如: a[0]=a[2*3]
注意:
定义数组时用到的“数组名[常量表达式]” 和引用数组元 素时用到的“数组名[下标]” 是有区别的。
例如: int a[10]; 下标为0,1,2,3,4,5,6,7,8,9
第七章
7.1 一维数组的定义和引用
数据的特点: 1.具有相同的数据类型 2.使用过程中需要保留原始数据
C语言为这些数据,提供了一种构造数据类型: 数组。所谓数组就是一组具有相同数据类型的数据 的有序集合。
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 2
7.1.1一维数组的定义
1.一维数组的定义格式为: 类型说明符 数组名[常量表达式];
7.1.4一维数组程序举例
例7-1:用数组来处理,求解Fibonacci数列。 Fibonacci数列公式:已知: a1=a2=1an=an-1+an-2
即:1,1,2,3,5,8,13……
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 8
程序举例2:用起泡法对10个数排序(由小到大)。
找出最大值位置的思想: 第一个和第二个元素值比较,记住较大的元素值位置,
刚才比较得出的较大的元素值再和第三个元素值比较,记住 两个数中的较大元素值位置,依此类推,直到最后一个元素 。
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 13
习题讲解
选择法对数组元素排序,文件名xuanzefapaixu.c
使:top=0,bot=9,mid=(top+bot)/2=4.
1、 若x = a [mid],则 已找到
30Biblioteka 退2、出否循则,环判条断件x <为a :[m两id]成种立状否态。其一:
第 一 趟 比 较
经过第一趟(共5次比较与交换)后,最大的数9已“沉 底” 。然后进行对余下的前面5个数第二趟比较,
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 9
第 二 趟 比 较
如果有n个数,则要进行n-1趟比较。在第1趟比较 中要进行n-1次两两比较,在第j趟比较中要进行 n-j次两两比较。
选择法排序的思想: 第一趟:找出数组中最大值和最后位置上的元素值交换 第二趟:最后元素值除外,剩余元素中找最大值和倒数第二 个位置上的元素值交换 第三趟:最后2个元素值除外,剩余元素中找最大值和倒数 第三个位置上的值交换 依此类推……
思考:如果仅知道最大值,然后和不同位置上的值交换,是否会造成
数组元素值的丢失
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 10
文件命名重要性 起泡排序程序命名为:qipaopaixu.c
流程图和程序参见书上内容
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 11
习题讲解
输出数组中的最大值,文件名为zuidazhi.c
第一步:定义一个数组,并赋予相应的值 第二步:找出最大值 找出最大值思想:
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 14
习题讲解
查找一个数据值是否存在于数组中
方法一:顺序查找 文件名shunxuchazhao.c
方法二:折半查找 文件名zhebanchazhao.c 目的:为了提高查找速度 前提条件:数组元素已经排好序
思考方法:首先,假设数组中元素是按升序排列,将数组中 间位置的值与查找关键字比较,如果两者相等,则查找成功 ;否则利用中间位置将数组分成前、后两个子数组部分,如 果中间位置的值大于查找关键字,则在前面部分进一步查找 ,否则进一步在后面部分查找。重复以上过程,直到查找成 功,或直到子数组部分不存在为止,此时查找不成功。
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 5
2. 可以只给一部分元素赋值。 例如: int a[10]={0,1,2,3,4}; 定义a数组有10个元素,但花括弧内只提供5个初值, 这表示只给前面5个元素赋初值,后5个元素值为0。 3. 如果想使一个数组中全部元素值为0,可以写成: int a[10]={0};
C程序设计(第三版) 江苏大学 计算机科学与通信工程学院 4
7.1.3一维数组的初始化
对数组元素初始化的实现方法: 1.在定义数组时对数组元素赋以初值。 例如:int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值依次放在一对花括弧内。经过上面的 定义和初始化之后,a[0]=0,a[1]=1,a[2]=2, a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7, a[8]=8,a[9]=9。