ImageVerifierCode 换一换
格式:PDF , 页数:62 ,大小:3.45MB ,
资源ID:225501      下载积分:19 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/225501.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(《C语言学习与应用》教学课件08二维数组操作.pdf)为本站上传会员【曲****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

《C语言学习与应用》教学课件08二维数组操作.pdf

1、C语言学习与应用教学课件任务说明学习二维数组的定义,数组元素的引用、遍历和整齐 化输出的方法,在此基础上掌握批量数据的程序设计。了解二维数组的定义和下标变量的范围。掌握二维数组元素和地址的多种表示方法。掌握二维数素元素的遍历方法。掌握二维数组输出函数的编写。了解针对二维数组操作的函数的编写。0能够用宏定义二维数组的范围。C能够定使用指针变量遍历二维数组。0能够编写对二维数组操作的函数。0能够排查有关二维数组程序设计中的物理和逻辑错场0能够自由地书写二维数组操作的函数和主函数。01,二维数组的定义和初始化1.二维数组的定义二维数组就是若干个一维数组,对二维 数组的操作就是多次对一维数组的操作,-

2、维数组的遍历是一层循环,二维数组的操作 就是循环的嵌套了。1.二维数组的定义int a34;定义了一个名为a的二维数组,在内存中占有12个连续的存储单元,顺序是a00,a01,a02,a03,a10,a11.a23,如图81所不。图81二维数组存储示意图a00aOla02a03,国网mmmramma20a2la22a23可以将二维数组理解为一个矩阵,本例是3行4列的矩阵,行下标的变化范围是。2,列下标的变化范围是03。微课学习任务八二维数组操作_多科成绩统计(tfl知做而效传Mt二维数组的定义2,二维数组元素的引用如有定义double w 4 :则w 1 0.w i j、w i+j k 等均是

3、合法的引用,只要有两个方括号,方 括号中的表达式值为整数且在允许的范围内 即可。3.二维数组的初始化int a33=1525452;只给前两行的前两个元素赋值,其余元素均为0。int a4 3=1,2,4,5;按存储顺序给a00,a01,a02,分别赋值 1、2、4、5,其余元素值均为0。int a3=152535455;可以省略第一个方括号中的常量表达式,不能省略第二个方括号中 的常量表达式,本例中第一个方括号中的隐含值是2。应用举例8TB三维数组的基本操作输入和输出J#include nstdio.hn#include stdlib.h#define M3 用宏定义二维数组的行数#defi

4、ne N4 用宏定义二维数组的列数void main()(intaMN,M;for(i=0;iM;i+)对二维数组搜一遍,是两层循环for(j=0;jN;j+)aij=rand()%100;为二维数组元素赋099的随机值 for(i=0;iM;i+)应用举例8Tg二维数组的基本操作输入和输出4for0=O;jN;j+);priiC%3d%矶HUD;printf(n nn);每输出一行换一行getchar(程序输出:41 67 34 069 24 78 5862 64 5 45将程序代码补充完整,输 出3行3列的方阵。.课堂思考:问题8-1#include wstdio.hn#define M3

5、void main()(int i J,a=4,9,2,3,7,8,1,6;电力力/电力,J?)色,】虫秀七/七力&七?虫,)包n普 黔力龄代工七物/立立,)虫虫,】黔电七/七包?)?)力?)?)力加金,:七?)野普,)七七?)&七,普力电f电电七包的急虫力电电)钞/钟电器的七旬毂电期电立,e龄和aeg?)粤力立立旬立色,】给安七电七旬七龄和,)七金虫,)七七?)电就,普I二维数组的地址和指针1.二维数组元素和地址的表示若有定义“int a 3 4则数组元素a i j的地址有 以下几种表示方法。)&a i O这前TT房法是最直基的薪j(2)a i+jo这种表示方法是将a i理解为一维数组 的数

