第5章 数组1.ppt
上传人:yy****24 上传时间:2024-09-10 格式:PPT 页数:37 大小:226KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

第5章 数组1.ppt

第5章数组1.ppt

预览

免费试读已结束,剩余 27 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章数组5.1一维数组5.1.2一维数组的存储形式对于inta[10];编译系统在内存中为int类型数组a分配10*sizeof(int)(即20)个字节的连续存储区域,如图所示。5.1.3一维数组的初始化intb1=0,s=0;inta[10]={0,l,2,3,4,5,6,7,8,9};5.1.4一维数组的引用在C语言中不能对数组整体进行操作,只能对数组元素进行操作:数组名[下标]下标可以是非负整型表达式,取值范围0~(数组长度-1)。例如5.1.5一维数组的应用举例【例5.1】用数组求Fibonacci数列前40项。该数列如下:1,1,2,3,5,8,13,21,…【例5.2】输入一个含有10个实数的一维数组,分别计算出数组中所有的正数的和以及所有的负数的和。【例5.3】用选择排序法对n个数从小到大排序。#include<stdio.h>#defineN6voidmain(){floata[N],t;inti,j,k;printf("input%dnumbers:\n",N);for(i=0;i<N;i++)scanf("%f",&a[i]);for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++)if(a[j]<a[k])k=j;t=a[k];a[k]=a[i];a[i]=t;}for(i=0;i<N;i++)printf("%.2f",a[i]);printf("\n");}【例5.4】用冒泡排序法对n个数从小到大排序。#include<stdio.h>#defineN9voidmain(){floata[N],t;inti,j,k;printf("input%dnumbers:\n",N);for(i=0;i<N;i++)scanf("%f",&a[i]);for(i=0;i<N-1;i++)for(j=0;j<N-1-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("thesortednumbers:\n");for(i=0;i<N;i++)printf("%.2f",a[i]);printf("\n");}【例5.5】在n个数中查找某一个数。#include<stdio.h>#include<stdlib.h>#defineN5voidmain(){inta[N],i,x;printf("input%dnumbers:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);printf("inputxtolookfor:");scanf("%d",&x);for(i=0;i<N;i++)if(a[i]==x){printf("find:%ditisa[%d]\n",x,i);exit(0);}printf("%dnotbeenfound.\n",x);}5.2二维数组5.2.1二维数组的定义类型标识符数组名[常量表达式][常量表达式];例如:floata[3][4];定义a为3行4列的数组,共有12个元素,即:a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]5.2.2二维数组理解及存储形式(1)按行给数组赋初值。如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)可以将所有数据写在一个花括号内。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};效果与前面的相同。但第1种方法可读性好。(3)可以对部分元素赋初值。如:inta[3][4]={{1},{5},{9}};(4)如果对全部元素赋初值,则第一维长度可不指定,但第二维长度不可省略.inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};5.2.4二维数组的引用数组名[下标1][下标2];例如:intn[10][15];以下的引用方式都是合法的:n[0][1]、n[k+1][0]、n[2*k+3][j+3]5.2.5二维数组应用举例【例5.6】输入一个4×4的整数矩阵,分别求两对角线上元素之和。#defineN4#include<stdio.h>voidmain(){intm[N][N];inti,j,r1=0,r2=0;for(i=0;i<N;i++){printf("oneli