资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第九章 数组引言:C 语言中简单数据类型:int float double char int * int*构造数据类型:数组 数组定义:把类型相同的若干个变量组合到一块,它们有一个的组名,具体表示每一个变量是用组名和该变量在组中排的位置组成。 程序中代码表示:int a5;a0a1.a4存储图:a0 a1 a2 a3 a41111 1115 1119 1123 11271.一维数组的定义和一维数组元素的引用(1)一维数组的定义形式:类型名 数组名整型常量表达式 类型名:数组元素的类型数组名: 合法的表示法整型常量表达式:确定组的大小int a,i=3;int a3; int a2+1;flaot a3;double a3;char a3;int *a,*b,*c;int *a3;int ai; 非法int a3.0;非法(2)一维数组的引用下标:确定每一个具体元素在组中的位置。下标从 0 开始且不可越界,下标的类型(整型常量、整型常量表达式、已经定义且赋值的整型变量)形式:组名下标 ;举例: int a3,i=1,j=0;a0 a1 a2a1+1ai ai+ja3 非法a-1 非法a1.5 非法总结:int a3,i=1;数组名:a 元素及其元素的个数:3 a0 a1 a2 下标的下界和上界 0 1 2存储图: 一维数组名:一个数组元素实质就是一个变量,代表内存中的一个存储单元。一个数组代表了内存中一串连续的存储单元。C 语言中一维数组名中存放的是一串连续存储单元的首地址,它是一个地址常量。一维数组名可理解为一个指针,它的基类型为数组类型。不可以对它重新赋值,也不可以用数组名 a 代表 a0.a1这些数组元素。 理解为指针a0 a1 a2 a3 a41111 1115 1119 1123 1127int a5,k,*p=a0 a1 a2a41111 1115 10 20 30a:数组名,理解为指针值:1111 &a0 a 常量a=p; a+; 非法p=a;基类型: int (3)一维数组的初始化(赋值)int a=1;int a3=1,2; 0char a3=0,1 ; 0int a=0 ,0,0; 3(4)一维数组编程例:求所有元素的平均值#include stdio.hmain()int a6=72,98,87,64,57,77;int sum=0,i;doble ave;for(i=0;iint *fun(int a10,int n) 1int *ain a int b10; 10.return b;main() int w10,*p;.p=fun(w,10); &w0 1111.4.一维数组应用举例*(1)编写 fun 函数,将数组中数按颠倒的顺序重新存放。操作时不可另外开辟数组,只能借助一个临时存储单元。*(2)已知一个数组中的值在 0-9范围内的整型一维数组,统计每个整数的个数.分别用数组元素 c0到 c9统计整数0-9 的个数。当数组元素 ai中的值为 0 时,表达式 cai(即 c0)增1,实现整数 0 的个数增 1 的运算。以后在一个循环中依次改变 a 数组元素的下标来逐个引用 a 数组中的元素。用表达式 cai+则可统计各整数的个数。*(3) 用选择法对数组中的数进行排序(按由小到大)5.二维数组的定义和二维数组元素的引用(1)二维数组的定义(在逻辑结构上可理解为一个具有行和列的矩阵 )int a3;类型名 数组名常量表达式 定义形式:类型名 数组名常量表达式 1常量表达式 2类型名:数组元素的类型 数组名:合法的用户标示符常量表达式:行列举例:int a;int a6;int a23;数组名: a 数组元素个数: 6 逻辑结构:第 0 列 第 1 列 第 2 列第 0 行 a00 a01 a02a0 a1 a2第 1 行 a10 a11 a12a3 a4 a5物理结构:a 数组中的元素在内存中占一串连续的存储单元。a00 a01 a02 a10 a11 a12 1111 1115 1119 1123 1127 1131aa0 a11111 1123a00 a01 a02 a10 a11 a12 1111 1115 1119 1123 1127 1131二维数组可看成是一个一维数组,每一个数组元素又是包含了若干个元素的一维数组。a 数组可看做由 a0和 a1两个元素组成的一维数组。a0 和 a1又分别由 3 个元素组成的一维数组。int a23;行:a a0 a1 列 a0 a00 a01 a02a1 a10 a11 a12(2)二维数组元素的引用(必须带两个下标)数组名下标 数组名下标表达式 1下标表达式 2int a23,i=0,j=1,k=1;a00 a12 a11+1aij+ka1.02a1,2ai,j+2(3)二维数组的初始化int a=1,2;int a23=1,2,3,4,5,6;int a23=1,2,3,4;int a23=1,2;int a23=1,2,3,4;(4)通过赋初值定义二维数组的大小(一般只省略第一维的大小)int a3=1,2,4,5,6;int a3=1,2,3,4,5,6,7;商商+1举例:a00 a01 a0210 20 30a10 a11 a1240 50 60scanf(“%d”,0 10 21 01 11 2&aiji=0 j=0 1 2i=1 j=0 1 2main()int a23,i,j;for(i=0;imain()int a34;.fun(a);fun( int (*p)4 )fun(int p4 )fun(int p34 )形参为一个存储单元(2)指针数组名作实参时,形参必须为一个指向指针的指针#includemain()int a34,*p3;for(i=0;i3;i+) pi=ai; p0=&a00fun(p);&p0 .fun(int *q ) q=p &p0fun(int *q )fun(int *q3 )8.二维数组程序举例0701 数组行交换0201 数组列交换
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号