



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计课程教案表授课题目第四章 数组(2)二维数组课时安排2授课时间教学目的和要求1掌握:二维数组的定义与使用方法。教学内容1基本内容:(1)二维数组的定义和使用方法2重点:二维数组的引用讲课进程和时间分配1、引入(5分钟)在C语言中,数组的元素还可以是数组,这样就构成二维数组,所以二维数组可以堪称是“数组的数组”。照此办理,还可以构成三维,四维数组(称多维数组)等等,二维数组是多维数组中最简单,最常用的数组,它代表多维数组的基本特征。2、 二维数组的定义(10分钟)如前面所说,可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组如:int a34;可以将a数组看作是一个一维数组,它有3个元素:a0、a1、a2,每个元素又是一个包含4个元素的一维数组。图在纸上:可以理解为:int a04, a14, a24,此处把a0,a1,a2看作一维数组名。说明:在这里为什么这么说呢?以后讲到指针的时候更便于理解二维数组的存储:二维数组从概念上可理解为行-列矩阵,但存储器是一维的,需按一定规则转换,在内存中:C语言中,二维数组中元素排列的顺序是按行存放,不同的语言它的排列顺序是不一样的,Fotran是按列存放的。如:见纸上也就是说:数组元素的实际存放顺序是:右边下标比左边下标变化得快!3、二维数组的引用(5分钟)注意下标的最大取值,即:要注意数组定义和数组元素引用的区别,引用时候它的最大取值要比定义时少1如定义:int a34;则下标下限值是a00, 下标上限值是a23,4、二维数组的初始化(按行存放)(15分钟)(1)按存放顺序赋初值如:int x23=1,2,3,4,5,6;结果为:x00=1, x01=2, x02=3, x10=4, x11=5, x12=6(2)按行赋初值如:int x23=1,2,3,4,5,6;结果同上。(3)部分赋初值如:static int x23=1,2,4;/*以存放顺序赋*/结果为:x00=1, x01=2, x02=4, x10=0, x11=0, x12=0如:static int x23=1,2,4;/*以行赋*/结果为:x00=1, x01=2, x02=0, x10=4, x11=0, x12=0如:static int x23=6,2,5,0,6;/*以行赋*/x00=6, x01=2, x02=0, x10=5, x11=0, x12=6说明:想给第二行第三个元素赋值为0的话不能写成5,6或者是5, ,6而应人为写上0.(4)省略第一维长度static int x3=1,2,3,4,5,6,7;结果为:x00=1, x01=2, x02=3, x10=4, x11=5, x12=6,x20=7, x21=0, x22=0注意:不能省略第二维的长度。为什么?如果省略的话,就不知道一行有几个元素,给定这几个元素究竟应该如何赋值就不知道了,所以能省第一维,不能省第二维,因为省的话系统不能确定,这样就产生二义性了。5、二维数组程序举例(20分钟)例1:二维数组的输入与输出一般二维数组的处理用二重循环来实现用循环变量的值控制数组元素的下标,因为数组是一个整体,要想取出其中每一个个体的话,就得用下标来控制。#includevoid main()int a33,I,j;for(i=0;i=2;i+) for(j=0;j=2;j+) scanf(“%d”,&aij);for(i=0;j=2;i+) for(j=0;j=2;j+) printf(“%5d”,aij); printf(“n”);上述程序为学生详细分析一下。for(i=0;i=2;i+) for(j=0;j=2;j+) scanf(“%d”,&aji);分析输出结果与上述有何不同,未修改时先给每行赋值,修改后是先给每列赋值for(i=0;j=2;i+) for(j=0;j=2;j+) if(i+j)%2) 修改为 if(i+j)%2=0) printf(“%5d”,aij);for(i=0;i=字符个数+1(字符串后面自动加上一个0)例 字符数组初始化#includevoid main() char a7=a,p,p,l,e; char b7=”apple”; char c7; static char x7; int i; for(i=0;i=6;i+) printf(“%6d%6d%6d%6dn”,ai,bi,ci,xi);显示结果:97 97 -23 0 112 112 75 0 108 108 80 0 101 101 -2 0 0 0 51 00 0 123 0c数组的各个元素的值是随机的。X数组用static说明,系统给它赋初值0.例 用一个字符串给字符数组赋初值,然后打印出各元素的ASCII编码值# includevoid main() char str=”This is a string!”; int i =0; while(stri!=0) printf(“%c=%dn”,stri,stri); i+ printf(“%c=%dn”,stri,stri);输出结果:T=84H=104I =105S=115 =32 注意几个问题:用字符串给字符数组赋初值,系统自动加上空字符0(终结符) 空格字符的AscII编码为320空字符ASCII编码为0两者均无法直接打印出来。3) 字符串的引用与输入输出对于字符数组,在程序中既可以逐个引用字符串中的单个字符(数组元素)也可以一次引用整个字符串(数组),这点在数值数组中是不可以的!1、 逐个字符数组元素输入输出:用%c格式符描述。例:scanf(“%c”,&ai);printf(“%c%c%c”,a0,a2,a3);2、 整个字符串(数组)输入输出,用%s格式符描述如:char a=”china”scanf(“%s”,a);printf(“%s”,a); a前没地址符,因为数组名就代表数组的起始地址注意1:用%s输出,无论数组元素有多少个只要遇到“0”便结束。如:char star34=”*”,“*”,“*”;printf(“%sn%sn%sn”,star0,star1,star2); 说明:star0代表第一行首地址。结果为:* * *注意2:%s要求的是地址,对一维数组,数组名就是地址;对二维数组,只写行下标时是地址。如 char a6;scanf(“%s”,a);输入数据:china如:char str15,str25,str35 输入数据:how are you? 用%s输入串时遇到空格或回车就默认前一个字符串输入结束。也可以定义一个二维数组void main() char s35; scanf (”%s%s%s”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海洋环境保护与治理-洞察及研究
- 建筑环境模拟与控制技术-洞察及研究
- 牡丹皮对高密度脂蛋白胆固醇代谢的调控机制研究-洞察及研究
- 海王星磁场地质证据解析-洞察及研究
- 儿童指骨创伤后功能恢复研究-洞察及研究
- 种子行业云服务模式创新-洞察及研究
- 博物馆文创产品用户体验研究-洞察及研究
- 生物医学测量仪器的研发-洞察及研究
- 无人化选矿技术探索-洞察及研究
- 蔬菜大棚承包合同书范本解析
- 《新能源汽车动力电池及管理系统检修》全套教学课件
- 妇产科三基三严培训内容
- 中医全科学科
- 2024年《招标采购专业知识与法律法规》考前必刷必练题库500题(含真题、必会题)
- 《张仲景活血通络法研究》
- 工程造价预算及成本控制手册
- 超星尔雅学习通《当代大学生国家安全教育》章节测试答案
- DL∕T 5285-2018 输变电工程架空导线(800mm以下)及地线液压压接工艺规程
- NB/T 11431-2023土地整治煤矸石回填技术规范
- 房建类工程施工方案
- 国家开放大学《病理学与病理生理学》形考任务1-4参考答案
评论
0/150
提交评论