数组 PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.1.2 一维数组元素的引用 引用数组中的任意一个元素的形式: 数组名[下标表达式]
1.“下标表达式”可以是任何非负整型数据,取值范围是0~ (元素个数-1)。
特别强调:在运行C语言程序过程中,系统并不自动检验数组
元素的下标是否越界。因此在编写程序时,保证数组下标不越界
是十分重要的。
2.1个数组元素,实质上就是1个变量,它具有和相同类型单
第七章
主要内容:7.1 7.2 7.3 二维数组的定义和引用 字符数组
数组
一维数组的定义和引用
要求:1,掌握一维与二维数组的定义与使用方法
2,起泡排序算法
3,字符数组的定义与使用
4,使用字符数组进行串处理的方法。
数组是用于存储多个相同类型数据的变量的集合 7.1 一维数组的定义和引用 一维数组的定义方式: 类型说明符 数组名[常量 表达式]; 如:int a[10],b[20];
7.2 二维数组的定义和引用
7.2.2 二维数组的定义 二维数组的定义形式如下: 类型说明符 数组名[行常量表达式][列常量表达式];
例如:int a[3][4]; 定义了一个3行4列的数组,总共有12个数组元素
1.数组元素在内存中的排列顺序为“按行存放”,即先顺序存 放第一行的元素,再存放第二行,以此类推。 2. 设有一个m*n的数组x,则第i行第j列的元素x[i][j]在数组中的 位置为:i*n+j(注意:行号、列号均从0开始计数)。 3.可以把2维数组看作是一种特殊的1维数组:它的元素又是一 个1维数组。
一维数组举例 用数组来处理Fibonacci数列问题 #include<stdio.h> void main() {int i,f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-1]+f[i-2];
fibi=fibi-1+fibi-2
for(i=0;i<20;i++)
printf("%d\t",f[i]); }
for(i=9;i>=0;i--) /*按逆序输出数组元素*/ printf("%5d",a[i]); }
7.1.3
一维数组元素的初始化:在定义数组时赋值
初始化格式: 数据类型 数组名[常量表达式]={初值表} 如 int a[10]={0,1,2,3,4,5,6,7,8,9}; (1)“初值表”中的初值个数,可以少于元素个数,即允许只 给 部分元素赋初值,其余元素系统会自动赋0。 例:int a[10]={0,0,0,0,0,0,0,0,0,0};与int a[10]={0};相同 int a[10]={1,2,3,4,0,0,0,0,0,0};与int a[10]={1,2,3,4};相同
例7.3
用起泡法(冒泡法)对10个数排序(由小到大)
冒泡法的基本思想:通过相邻两个数之间的比较和交换,使排序码(数值) 较小的数逐渐从底部移向顶部,排序码较大的数逐渐从顶部移向底部。就像
水底的气泡一样逐渐向上冒,故而得名。
由A[n]~A[1]组成的n个数据,进行冒泡排序的过程可以描述为: (1)首先将相邻的A[n]与A[n-1]进行比较,如果A[n]的值小于A[n-1]的值, 则交换两者的位置,使较小的上浮,较大的下沉;接着比较 A[n-1]与A[n-2], 同样使小的上浮,大的下沉。依此类推,直到比较完A[2]和A[1]后,A[1]为 具有最小排序码(数值)的元素,称第一趟排序结束。 (2)然后在A[n]~A[2]区间内,进行第二趟排序,使剩余元素中排序码最小 的元素上浮到A[2];重复进行n-1趟后,整个排序,可以对它进行赋值和参与各种运算。 3.在C语言中,数组作为1个整体,不能参加数据运算,只能 对单个的元素进行处理。
例7.1
数组元素的引用
#include<stdio.h> void main() {int i, a[10]; for(i=0;i<=9;i++) a[i]=i; /*给数组元素赋值*/
例如,如下定义数组是不行的: int n=10; main() {int a[n];} 以及元素引用时,“下标表达式”外的方括号,都是 C 语言语法规则所要求的,
特别说明 :在数组定义时,“常量表达式”外的方括号;
(5)数组名中存放的是一个地址常量,它代表整个数组 的首地址。同一数组中的所有元素,按其下标的顺序占 用一段连续的存储单元。
算法设计 1,定义变量与数组 2,输入数组元素
main() {int i,j,t,a[11]; printf("input 10 numbers:\n");
3,排序(由小到大)
for i=1 to 9 for j=1 to 10-i if(a[i]>a[i+1])则交换 4,输出
for(i=1;i<11;i++)
说明:(1)数组名,与变量名一样,必须遵循 标识符命名规则。 (2)“常量表达式”必须用方括号括起来,不 能是圆括号。如下面是不正确的数组定义: int a(10) (3)常量表达式的值为数组的元素个数(又称 数组长度),数组元素的下标是元素相对于数 组起始地址的偏移量,所以从0开始顺序编号。 (4)常量表达式是一个整型值,其中可以包含 常数和符号常量,但不能包含变量。C语言中不 允许动态定义数组。
(2)如果对数组的全部元素赋以初值,定义时可以不指定数组
长度(系统根据初值个数自动确定)。如果被定义数组的长度, 与初值个数不同,则数组长度不能省略。如
int a[10]={0,1,2,3,4,5,6,7,8,9};与int a[ ] ={0,1,2,3,4,5,6,7,8,9}相同
7.1.4 例7.2
scanf("%d",&a[i]); for(i=1;i<=9;i++) for(j=1;j<=10-i;j++) if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("\nThe scorted numbers:\n"); for(i=1;i<11;i++) printf("%5d",a[i]);}
相关文档
最新文档