第九章 c数组PPT课件

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
9.3函数之间对一维数组和数组元素的引用
数组可以作为函数的参数使用,进行数据传送 数组用作函数参数有三种形式: 一、把数组元素作为实参使用 二、数组名作为函数的形参和实参使用 三、把数组元素地址作实参
18
9.3.1数组元素做函数实参
一、把数组元素(下标变量)作为实参使用:
数组元素作函数的参数与一般 变量作函数参数相同,例如: fun(a[1],b[1]);
第9章 数组
1
第9章 数组
本章主要内容
掌握一维、二维数组的定义 掌握数组元素的引用方法。 掌握数组应用中的基本算法。
2
第9章 数组
整型
C数据类型
基本类型 指针类型
浮点型(实型)
单精度型 双精度型
什么是 字符型 数组呢?
数组
构造类型 结构体
3
什么 是数 组呢?
第9章 数组
数例组如—:—是一组具有相同类型, 相a[同0]名、称a[不1]同、下a[标2]的、变a[量3]的…集…合。
数组的特点: 数组中各变量类型相同; 各变量名相同,但下标不同; 各变量在内存中所占存储单元是连续的
数组有一维数组和二维数组之分
4
9.1.1 一维数组的定义
1.一维数组定义的一般格式为: 类型名 数组名[常量表达式];
可以是常量 和 符号常量,
不能用变量
例如:int a[10];
(它表示定义了一个整形数组,数组名为a, 此数组有10个元素(a[0], a[1], a[2], … a[9] ), 每个元素为整型,在内存中顺序存放。)
int array(10); int n; float score[n]; char str[0];
7
9.1.1 一维数组的定义
2.一维数组在内存中的存放
在内存分配若干连续空间给数组。
例:int a[10];
低地址 ... a[0]
a[1]
分配内存
a[2]
每个元素只能 存放整形数
… a[9] 高地址 ...
21
【例】选择法排序(续)
for (i=0; i<N; i++)
输入a[i]
for (i=0; i<N-1; i++)
for (j=i+1; j<N; j++)
a[j]<a[i]
F
T
a[j]与a[i]交换
输出a[0]~a[N-1]
例: int a[5]={0,1,2,3,4,5};
14
9.1.5一维数组的定义和数组元素引用举例
【例】将10个人的成绩输入计算机后按逆
序显示。
运行情况如下:
#define N 10 main( )
67 74 89 92 34 67 83 95 73 78 78.0 73.0 95.0 83.0 67.0 34.0 92.0 89.0
例如:int a[5]={1,2,3}; 则系统为其余元素赋 0值。 即a[0]=1,a[1]=2,a[2]=3,a[3]=0,a[4]=0
13
9.1.3一维数组的初始化
注意: 1.欲使一个数组中全部元素初值为0,可以写成
int a[10] = {0,0,0,0,0,0,0,0,0,0,}; 或
int a[10]={0}; 2.当初值个数多于数组元素个数时,编译出错
8
9.1.2 数组元素的引用
1.数组元素的引用形式
数组名[下标]
下标可以是整型常 量或整型表达式
例如:a[0] = a[5] + a[7] - a[2*3]
说明 数组元素与同类型的变量使用方法相同 数组下标范围为0~N-1(N为数组长度) 注意防止数组下标越界
9
给数组元素赋值的三种方式
1. 直接赋值 2. 用for语句赋值 3. 定义时赋初值(初始化)
5
1.一维数组的定义 2.一维数组在内存中的存放 3.一维数组元素的引用 4.数组元素的赋值
6
9.1.1 一维数组的定义
以下数组定义是正确的: #define N 10 float score1[N], score2[N]; int num[10+N]; char c1,c2,carr[9]; char c[26]; 以下数组定义是不正确的:
{ int i;float s[N]; for (i=0; i<N; i++) 比较P108例9.1和本例。
scanf("%f",&s[i]);
for (i=N-1; i>=0; i--)
printf("%6.1f",s[i]);
}
15
几个细节问题(常考点):
设指针p指向数组a(p=a),则
① p++(或 p += 1),p指向数组下一个元素。 ② *(p++)与*(++p)的作用不同。
*(p++):先访问p所指元素,再使p加1。 *(++p):先使p加1,再访问p所指元素。 ③ (*p)++:p指向的元素值加1。
16
几个细节(常考点)
④ 如果p当前指向数组a的第i个元素,则: *(p- -)相当于 a[i- -], 先取*p,再使p减1。 *(+ +p)相当于 a[+ +i],先使p加1,再取*p。 *(- -p)相当于 a[- -i],先使p减1,再取*p。
19
9.4程序举例
关于排序的两种典型算法: (1)选择排序法 (2)冒泡排序法
20
9.4一维数组应用举例
[例]选择法排序(从小到大)。
第一趟:将第一个数依次和后面的数比较,如 果后面的某数小于第一个数,则两个数交换, 比较结束后,第一个数则是最小的数。 第二趟:将第二个数依次和后面的数比较,如 果后面的某数小于第二个数,则两个数交换, 比较结束后,第二个数则是次小的数;…… 。
1.直接赋值
例如:int a[5],b[5]; a[3]=34; b[1]=3;
11
2.用循环语句for给一个数组各元素赋值。
#include <stdio.h> void main() { int i,a[10];
for (i=0; i<=9;i++) a[i]=i; for(i=9;i>=0; i- -) printf("%d ″,a[i]); printf("\n″); }
运行结果如下: 9876543210
程序使a[0Βιβλιοθήκη Baidu到a[9]的值 为0~9,然后按逆序输 出。
12
9.1.3一维数组的初始化
3.初始化:在定义数组时给数组元素赋初值。
1.对全部数组元素初始化 例如:int a[5]={0,1,2,3,4};
也可以写成:int a[ ]={0,1,2,3,4}; 2.对部分数组元素初始化
相关文档
最新文档