[4_1]数组1 - 副本.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 数组 (1) 提出问题 用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序。 3 名? 2.2.1 数据类型 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于复合数据类型。 一维数组的定义 类型说明符 数组名[ 常量表达式 ] 例如:int a[10] , b[35] 表示 a 为整型数组,有10个元素:a[0]...a[9] 数组定义使用注意事项: 数组名命名规则与变量名相同 数组名后只能用方括号括起常量表达式,不能使用圆括号 main() { int i,a[10]; for (i=0;i=9;i++) a[i]=i; for (i=9;i=0;i--) printf(“%d ”,a[i]); } 一维数组的初始化 一般方法 例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 等价于a[0]=0 a[1]=1 a[2]=2 …a[9]=9 初始化部分元素 例如: int a[10]={ 0,1,2,3}; 根据数据初值个数系统自动定义数组长度 例如:int a[]={1,2,3,4,5} 即 a[5] 用数组来处理求Fibonacci数列问题 用数组来处理求Fibonacci数列问题 main() { int i; static int f[20]={1,1}; 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(“%12d”,f[i]);} } 4.2.1 二维数组的定义 类型说明符 数组名[常量表达式][常量表达式] 例如:float a[3][4];可以理解为: 4.2.3二维数组的使用 二维数组元素的表示形式为 数组名[下标] [下标] 注意: 下标可以是整型表达式 数组元素可以出现在表达式中,也可以被赋值 使用数组元素时,下标应在已定义的数组大小范围内 下标不要越界 注意区分定义时的a[3][4]与引用时的a[3][4]的区别 4.2.2二维数组的初始化 分行给二维数组赋初值 例如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 所有数据写在一个{ }内,按存储顺序依次赋值 例如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 可以对部分元素赋初值 例如:int a[3][4]={{1},{0,6},{0,0,11}}; 根据给定初值,系统自动定行数 例如:int a[ ][3]={{1},{2},{3,4,5}}; 即 a[3][3] static int a[ ][3] = {1, 2, 3, 4, 5, 6}; 注意:此时只能省略第1维的值。C根据初 始化数据的数量,自动确定第1维的 大小 4.3 数组作为函数的参数 分两种情况:即数组元素作函数参数和数组名作函数的参数。 数组元素作函数参数时和一般变量作函数参数是一样的,是值传递 数组名(是数组存储区的首地址)作函数参数时与数组元素作参数不同,是地址传递。 4.3.1 数组元素作函数实参 传递方式是单向的,值传递。例如: 4.3.2 数组名作函数参数 传递整个数组给另一个函数,是将数组的首地址作为参数传过去(地址传递 ) 用数组名作函数参数 只拷贝一个地址自然比拷贝全部数据效率高 由于首地址相同,故实参数组与形参数组占用同一段内存 在该函数内,不仅可以读这个数组的元素,还可以修改它们 【例4.3-4】(数组分段交换)(数组循环左移k位) 长度为n的数组a可以分为两段,前面k个元素为一段,后面n-k个元素为另一段。编程交换两组元素的位置,交换之后每一组内部元素的相对位置保持不变。例如,数组a如下: a={1,2,3,4,5,6,7,8}. k=3, 两组交换之后数组变成: a={4,5,6,7,8,1,2,3} 算法1:使用临时数组 #includestdio.h void array_swap(int a[ ], int n, int k) { int t[50]; int i; for(i=0;ik;i++) //将数组a的第一段(用a[0~k-1]表示)拷贝到临时数组t中 t[i]=a[i]; for(i=k;i=n-1;i++) //将数组a的第二段(用a[k~n-1]表示)

文档评论(0)

智慧书苑 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档