




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二讲 二维数组的定义与引用【主要讲授内容】7.2 二维数组的定义7.3 字符数组【重点与难点】1重点二维数组的概念、定义、赋值及引用;字符数组的定义、赋值及引用2难点二维数组的概念、二维数组的基本运用【教学要求】1 掌握基本概念:二维数组、字符数组;2 二维数组的定义、赋值、引用;3 字符数组的定义、赋值、引用;4 二维数组和字符数组的基本运用。【实施方法】课堂讲授,利用多媒体演示数组概念,采用提问式教学法引入教学。【学时安排】2学时讲授内容1二维数组基本概念二维数组是既有行又有列的数组的数组。从列的角度来说,即一行就是一个一维数组,所有的行就构成了一个二维数组。在C中,数组是以行优先存放的,因此二维数组的第二维变化最快,然后才是第一维。(1) 定义形式如下类型说明型 数组名下标1下标2;根据C语言的规定,可以把二维数组看作一个特殊的一维数组:它的每一个元素又是一个一维数组。例如,int a33; 二维数组可看成一维数组的效果如下图所示:即上述二维数组中的各个元素的存放顺序依次为:a00-a01-a02-a10-a11-a12-a20-a21-a22(2) 初始化 二维数组的初始化方法如下:1)逐行对所有元素赋初值。例如, int a23=1,7,6,2,3,17;上述初始化列表中的每一对子花括号内的数值严格对应到数组中的一行。数据按顺序赋给该行中的第0列,第1列等等,如果没有足够的列获得初值,则这些列的值将是一个随机值。2)将所有数据写在一对花括号内。例如,int a23=1,7,6,2,3,17;根据数据元素存储的行优先原则,这些元素先赋值给第一行的元素,再赋值给第二行的元素等等。 3)可以对每行的前一部分元素赋初值。例如, int a23=1,2,6;则1、2、6分别赋值给a00、a10、a11。4)如果对全部元素赋初值,则第一维的长度可以不指定,但第二维的长度不能省。例如,int a3=1,7,6,2,3,17;也可以只对部分元素赋初值,但应分行赋初值。例如,int a3=1,2,6;(3) 引用形式数组名下标1下标2其中,“下标1”表示行下标,“下标2”表示列下标,二者必须都是整型表达式。例如,输出数组a中的第一行第二列的元素:printf(“%d”, a01)。例如,对于上述array数组,输出第0个元素赋值:printf(“%d”, array0);请注意数组的定义形式和数组元素的引用形式的区别。2二维数组应用举例例7.3 按行优先次序输入一个2X3的矩阵,再按列优先次序输出。基本思路(1)定义一个2行3列的二维数组,接收键盘输入(2)将列数作为控制循环的条件,如果3列还没有输完,则转(3),否则转(4)(3)输出当前列i(首先是第一列,i=0)的当前行j(首先是第一行,j=0)元素的值,即aji,接着,行号加1输出aj+1i后换行,然后将输出列号加1,行号赋为0,再转(2)(4)屏幕按列优先输出矩阵的值, 程序结束程序见教程P98例7.4 有一个3X4的矩阵,编程序求出其中最大的那个元素的值,以及它所在的行号和列号。基本思路(1)用二维数组a34存放矩阵,另外定义3个变量max,row,col,用于存放最大值,及所在行号和列号,且它们的初值分别是a00,0,0 (2)外层循环控制行变量i,内层循环控制列变量j(3)在每一次内循环中,将max的值和aij进行比较,只要发现后者更大,即执行语句块:max=aij; row=I; col=j; (4)当外循环体结束时,max,row和col变量的值即为所求程序见教程P993字符数组基本概念字符数组是数组元素类型为字符类型的数组。字符数组中的一个元素用来存放一个字符。字符数组具有数组的全部特性。(1)字符串常量字符数组可以被视为是字符变量的集合。和它相对应的是字符串常量,所谓字符串常量就是用一对双引号括起来的字符常量的集合。例如, abc,hello都是字符串常量。字符串在存储到内存中时,系统会自动对它加一个0作为结束符。例如:hello表面上看只有5个字符,但在内存中占6个字符,最后一个字符就是由系统自动添加的0,也可以用0或NULL来表示。(2)字符数组的定义字符数组包括一维字符数组和多维字符数组(以二维为例)。其定义方式如下:char 数组名常量表达式;char 数组名常量表达式1常量表达式2;例如,char a10;char a310;(3)字符数组的初始化字符数组的初始化有以下几种方式:1)对数组进行逐个元素初始化,例如, char c5= h, e,l,l,o;在这个例子中,大括号里的5个字符分别赋值给了从c0到c4的5个数组元素。2)若初始化时,数据的个数少于数组的长度,则多于元素自动赋值为0。3)若初始化时,数据的个数多于数组的长度,则系统会认为是初始化错误。4)若初始化时,数据的个数等于数组的长度,则数组长度可以省略。例如, char c=h, e,l,l,o;系统会自动认为该数组的长度为5。 初始化时,也可以写成以下形式: char c=hello;或char c=hello;注意,在这种形式中系统会认为数组c的长度为6。(4)字符数组的引用通常情况下,可以逐个引用字符数组中的元素。例如,#include main()char a10;int i;printf(input ten numbers:n);for(i=0;i10;i+) scanf(%c,&ai);for(i=0;i10;i+) printf(%c ,ai);但是,在对字符数组进行输入输出操作时,也可以将整个字符数组以字符串的形式进行整体输入或输出。例如,#includestdio.hmain()char a10;scanf(%s,a);printf(%sn,a);4字符串处理函数在C的函数库中提供了一些用来处理字符串的函数。需要注意的是,在使用这些函数前必须在文件开始处用#include string.h命令将相关的头文件包含到源程序中。下面介绍几种常用的字符串处理函数。(1)puts(字符数组)该函数表示将一个以0结束的字符序列(字符数组或字符串)输出到终端,并在最后添上一个换行符,并且0不会被显示出来。例如,char c = China;puts(c);输出结果为:China(2)gets(字符数组)该函数表示从终端输入一个字符串到字符数组,直到遇到换行符或字符串结束标志。换行符被丢弃,并且在字符数组的末尾加上一个0。例如,char a20;gets(a);从键盘输入: China则将输入的字符串China(注意是6个字符)赋值给字符数组a。(3)strcpy(字符数组1,字符数组2)该函数表示将字符数组2的内容复制到字符数组1当中去。说明:1)“字符数组1”的长度必须比“字符数组2”的长度要大。2)“字符数组1”必须是一个数组名的形式,“字符数组2”可以是一个字符数组名,也可以是一个字符串常量。例如,char a120,a2=hello;strcpy(a1,a2);或char a120;strcpy(a1, hello);二者作用是相同的。3)复制时连同“字符数组2”后面的0一起复制到“字符数组1”中。(4)strcat(字符数组1,字符数组2)该函数表示连接两个字符数组中的字符串,把字符数组2连接到字符数组1的后面,结果放在字符数组1中,函数调用后得到一个函数值字符数组1的地址。说明:1)字符数组1的长度必须足够大,以便容纳连接后的字符串。2)连接前两个字符数组的末尾都有一个0,连接时将字符数组1后面的0被去掉,只把字符数组2(连同它的0)一起复制过来。例如,char a1=hello;char a2=world;printf(%s,strcat(a1,a2);连接后a1中的值为:heLlo_world0输出结果为:hello world(5)strcmp(字符数组1,字符数组2)该函数表示比较两个字符串,比较时按AscII码值从左向右逐个比较,直到出现不同字符或遇到0为止。比较的结果由函数值带回。1)如果字符串1字符串2,返回函数值为0。2)如果字符串1字符串2,返回函数值为正数,其值是ASCII码的差值。3)如果字符串1字符串2,返回函数值为负数,其值也是ASCII码的差值。(6)strlen(字符数组)该函数表示检测字符串长度,函数返回字符串中原有字符的个数,不包括0。例如,char str20= hello;printf(%d,strlen(str);输出结果为:55字符数组应用举例例7.5 编程实现将两个字符串连接起来,不要用strcat函数。基本思路(1)将字符串数组b中的内容追加到字符串数组a的后面,首先找到数组a的首个空字符的位置,还应该考虑到字符数组a的空间还能够容纳下字符数组b的内容(2)将字符数组b的每个字符拷贝到字符数组a的当前位置(3)如果字符数组b还没有扫描到首个空字符,则继续拷贝字符,直到遇到了空字符,整个拷贝过程结束 (4)输出字符数组a中内容,程序结束程序见教程P103例7.6 从键盘输入3个字符串,并输出其中最大者。基本思路(1)定义一个3行80列的字符数组a,以及一个一维的80 列的数组b,前者用于接收键盘输入,后者
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 组织小朋友卖花活动方案
- 餐饮业2025年食品安全监管与食品安全监管能力提升策略研究报告
- 石竹徒步活动方案
- 线下圈层活动方案
- 美甲店开业揽客活动方案
- 端州区妇联助学活动方案
- 策划大屏幕活动方案
- 社群抽奖活动方案
- 餐饮业2025年环保认证与品牌形象塑造分析报告
- 礼仪着装培训活动方案
- 成人高考专升本医学综合考试真题及答案
- 可复制的领导力心得
- 《小猪变形记》一年级
- 抗菌药物临床应用指导原则
- MirrorView切换手册模板
- 急救车必备药品和物品 急救车物品药品管理
- GB/T 3253.8-2009锑及三氧化二锑化学分析方法三氧化二锑量的测定碘量法
- GB/T 24720-2009交通锥
- GB/T 15065-2009电线电缆用黑色聚乙烯塑料
- 陈嘉庚生平介绍(中文+英文版)
- DB21T 3354-2020 辽宁省绿色建筑设计标准
评论
0/150
提交评论