文档详情

第5章_数组.ppt

发布:2016-08-21约9.4千字共61页下载文档
文本预览下载声明
第5章 数组 具有相同数据类型的数的集合 5.1 一维数组 只有一个下标的数组 定义格式 类型 数组名[长度] 例: int a[10],b[3]; char c1[80]; float f[10]; 例: 整型,有10个元素的数组定义: int a[10]; 数组名是a ;元素是a[0],a[1],…….a[9];占用连续存储区 下标取值:0-9 不能越界;引用某个元素由下标决定: k=3; a[k]指 a[3] 下标是整数表达式 a[k+2] 数组定义例 #define N 10 main(){ int a[8],b[N]; } 程序例: main() { int i,a[10]; for (i=0;i=9;++i) { a[i]=5*i; printf(a[%d]=%d\n,i,a[i]); } } 说明 数组可以是任何数据类型 数组长度: 元素个数 一维数组初始化 数组定义时赋值,例: int i, a[5]={1,3,5,7,9}; int b[5]={2,4}; /* 2,4,0,0,0 */ float c[]={10.0, 30.0, 50.0}; char ch[5]={‘a’,’b’}; /* ‘a’,’b’,’\0’,’\0’,’\0’ */ 一维数组引用, 数组元素同普通变量一样使用,但下标越界不报错,如: int y[2]; scanf(“%d”, y[2]); /*下标值只能取0,1*/ 含有数组元素的表达式 x[1] = 2 * x[0] +x[1] –x[3]; 例 从键盘输入10个字符,然后按输入相反次序输出 main(){ char a[10]; int i; for (i=0;i10;++i) scanf(%c,a[i]); for (i=9;i=0;--i) printf(%c\n,a[i]); } 例 求斐波拉契数列的前20位,存储并输出 1,1,2,3,5,8,13,21,34,….. 解: main(){ char f[20]={1,1}; int i; for (i=2;i20;++i) f[i]=f[i-1]+f[i-2]; for (i=0;i20;++i) { if (i%5==0)  printf(\n); printf(%10d,f[i]); } } 例 已知数组内有10个数,查询指定的数,并删除它 程序 main() { int a[]={23,34,51,11,10,3,7,44,67,12}; int x=51; int k=-1, i; for (i=0;i10;++i) { if (a[i]==x) { k=i; break; } } if (k0) { for (i=k;i10-1;++i) a[i]=a[i+1]; for (i=0;i9;++i) printf(%d ,a[i]); } } 例 键盘输入10个整数放入数组,找出最小的数极其下标 程序 main(){ int a[10],i,k,min; for (i=0;i10;++i) { printf(input number %d=: ,i); scanf(%d,a[i]); } min=a[0]; k=0; for (i=1;i10;++i) if (mina[i]) { min=a[i]; k=i; } printf(min=%d,k=%d\n,min,k); } 例 在一维数组中找出最小的数,与第一个元素对调 程序 main(){ int a[10]={2,12,3,-3,56,45,67,28,0,10},i,k,temp; k=0; for (i=1;i10;++i) if (a[k]a[i]) { k=i; } temp=a[0];a[0]=a[k];a[k]=temp; printf(%d\n,a[0]); } 实例:选择排序 将上面的10个数从大到小分类输出 程序 main(){ int a[10]={2,12,3,-3,56,45,67,28,0,10},i,j,k,temp; for (j=0;j9;++j){ k=j; for (i=k+1;i10;++i) if (a[k]a[i]) { k=i; } temp=a[j];a[j]=a[k];a[k]=temp; } for (i=0;i10;++i) printf(%3d,a[i]); } 实例:冒泡排序 图示:用冒泡排序法对4个数排序 程序 main(){ int a[10]={2,
显示全部
相似文档