6、组名,a i+j就是a i j的地址。1,二维数组元素和地址的表示,*(a+i)+jo这种表示方法将上面的a i表示为*(a+i)。&a 0 n 置&a 010+4*i-0向)数组是连续存彳诸?平起始位 j 就是&ai H oJa 0+4j a 0 ori+jo 行聂示方法中,&aoo就是J数组元素ai j有以下几种表示方法。*(a i J 演变而来9j)O这种|法由地址的第二谕表示方法*(*(a+i)+j)。这种表示方法由地址的第三种表示方法 演变而来。数组元素ai j有以下几种表示方法。(*(a+i)i 表示夕*(&a 01 种表示方?0!去演变而亍:种表示方法由出北的第四*(a 0+4*

7、i+j)。这种表示方法由地址的第五种表示 方法演变而来。O o这qa+i),引法将ai斗中的a I优先问题加上括号二维数组元素的地址表示2.二维数组中几个地址的区别如有定义“int a 3 4则a、a 0、&a 0 0都是这些连续存储单元的首地址,但它们的基类型不同,a 0和&a 0 0的基类型为1个整型的存储单元,而a 的基类型为4个整型的存储单元。&3 0 0+1和a 0+1中的1表示1个存储单兀,而 a+1中的1表示4个存储单元(4就是a 3 4中的每行元素 个数),如图8-2所示。aa0&a0 0 a0 0 aO+l&aOlaOl a0 2 a0 3a+1al&alOalOal+l a

8、ll al2 al3a+2a2&a20 a20 a2+l a2l a22 a23图8-2二维数组元素的地址3.用一维数组的指针访问二维数组元素因二维数组元素是连续存储,故可以当一维数组使用。可 以用与一维数组对应的指针访问二维数组元素。如有定义“int a 3 4,*p=a 0;,则p+1 是&a 0 1,*(p+5)就是a 1 1 o还可以给P赋&a 0 0、a 1、a 2,但不能给p 赋a,因为它们的基类型不同。4.专用于二维数组的指针如有定义“int a 3 4,*p 3,(*q)4 则p 0、P 1、P 2和q可理解为是二维数组的指针。uint a 3,*p;中,*p 3的方括号优先,

9、它定义了一个数组P 3,它的三个数组元素均是指针变量,当执行语句 ufor(i=0;i3;i+)p i=a i;后,p i j就是a i j 了uint a 3 4,(*q)4;中,(*q)4的小括号 优先,它定义了一个指针变量q,其基类型为4个整型的存储单 元,当执行语句uq=a;后,q i j就是a i j 了。03I二维数组名和指针数组为实参1.二维数组名作为实参int aMN;fun(a);/调用函数时,指针数组做实参对应的fun函数头部的书写形式为:fun(int sMN)或 fun(int s N)或 fun(int*s)No三种情况中,遮住最右面的N,其余部分与一维数组名作为 实

10、参时的书写形式一致。无论是哪种方式,形参都需开辟一个存储单 元用来接收传来的二维数组的首地址。微课学习任务八二维数组操作_多科成绩统计知3一虑效传搐二维数组名作为实参2.指针数组作为实参int aMN,*pM;for(i=0;i=i,从左上到右下的对角线的元 素下标是i=j,从右上到左下的对角线特征是i+j=M7 o微课学习任务八二维数组操作_多科成绩统计知M-四效传搐二维数组应用二维数组中一些元素的表示二维数组中一些元素的表示2.针对二维数组的操作应用举例82:求二维数组周边元素的平均值。对数组元素搜一遍,遇到周边元素累加并计算。#include stdio.h#include stdlib

11、.h#define M 3#define N 4double fun(int w 口 n)(int i,j,k=O;double ave=0;for(i=0;iM;i+)对二维数组搜一遍,遇到周边元素累加并计数for(j=0;jN;j+)if(i=0|i=M-l|j=0|j=N-l)ave+=w i j;k+;return ave/k;返回平均值)void main()(int a M N,ij;for(i=0;iM;i+)为二维数组元素赋值for(j=0;jN;j+)a i j=rand()%5 0;for(i=0;iM;i+)输出数组(for(j=0;jN;j+)printf(”3d”,a

12、 i j);printf(n nn);)printf(ave=%f nn,fun(a);getchar();)输出:4 1 17 34 019 24 28 812 14 5 4 5 ave=19.5 00000将N行N列的方阵左下三角元素置0,请将程序代码补 充完整。#include stdio.h#include stdlib.h#define N 5void fun(int w N)为数组左下三角元素置0void out(int w N)输出数组void main()int aNNJJ;for(i=0;iN;i+)为二维数组元素赋值for(j=0;jN;j+)aij=rand()%5 0;

13、out(a);输出数组元素fun(a);为左下三角数组元素置0out(a);再次输出数组元素getchar();应用举例8 TM方阵的转置J搜索不包括对角线元素在内的左下三角元素,与对应元素交换,即 与 ajai交换。#include stdio.h#define M 3void arrout(int arrayM)(int i,j;for(i=0;iM;i+)(for(j=0;jM;j+)printf(%3d n,array i j);printf(nn);应用举例8 TM方阵的转置Jvoid fun(int arrayMM)rintfor(i=0;iM;i+)fora=0;ji;j+)内层

14、循环次数用i控制t=arrayij;arrayij=arrayji;arrayji=t;应用举例8 TM方阵的转置Jvoid main()int 2,3,4,5,6,7,8,9,i,j;printf(nprmtl:nn);arrout(a);输出原数组fun(a);调用fun函数实现转置printf(nprmt2:iin);arrout(a);扁出转置后的数组getchar();printl:12 34 5 6 7 8 9 print2 14 72 5 8 3 6 93,将二维数组看做若干个一维数组应用举例8-4:将二维数组每行元素的平均值放在b数组中。将二维数组看做由M个一维数组组成,对每个

