欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言 数组.docx

    • 资源ID:4464636       资源大小:26.57KB        全文页数:10页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言 数组.docx

    1、C语言 数组第九章 数组一、一维数组的定义和一维数组的引用1、一维数组的定义1)当数组中每个元素只带一个下标时,称这样的数组为一维数组。2)定义一维数组一般形式如下: 类型名 数组名【整型常量表达式】,例 int a【8】2、一维数组元素的引用引用形式如下: 数组名下标表达式例:double x8; x0,xj,xi+k都是合法的。 注意:1)一个数组元素实质上就是一个变量名,代表内存中的一个存储单元。一个数组占一串连续的存储单元。 2)在c语言中,一个数组不能整体引用。数组名存放的是一个地址常量,它代表整个数组的首地址。3)引用数组元素时,下标表达式的值必须是整数,下表表达式值的下限为0。系

    2、统不自动检验数组元素的下标是否越界,保证数组下标不越界,十分重要。3、一维数组的初始化 数组的初始化一般形式如下: 数组类型 数组名表达式=例:int a8=0,1,2,3,4,5,6,7; 注意:1)所赋初值放在等号后的一对花括号中,数值类型与所说明的类型一致,所赋初值用逗号隔开。 2)所赋初值依次给数组中的元素赋初值。 3)当所赋初值的个数少于所定义数组的元素个数时,将自动给后面的元素补初值0。而对于字符型数组也同样补初值0,即0。 4)当所赋初值多于所定义数组的元素个数时,在编译时将会给出出错信息。例:int a10=0; char c5=;4、通过赋初值定义数组的大小 int a=0,

    3、0,0,0,0,0,0,0; 等价于 int a8=0;二、一维数组和指针1、一维数组和数组元素的地址 数组和指针比较记忆1) 指针变量的地址和数组名的地址值,就是该数组第一个元素的地址。2) 指针变量有基类型,相当于数组的类型名。3) 指针变量的地址值不可改变,因此不可以给数组重新赋值。 重要的是:这个指针变量中的地址值不可改变,也就是说,不可以给数组名重新赋值! float a10,*p,x;语句 a=&x;或a+都是非法的! for(k=0;k10;k+) p=a+k;在循环中没有改变a的值,而是通过a+k来遍历数组中的每个元素的地址。给数组中的每个元素赋值,可以采用以下几种方法:1)

    4、for(k=0;k10;k+) scanf(“%d”,a+k);2) p=a;for(p=a,k=0;k10;k+) p+;3) for(p=a,k=0;k10;k+)scanf(“%d”,p);p+;4) for(p=a,k=0;k10;k+) scanf(“%d”,p+);5) for(p=a;p-a10;p+) scanf(“%d”,p);2、通过数组的首地址引用数组元素 *&a0 *(a+0) a0 *&a1 *(a+1) a1 *&a2 *(a+2) a2通过以上表达式,数组元素可以看出可以通过*(a+i)来表示例:for(k=0;k10;k+) prinf(“%4d”,*(a+k)

    5、;3、通过指针引用一维数组元素 float a10,*p,k; p=a; a0 *p a1 *(p+1) for(p=a,k=0;k10;k+) printf(“%d”,*(p+k);p是可以移动的,那么就可以采用以下方法来遍历数组中的所有元素:for(p=a;p-a=0&i10 1) si的地址可以用一下三种方法来表示: &si s+i p+i 2)事实上,在C语言中,一对方括号不是仅用作表示数组元素的记号,而是一种运算符。那么数组元素si可以用以下四种方法来表示: *&si *(s+i) *(p+i) pi 3)注意区分以下表达式的含义: *(p+) *p+ *(+p) *+p 4)在这里

    6、s和p有着明显的区别,s是不可变的,而p中的地址值却是可变的。 5)逐个输出数组中的所有元素for(k=0;k10;k+) printf(“%4d”,*(a+k);for(k=0;k10;k+) printf(“%4d”,ak);for(p=a;p-a10;p+) printf(“%4d”,*p);for(k=0;k10;k+) printf(“%4d”,pk);三、函数之间对一维数组和数组元素的引用 1、数组名也可以作为实参传递,但数组名本身是一个地址值,因此,对应的形参应该是一个指针变量,且指针的基类型应和数组类型保持一致。例:#include #define M 100void arro

    7、ut(int *,int);int arrin(int *);main()int aM,k; k=arrin(a); arrout(a,k);int arrin(int *a) int i,x; i=0; scanf(%d,&x); while(x=0) *(a+i)=x; i+; scanf(%d,&x); return i;void arrout(int *a,int n) int i; for(i=0;in;i+) printf(%4d,*(a+i); if(i+1)%5=0) printf(n); 当数组名作为实参时,对应的形参除了是指针外,还可以用另外两种形式。1) arrin(in

    8、t *a) 2)arrin(int a) 3) arrin(int aM)当传送数组名时,在被调用函数中也同样可用数组元素的形式来引用调用函数中对应的数组元素。但应当注意:这只是形式的相似,不要误以为整个数组可以传送给被调用函数。调用函数只是把数组的首地址传送给形参指针,仍是遵循按”值”传递的机制。2、数组元素地址作为实参 当数组元素地址作为实参时,因为是地址值,所以对应的形参也应当是基类型相同的指针变量。3、函数的指针形参和函数体中数组的区别 #include #define N 10int *fun(int aN,int n)int bN; renturn b;main() int wN,

    9、*p; p=fun(w,N);1) fun中,形参aN会作为一个指针变量处理。系统只是为形参a开辟一个存储单元。2) fun中,定义了一个数组b,系统为其开辟一连串的存储单元,b是地址常量,不可以重新赋值。3) fun执行完毕后,系统将释放a和b所占的存储单元,指针a和数组b都不存在。四、一维数组应用举例1、编写程序,定义一个含有15格元素的数组,并编写函数分别完成以下操作: 1)调用c库函数中的随机函数给所有元素赋以0-49的随机数。 2)输出数组元素中的值; 3)按顺序对每隔三个数字求一个和数,并传回主函数。 4)最后输出所有求出的和值。2、将数组中的数按颠倒的顺序重新存放。在操作时,只能

    10、借助一个临时存储单元,不得另外开辟数组。3、已知整型数组中的值在0-9的范围内,统计每个整数的个数。4、已知存放在a数组中的数不相重,在a数组中查找和x值相同的元素的位置。若找到,输出该值和该值在a数组中的位置;若没找到,输出相应的信息。5、w数组中存放了n个数据,编写函数删除下标为k的元素中的值。6、w数组中存放了n个数据,编写函数在特定位置加入一个元素。7、用选择法对数组中的数进行排序(由小到大)。第二节 二维数组的定义和二维数组元素的引用一、 二维数组的定义1、 定义:当数组中每个元素带有两个下标时,称这样的数组为二维数组。2、 二维数组的定义语句形式如下:类型名 数组名【常量表达式1】

    11、【常量表达式2】例: int a34; 第0列 第1列 第2列 第3列第0行 a00 a01 a02 a03第一行 a10 a11 a12 a13第二行 a20 a21 a22 a23a数组中的元素在内存中占一系列连续的存储单元。按照“按行存放”的规则来进行存放。在c语言中,可以把一个二维数组看成是一个一维数组,每个数组元素又是包含若干个元素的一维数组。二、 二维数组元素的引用引用形式:数组名下标表达式1下标表达式2考点:1) 一定要把两个下标分别放在两个方括号内。2) 下标的上限是n-13) 如果引用m行n列的元素时,am-1n-1三、 二维数组的初始化1、 所赋初值个数与数组的个数相同in

    12、t a43=1,2,3,4,5,6,7,8,9,10,11,12;2、 每行所赋初值个数与数组元素的个数不同int a43=1,2,3,4,7,10;3、 所赋初值行数少于数组行数int a43=1,2,4,5;4、 赋初值时省略行花括号对int a43=1,2,3,4,5;四、 通过赋初值定义二维数组的大小对于二维数组,只可以缺省行下标,但不能缺省列下标Int a3=1,2,3,4,5,6; 等价于Int a43=1,2,3,4,5,6;当用一下形式定义数组时:Int c3=1,2,3,4,5;第一维的大小按以下规则决定:1) 当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维

    13、的大小。2) 当初值个数不能被整除时:第一维的大小=所得商数+1以上语句等价于:c23=1,2,3,4,5;五、 二维数组的遍历方法(双for循环)例:通过键盘给2*3的二维数组输入数据,第一行赋1、2、3,第二行赋10、20、30,然后按行输出此二维数组。#include stdio.hmain() int a23,i,j; printf(input 2*3 integers for arrays:n); for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&aij); printf(output the arrays by line:n); for(i=0;i2;

    14、i+) for(j=0;j3;j+) printf(%3d,aij); printf(n); 六、 二维数组和指针首先定义:int *p,a34;1、 二维数组a由若干个一维数组组成1) C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每个元素又是一个一维数组。2) C语言中,在函数体中或在函数体外部定义的一维数组名是一个地址常量,其值为数组的第一个元素的地址,此地址的基类型就是数组元素的类型。3) 同样,在二维数组中,a0,a1,a2也是一维数组名,同样也代表一个不可变的地址常量,其值依次为二维数组每行第一个元素的地址,其基类型就是数组元素的类型。4) p=ai等价于p=*(a+i

    15、)2、 二维数组名也是一个地址常量1) 二维数组名也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。2) 二维数组名应理解为一个行指针。3) 赋值语句p=a;是不合法的,因为p和a的基类型不同。3、 二维数组元素的地址1) 二维数组元素的地址可以由表达式&aij求得,也可以通过每行的首地址来表示。2) aij的地址可以用一下五种表达式求得:1 &aij 正常表示2 ai+j *(a+i)+j&a00+4*i+j&a0+4*i+j4、 通过地址引用二维数组元素定义 int a34,i,j;a数组元素可用一下五种表达式来引用:*(&aij)或 aij 正常表示*(ai+j) 将ai看成

    16、行数组名*(*(a+i)+j) ai等价*(a+i)*(&a00+4*i+j) (*(a+i)j5、 通过建立一个指针数组引用二维数组元素定义:int *p3,a32,i,j;for(i=0;i3;i+) pi=ai; 1)引用形式:(1)*(pi+j) /*与 *(ai+j)对应*/(2)*(*(p+i)+j) /*与 *(*(a+i)+j) 对应*/(3)(*(p+i)j /*与 (*(a+i)j 对应*/(4)pij /*与 aij 对应*/6、通过建立一个行指针引用二维数组元素int a32,(*prt)2;引用形式:(1)*(prti+j) /*与 *(ai+j)对应*/(2)*(*

    17、(prt+i)+j) /*与 *(*(a+i)+j) 对应*/(3)(*(prt+i)j /*与 (*(a+i)j 对应*/(4)prtij /*与 aij 对应*/七、二维数组名和指针数组作为实参1、二维数组名作为实参和形参之间的数据传递当二维数组名作为实参时,对应的形参必须是一个指针变量fun函数的首部可以是以下三种形式之一:1) fun(double(*a)N)2) fun(double aN)3) fun(double aMN)2、 指针数组作为实参时实参和形参之间的数据传递Fun函数的首部可以是以下三种形式之一:1) fun(double *aM)2) fun(double *a)3) fun(double *a)七、 二维数组程序举例例1、 编写程序,通过调用随机函数给5*6的二维数组元素赋10-40范围内的整数,求出二维数组每行元素的平均值。例2、 编写程序打印出以下的杨辉三角。例3、 找出方阵中每列的最小元素及所在的行号。


    注意事项

    本文(C语言 数组.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开