第5章数组.ppt
《第5章数组.ppt》由会员分享,可在线阅读,更多相关《第5章数组.ppt(63页珍藏版)》请在三一文库上搜索。
1、判断是否为素数,#include #include using namespace std; int main() int m,i,k; cinm; k=sqrt(m); for(i=2;ik) printf(“%d 是素数。n”,m); else printf(“%d不是素数。n”,m); ,#include #include using namespace std; int main( ) int m,flag; int fun(int m); cinm; flag=fun(m); if(flag) coutm“ 不是素数。” else coutm“ 是素数。” return 0; ,in
2、t fun(int m) int k,i,a=0; k=sqrt(m); for(i=2;i=k;i+) if(m%i=0) a=1; break; return a; ,第5章 数组,5.1 数组的概念 5.2 一维数组的定义和引用 5.3 二维数组的定义和引用 5.4 用数组名作函数参数 5.5 字符数组 5.6 字符串类与字符串变量,构造数据类型之一 数组:有序数据的集合,用数组名标识 元素:属同一数据类型,用数组名和下标确定,5.1 数组的概念,5.2 一维数组的定义和引用 一维数组的定义 定义方式: 数据类型 数组名常量表达式;,合法标识符,表示元素个数 下标从0开始, :数组运算符
3、 单目运算符 优先级(1) 左结合 不能用( ),例 int a6;,编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型),数组名表示内存首地址, 是地址常量,一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名下标 其中:下标可以是常量或整型表达式,例 int i=15; int datai; (不能用变量定义数组维数),例 int a10; coutaendl; () 必须 for(j=0;j10;j+) coutaj“ ”; (),例 int data5; data5=10; /C+对数组不作越界检查,使用时要
4、 注意,一维数组的初始化 初始化方式,在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值),int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),static int a5; 等价于:a0=0; a1=0; a2=0; a3=0; a4=0;,只给部分数组元素赋初
5、值,int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组维数,程序举例,例 读10个整数存入数组,找出其中最大值和最小值,步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x0 (b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi 3. 输出:max和min,#include using namespace std; #define SIZE 10 int main() int xSIZE,i,max,min; coutxi; max=min=x0; for(i=1;ixi) min=xi; cout“Maximum
6、value is“ maxendl; cout“Minimum value is“ minendl; return 0; ,例 用数组求Fibonacci数列前20个数,#include using namespace std; int main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) coutendl; coutfi“ ”; ,例 用冒泡法对10个数排序(从小到大),排序过程: (1)比较第一个数与第二个数,若为逆序a0a1,则交换;然后比较第二个数与第三个数;依次类推,直至第
7、n-1个数和第 n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,#include using namespace std; int main() int a11,i,j,t; coutai; coutai+1) t=ai; ai=a
8、i+1; ai+1=t; cout“The sorted numbers:“endl; for(i=1;i11;i+) coutai“ ”; ,例 用简单选择法对10个数排序,排序过程: (1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束,例,初始: 49 38 65 97 76 13 27 ,i=1,13,49,一趟: 13 38 65 97 76 49 27 ,i=2
9、,27,38,六趟: 13 27 38 49 65 76 97 ,Ch5_201.c,#include using namespace std; int main() int a11,i,j,k,x; coutai; coutendl; for(i=1;i10;i+) k=i; for(j=i+1;j=10;j+) if(ajak) k=j; if(i!=k) x=ai; ai=ak; ak=x; cout“The sorted numbers:n“; for(i=1;i11;i+) coutai“ ”; return 0; ,#define N 6 #include using namesp
10、ace std; int main() int aN,bB-60,c=1,2,3,4,5,6,i; for(i=0;iaibi; for(i=0;iN;i+) coutai“ “; coutendl; for(i=0;iN;i+) coutbi“ “; coutendl; for(i=0;iN;i+) ci=ai+bN-i-1; for(i=0;iN;i+) coutciendl; return 0; ,数组定义:必须用常量表达式,数组元素引用,5.3 二维数组及多维数组 二维数组的定义 定义方式: 数据类型 数组名常量表达式常量表达式;,数组元素的存放顺序 原因:内存是一维的 二维数组:按行
11、序优先 多维数组:最右下标变化最快,例 int a34; float b25; int c234; int a3,4; (),行数,列数,元素个数=行数*列数,二维数组理解,每个元素ai由包含4个元素 的一维数组组成,二维数组a是由3个元素组成,二维数组元素的引用 形式: 数组名下标下标 二维数组元素的初始化 分行初始化:,按元素排列顺序初始化,程序举例,例 将二维数组行列元素互换,存到另一个数组中,例 求二维数组中最大元素值及其行列号,#include using namespace std; int main() int a34=1,2,3,4, 9,8,7,6, -10,10,-5,2;
12、 int i,j,row=0,colum=0,max; max=a00; for(i=0;imax) max=aij; row=i; colum=j; cout“max=“max“row=“ row“colum=“ columendl; return 0; ,例 读入下表中值到数组,分别求各行、各列及表中所有数之和,#include using namespace std; int main() int x54,i,j; for(i=0;ixij; for(i=0;i=3;i+) x4i=0; for(j=0;j5;j+) xj3=0; for(i=0;i4;i+) for(j=0;j3;j+
13、) xi3+=xij; x4j+=xij; x43+=xij; ,for(i=0;i5;i+) for(j=0;j4;j+) coutxij “t “; coutendl; return 0; ,5.4 数组作为函数参数 数组元素作函数实参值传递,例 两个数组大小比较,n=0 m=0 k=0,a和b为有10个元素的整型数组 比较两数组对应元素 变量n,m,k记录aibi, ai=bi, aik,认为数组ab 若nk,认为数组ab 若n=k,认为数组a=b,数组名作函数参数 地址传递 在主调函数与被调函数分别定义数组,且类型应一致 形参数组大小(多维数组第一维)可不指定 形参数组名是地址变量,例
14、 求学生的平均成绩,#include using namespace std; float average(int stu10, int n); int main() int score10, i; float av; coutscorei; av=average(score,10); cout“Average is:”avendl; return 0; ,float average(int stu10, int n) int i; float av,total=0; for( i=0; in; i+ ) total += stui; av = total/n; return av; ,实参用
15、数组名,形参用数组定义, int stu ,例 数组元素与 数组名 作函数参数比较,#include using namespace std; void swap2(int x,int y) int z; z=x; x=y; y=z; int main() int a2=1,2; swap2(a0,a1); cout“a0=“ a0 “ na1=“ a1; return 0; ,值传递,#include using namespace std; void swap2(int x) int z; z=x0; x0=x1; x1=z; int main() int a2=1,2; swap2(a)
16、; cout“a0=“ a0 “ na1=“ a1; return 0; ,地址传递,例 数组元素与 数组名 作函数参数比较,例 数组排序-简单选择排序,9,49,i=0,例 数组排序-简单选择排序,13,68,i=1,i=8,例 数组排序-简单选择排序,例 求二维数组中最大元素值,#include using namespace std; int max_value(int array34) int i,j,k,max; max=array00; for(i=0;imax) max=arrayij; return(max); int main() int a34=1,3,5,7, 2,4,6
17、,8,15,17,34,12; cout“max value is n“max_value(a); return 0; ,例 求二维数组中各行元素之和,#include using namespace std; get_sum_row(int x3, int result ,int row, int col) int i,j; for(i=0;irow;i+) resulti=0; for(j=0;jcol;j+) resulti+=xij; int main() int a23=3,6,9,1,4,7; int sum_row2,row=2,col=3,i; get_sum_row(a,su
18、m_row,row,col); for(i=0;irow;i+) cout“The sum of row“i+1“=“sum_rowi; ,18,12,5.3 字符数组和字符串 字符数组 定义,字符数组的初始化 逐个字符赋值 用字符串常量 字符数组的引用,例 char c10, ch34;,5.5 字符数组,#include using namespace std; void main() char diamond5= , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,*,i; for(i=0;i5;i+) for(int j=0;j5;j+) coutdiamondij
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组
链接地址:https://www.31doc.com/p-2499601.html