15、一维数组做三件事:累加器清零,求和,计算平均值并赋给b数组。#include stdio.h#define M 3#define N 4void fun(int a 口 n,float b 口)(int i,j;float s;for(i=0;iM;i+)i 是行数(s=0;这两句是一维数组的求和运算for(j=0;jN;j+)s=s+a i j;bi=s/N;第i行的平均值赋给bi)void main()(inta M:N=l,2,3,4,5,6,7,8,9,10,ll,12,i,j;float b M;fun(a,b);调用函数将每行元素的平均值放在b数组中for(i=0;iM;i+)输出

16、数组元素和对应的平均值(for(j=0;jN;j+)printf(%3d,a i j);printf(%.2f n,b i);在每行数组元素后输出平均值)getchar();)程序输出:12 34 2.505678 6.509 10 1112 10.50将二维数组每列元素的平 均值放在b数组中。将二维数组每列元素的平均值放在b数组中q#include nstdio.h0#define M 31 I#define N 41 Ivoid fun(int a N,float bN)O口for(j=0;jN;j+)printfr3cT,aij);printf(nn);)for(j=0;jN;j+)pr

17、intf(n%.2f n9bj);getchar();void main()(int aMN=l,2,3,4,5,6,7,8,9,10,U,12,i,j;float bN;fun(a,b);调用画数将每列元素的平均值放在b数组中for(i=0;iM;i+)输出数组元素和对应的平均值任务实施任务多科成绩的统计计算工作内容及要求:单科成绩的统计计算是一维数组的操作,二维数组就是多个一维数 组,将单科成绩的统计计算重复几遍就是对多科成绩的操作,在filel文 件(图8-3)中存放了某班学生的三科成绩(算法、JAVA、数据库),每 一行的数据是一个学生的三科成绩,在主函数中已将成绩读入二维数组a100

18、 3中,学生数小于100,完成以下计算任务。(1)计算每个人的平均分,将各科成绩和平均分写入f1.txt文件中。(2)计算各科成绩的最高分,将各科成绩和最高分写入f2.txt文件。,filel.txt|I叵区文件()编辑区 帮助也)格式)4818244837913028297317145671801161649389779661659131_ _881467V图8-3 fi Ie1文件内容编程训练8-1代码调试。这个任务涉及文件操作的知识,请先将下面的参考/代码在VS环境中调试,调试前要检查在d盘根目录下的1 file1.txt文件是否存在,数据是否符合要求,程序运 卜、行通过后要检查在d盘产

19、生的txt文件内容是否正确。*一知识链接:文件读写知识FILE*fp;定义文件指针if(fp=fopen(ud:fiIe1.txt,)=NULL)/以“读”方式打开d盘filel.txt文件(pr intf(cannot open this f i Ie!n5J);如打开有误,终止程序ex it(0);/*强行终止程序,须包含“stdl ib.h”文件*/#include stdio.h#include”stdlib.hn 调用 exit(O)需包含的文件#define M 100#define N 3int afin(int aMN)/*将文件内容读入数组,函数值为记录个数列 FILE*fp

20、;定义文件指针变量int i=0,n;if(fp=fopen(66d:filel.txt,66r,)=NULL)/*以读方式打开 d 盘根目录mel.txt 文件*/(printf(文件打开错误!n);/若打开有误,终止程序exit(0);强行终止程序)while(!feof(fp)文件指针没到尾(fscanf(fpJ%d%d%(T,&ai0,&ail,&ai2);从文件读数 i+;)fclose(fp);关闭文件n=i;return n;n表示读入的记录个数void afout(int aMN,int n)将数组内容写入文件的函数(FILE*fp;int i;if(fp=fopen(66d:

21、fl.txt,/6w,)=NULL)/*写方式打开d盘根目录下的fl.txt文 件*/(printf(文件写入错误!暧);exit(O);)for(i=0;in;i+)fprintf(fp,n%4 d%4 d%4 dnn,ai0,ail,ai2);向文件写数fclose(fp);)一void aout(int aMN,int n)显示数组内容int i;for(i=0;in;i+)printf(n%4 d%4 d%4 dnM9ai0,ail,ai2);都探二臧螂一感void main()(int aMN,n;n=afin(a);aout(a,n);afout(a,n);getchar();/定

22、义数组和中间变量/将文件内容读入数组/显示数组内容/将数组内容写入文件编程训练8-2计算各科成绩的平均分。计算各科成绩的平均分是一维数组计算平均值 的问题,计算所有人的平均分是二维数组的操作,I 就是对一维数组操作的重复,写出fun1函数,计算a 数组中n个人的平均分,并将平均分依次存入b数组 中。程序的输出结果如图8-4所示。除,I*D:sddDebugsdd.算法JAUA数据结构平均分 匚48 18 24 3Q.00 巍83 79 1 5 4.33 30 28 29 29.00|73 17 14 34.67 56 71 80 69.00|11 61 64 4 5-33|1(9 38 9 1

23、8,6777 96 61 78.00 65 91 3 5 3.00 88 14 67 56.33 111 一,一,O/图8-4编程训练8-2程序的显示结果#include stdio.h#include stdlib.h#define M 100#define N 3int afin(int aMN)/)将文件内容读入数组,函数值为记录个数略void afout(int aMN,int n,double b)将数组内容写入文件的函数(.请参考编程训练8的内容fprintf(fpj算法Java数据结构平均分记);for(i=0;in;i+)fprintf(fp,n%4 d%4 d%4 d%.2f

24、nH,ai0,ail,ai2,bi);fclose(fp);_void aout(int aMN,int n,double b)显示数组内容(int i;printf(“算法Java数据结构平均分iT);for(i=0;in;i+)printf(n%4 d%4 d%4 d%.2fnH,ai0,ail,ai2,bi);void funl(int a 3,int n,double*b)void main()(int aMN,n;定义数组和中间变量double bM;定义存放平均值的数组n=afin(a);将文件内容读入数组计算a数组n行三素的平均值,放在b数组中aout(a,n,b);显示数组内容

25、afout(a9n,b);将数组内容写入文件getchar();I_褊程训练8-3计算各科成绩的最高分。这是对三个数组最大值的问题,请写出 fiin2函数并调试程序,参考输出如图8-5所示图8-5编程训练8-3程序运行后f2.txt文件的内容#include stdio.h#include stdlib.h#define M 100#define N 3int afin(int aMN)将文件内容读入数组,函数值为记录个数略void afout(int aMN,int n,int*c)将数组内容写入文件的函I数fprintf(fp,“算法 Java 数据结构n”);for(i=0;in;i+)

26、fprintf(fp/6%4 d%4 d%4 dn,ai0,ail,ai2);fprint(fp,“最高分分”);for(i=0;iN;i+)fprint(fp/6%4 dw,ci);fclose(fp);_void aout(int aMN,int n,int*c)显示数组内容(int i;printf(“算法Java数据结构平均分n);for(i=0;in;i+)printf(66%4 d%4 d%4 dnn,ai0,ail,ai2);printf(最高分:n”);for(i=0;iN;i+)printf(n%4 dn,ci);)void fun2(int aN,int n9int*c)v

27、oid main()(int aMN,n;int cN;n=afin(a);fun2(a,n,c);aout(a,n,c);afout(a,n,c);getchar()定义数组和中间变量定义存放最高分的数组将文件内容读入数组招a数组记录的n个最高分放入c数组显示数组内容将数组内容写入文件编程训练8-4程序挑错。下面这段程序代码是计算最高分的,编译没 错,但是结果不对,显示如图8-6所示,请指出 其中的错误。*.11*D:sddDeb.算法数据结构 匚图8-6编程训练8-4程序的执行结果#include stdio.h#include stdlib.h#define M 100#define N

28、 3void fun2(int a 3,int n,double*c)(int i,j,m;for(i=0;iN;i+)(m=a0i;for(j=l;jM;j+)if(maji)m=aji;ci=m;)void main()(FILE*fp;int aMN;double cN;int i=0,j,n;定义文件指针变量if(fp二fopen(“d:fflel.txt”,r)=NULL)/*读方式打开 d 盘根目录 filel.txt文件力(printf(文件打开错误!n);若打开有误,则终止程序exit(O);)while(!feof(fp)文件指针没到尾(fscanf(fp/6%d%d%d,&

29、ai0,&ail,&ai2);i+;)fclose(fp);关闭文件n=i;是记录数fun2(a,n,c);printf(算法Java数据结构n);for(i=0;in;i+)输出各科分数和对应的平均分(for(j=0;jN;j+)printf(H%4 dH,aij);printf(niin);printf(最高分:n);for(i=0;iN;i+)printf(H%4 dH,ci);if(fp=fopend:f2.txt”Jw)=NULL)以写方式打开d盘根目录下的f2.txt文件(printfC文件写入错误!暧);exit(O);)fprintf(fp J 算法 Ja va 数据结构 n”);for(i=0;in;i+)将各科成绩和平均分写入文件(for(j=0;jN;j+)fprintf(fp9n%4 dM,aij);fprintf(fp,nn);fprintf(fpj 最高分八n);for(i=0;iN;i+)fprintf(fp,n%4 d n,c i);fclose(fp);getchar();第一处错误:第二处错误:祝你进步!谢谢!

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服