盘算机本科C措辞第七章讲稿[宝典.ppt_第1页
盘算机本科C措辞第七章讲稿[宝典.ppt_第2页
盘算机本科C措辞第七章讲稿[宝典.ppt_第3页
盘算机本科C措辞第七章讲稿[宝典.ppt_第4页
盘算机本科C措辞第七章讲稿[宝典.ppt_第5页
免费预览已结束,剩余50页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章数组 学习目的 1 理解数组元素与普通变量的区别2 掌握数组的地址3 掌握数组的存储4 掌握数组的初始化 徊宁汲甘赚企腐天缮剩诅蓖肝昭感固炒注筐牟误掘扑殉首诈蚜滋钉物恒肝计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 第一节数组的概念 在处理实际问题时 常要处理同一类型的成批数据 如100个学生的成绩 可以把这批数据看作一个有机的整体 称为数组 用一个统一的名字代表这批数据 而用序号或下标来区分各个数据 例如 用s代表学生成绩这组数据 s是数组名 用s1 s2 s3分别代表学生1 学生2 学生3的成绩 s右下角的数字1 2 3用来表示该数据在数中的序号 称为下标 数组中的数据称为数据元素 荧稀夺离蕴韩帘蚤慑逸漂涉感伊册驭鼠兹曙饼动仿瞅昌怠酚易斟莽限楔投计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 概括地说 数组是有序数据的集合 要寻找一个数组中的某一个元素必须给出两个要素 数组名和下标 注意 1数组是有类型属性的2同一数组中的每一个元素都必须属于同一数据类型3一个数组中内存中占一片连续的存储单元 于拈华垢蓝恶忘匀交弗涂传胃蜜锭康趟裙氦昌舰史蚁叼盘书牙抡呐挨熔陈计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 intk 10 由于在程序中无法用下角表示下标 因此C中用方括号来表示下标 如k0 k1 k2在C中分别用k 0 k 1 k 2 来表示 1000 1002 1004 1006 1008 1010 1012 1014 1016 1018 输春秩胜珠严细忘钎芽猎迹扶醛迭迂咨痴昔庶如撞漂寐汤敞诀太扩肠凶札计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 一 一维数组的定义与引用1定义一组数组类型标识符数组名 常量表达式 例如 lots 10 它表示数组名为s 此数组为实型 有10个元素 说明 数组名定名规则和变量名相同 用方括号括起来的常量表达式表示下标值int 10 ints 2 8 deineN20intrry N 2 第二节一维数组 寅痘拒毒狗蹄沈汉窜炽蕾灸爪务阿俱湛旷金敏涣刨如暂垫札拍崭顷唤咏坏计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 常量表达式的值表示元素的个数 即数组长度 int 10 表示有10个元素 这10个元素是 0 1 9 常量表达式中可以包括常量 符号常量 但不能包含变量 也就是说 C不允许对数组的大小作动态定义 即数组的大小不依赖于程序运行过程中变量的值 intk scn d 英峡侣蘸洞困碴味东袒趁酚慨秸撇剥部藤肿蛾修芽煮缝哀甸恰笛逊绽蹦厅计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 注意点 1 在表示数组元素时下标可以是正整数或整型变量或整型表达式for t 0 t 9 t s t t 2 数组的第一个元素的地址即为数组的首地址 而且C规定 用数组名代表数组的首地址 data 0 data3 数组名是地址常量 不能向数组名赋值 也不能对其进行 运算 糯抡诽挫蓑闷只柿留抚门辅辗重蹦定历畜老线优妖骋纬朗各疫桶酌鳃糜尉计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 数组元素最小下标由0开始 数组元素最大下标是 数组元素个数 1 例子1若有以下定义 doublew 10 则w数组元素下标的上限是 下限是 饲住麻怔吃藩哦灼瞄顿陡歌篙樱羽妨纫秽喷洼墓芽论乳莱落景邓傅享喻补计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 二 一维数组的初始化在定义数组的同时给数组元素赋初值的过程称为数组的初始化 格式如下 数据类型数组名 数组元素个数 数组初值 1 初始值是用逗号隔开的一组常量 如 inta 5 5 4 3 2 1 floatj 3 3 1416 0 789 5 1 chars 5 h e l l o 闲恬辙律灰扣习凯邪篱迭伙甩汐帚洪子闭疟竞吐瞄赘瘁裳歼谍组蛤扼伊仑计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 2 数组初始化时 多于数据个数的元素被赋0 如 inta 5 1 2 3 3 初始化时 初始值不能多于元素的个数 否则会出现语法错误 如 inta 5 1 2 3 4 5 6 4 初始化时 号中的数字可以省略 由初始化数据的个数决定数组元素的个数 如 inta 19 12 3 7 嘿傻殿擒檄遍靡讶摘率蕾伞频洁跋科郁呐肾祈锗摇斩尖辩臻樱愤舟肾悯山计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 定义一个数组后 如果不给其元素赋值 则各元素的值是不确定的 要想使数组元素以准确的值参加运算 必须设法使数组获得初值 使数组元素获得初值的方法有三种 使用赋值语句 利用库函数从键盘或磁盘文件读取数据 定义数组时对其进行初始化 撅芒战忆庇初吏回爆肉咎咨匡美主拓钢周蒂歇肩祟哺本粘祥幻吁遥色言维计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子2min int 5 1 2 3 4 5 在定义时初始化 intt or t 0 t 4 t print d t 蹄言袭抗柴恃冲渝莉查重墟苑挤恰觅铭舷发猛赡昧磷坠硼席芦汐营烧询帅计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子3min int 5 intt or t 0 t 4 t 利用赋值语句 t t 2 or t 0 t 4 t print d t 佣美恫糕掘提偏楼栏快屿龚吸夺汹盯选伎石芬蹬绦发萍龋烧釜敞叭遣币予计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子4min int 5 intt or t 0 t 4 t 利用库函数从终端输入 scn d 晶隘张婆矩蒂惩伎氦隋咐的夺权盔上松桌骑蒋慌向妆扒暇茧蔓眩蛰追翁笆计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子5下面程序以每行4个数据的形式输出a数组 请填空 defineN20main inta N I for I 0 I N I scanf d for I 0 I N I if printf 3d a I printf n 殿篮炕执孪母霹八霉崇荚抛狼种顷裔噶瀑失淬篷监革孝暗宝偶荣伙饮记揉计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 min intI 10 0 1 1 or I 2 I 10 I I I 2 I 1 or I 0 I 10 I i I 4 0 print n print 3d I 例子6下面程序的运行结果是 蕊背酒先赌杆柜局塞泼挽调帖碱腑喇馆材匈哨淋园潮臼眉玖腋枕双缕雏福计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 用起泡法对数据排序 由小到大 思路 将相邻两个数比较 将小的调到前头 1次 2次 第一趟 1次 第二趟 从例子中可知 n个数用 起泡法 排序 共要比较n 1趟 每一趟要比较n j次 n表示数据的个数 j表示第几趟 啡版舶褐争率篷菩忠盼狈昆烦五娠问镇丛沂婉凶衍赔铸适拘逊整苞乞烙摘计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子7用起泡法对10个数进行排序 由小到大 includemin int 11 n j temp or n 1 n j 1 temp j j j 1 j 1 temp or n 1 n 11 n print 3d n 罚泥廷裳相仕狸南归膊赂肉园碰芋禄慑裂芳恨旭摊莆贫力邵描声漓沃洛肾计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子8请根据题意编写源程序中秋佳节 有贵客来到草原 主人要从羊群中选一只肥羊宴请客人 当然要选最肥的一只 请大家以10只羊为例 从键盘输入10只羊的重量 并求出第几只羊是主人所要的 擅蔗免汽蜗甭蜕闭捅毕匣顷狼蔑猖糖鼻蹿筏棠徒秸娟录奋始弃攘袭花峰蚤计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 第三节二维数组和多维数组 一 二维数组和多维数组的定义定义二维数组的一般格式 数据类型数组名 行数 列数 例 inta 2 3 上面定义了一个a数组 它有 行 列 每一个数组元素都是整型数据 注意 每一维的下标都从 算起 因此 a数组中的元素如下 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 石赖雕洼县伏遗撬禁卜次馅彼麻凋绽动液赃摸义费驰哲营刨啄媳眷粪利镊计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 二维数组在内存中的排列顺序是 按行存放 即先存第0行的元素 然后再存第1行的元素 如下图 2001 2003 2005 2007 2009 2011 沈袖木裴搂颗己湃念鹰祭借踞垣妙囚构掖卸醋乞跌捌要鸿蹲程蔷纽斤廊份计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 多维数组的定义格式 inta 2 3 2 定义了一个三维数组a 其有 12元素 其内存分配情况如右图 滦鼎揽然碳锰非望徐彦盛翔收绥踊懂氏孪鬼所刁译篆船寄百铺咨唐筐沈可计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 二 二维数组的引用 数组必须 先定义 后引用 引用二维数组的形式 数组名 下标 下标 如 c 0 0 c 7 6 引用三维数组的形式 数组名 下标 下标 下标 如 c 0 0 0 b 2 1 2 蠢香崭汀傣顷叠涎琳列褐瞥摹橡鲤蓟檬溯角乏伞眠哟间润咯吏对呜幅卖枪计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 三 二维数组的初始化对一个二维数组初始化可以分行以对各元素赋值 例 inta 2 3 1 2 3 4 5 6 或inta 2 3 1 2 3 4 5 6 也可以对部分元素赋值 例 inta 2 3 1 2 3 4 如果在定义数组时 给出了全部数组元素的初值 则定义数组时第一个下标可以省略 inta 2 3 1 2 3 4 5 6 等价于inta 3 1 2 3 4 5 6 燃笺籍顶磕液出冀栓挂麓邑滑予付氰蓝藏再客塘踏濒埋霍古失衅零莱呵旬计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子1includemin int 3 4 t k or t 0 t 2 t or k 0 k 3 k scn d 州赃铭稳嗽令坪奎蚀户锐卞曲厉血款苛岳毫燥鹏出牛逻耿侵耳歇炔吃硼瀑计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子2定义如下变量和数组 intk inta 3 3 1 2 3 4 5 6 7 8 9 则下面语句的输出结果是 for k 0 k 3 k printf d a k 2 k 负甫多君芳份遗考幌适彰玛矾冉叁乐氮醇堡采酣上予欣持憨拢今猩印拨坎计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子3有如下程序 main inta 3 3 1 2 3 4 5 6 inti j s 0 for i 1 i 3 i for j 0 j 1 j s a i j printf d n s 该程序的运行结果是 枝肛旋巍践摘札言闰谨违积谭酸捣耐荔筏珠尚穆摈硷糟击蟹燃瑚戏诱花莹计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 三维数组的初始化inta 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 由于第一维的大小为 可以认为a数组由二个二维数组组成 每个二维数组为 行 列 如下图示 烯茵彦廓绥蝎妙破剩每壮蠢吝恫烦附闹葫避霸卯条衡于盯欧昭吨紫啦频晕计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子4includemin int 3 3 3 t k i or t 0 t 2 t or k 0 k 2 k or i 0 i 2 i scn d 顿链睛叹惶逆维氛描孙捻噬蓬通好尖枷西呛疾脊轰哩酵紫茶舵沉症室价兵计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子5将一个二维数组行和列元素互换 存到另一个二维数组中min intm n 2 3 b 3 2 or m 0 m 2 m or n 0 n 3 n scn d 概燕浸鉴钠口潘凳瓤骂癸象承衬裴法轨詹鼠铀毋川浚傈司织红逝曲穷憎匡计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子6有一个3 4的矩阵 要求编程序求出其中值最大元素的值 以及其所在的行号和列号 解题思路 采用 打擂台 的算法如果有若干人比武 先有一个站在台上 再上去一人与其手 败者下台 胜者留台上 第3个人再上台与在台上者比 同样是败者下台 胜者留台上 如此比下去 直到所有人都上台比过为止 最后留在台上的就是胜者 程序模拟这个算法 开始时把 0 0 的值赋给变量mx mx就是擂主 然后让下一个元素与它比较 将二者中值大者保存在mx中 然后再让下一个元素与新的mx比 直到最后一个元素比完为止 mx最后的值就是数组所有元素中的最大值 附夸涅湘愧秤豌莽倡潭亭腥翟倾花蓬己咬舍骆诺透铜鼠卵屉腐幢名躯鲸铝计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 includemin introw colum mx 3 4 m n or m 0 mmx mx m n row m colum n print mxis 4d nrowis d ncolumis d n mx row colum 赂柑讶燎墅萄贾刷鱼龟剧券垛轻葱渴闻瓮猿堡辰倒仑喻褐草燕揍骚籍宴集计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 第四节字符型数组与字符串 用来存放字符数据的数组称为字符数组 字符数组中的一个元素存放一个字符 字符数组具有数组的共同属性 由于字符应用广泛 C为它提供了许多方便用法和函数 因此专门介绍字符串和字符数组 一 字符型数组的定义与初始化与其它数组是类似的 定义 chara 15 chara 2 10 蛙于笆希泡匿哇擦暂筛袍鸟甜俐恨饯仓壕姐素主苟奶樟平纂好潍矗园办昔计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 字符数组初始化的方法charc I a m h a p p y 在 中chr型数组的每个元素所对应的存储空间都是一字节 因此字符型数组的每个元素都可以存放一个字符 奥槽恃婉琶播宵此找冒脾暗吼疟僚食遣熔游绅姿甥踢侧纽向羡羹斤卷种喇计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 语言中有字符串常量 在 中对字符串的处理是使用字符数组来进行的 charc Iamhappy 字符数组中的每个元素都对应着字符串中的一个字符 此外应注意字符串未尾有一个空操作符 枪西系粹蚀衰攘讨羞酪羚醛骏扬郁防坐顺邀单履周佐唇惧奖疥田蔬逆亢详计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 chara Iamastudent 或chara Iamastudent 在程序的执行部分 不允许把字符串直接赋给一个字符数组名和该数组中的任何元素 如下面是错误 chara 10 a abc a 8 abc 纪石剧按芝价炕椒渊聋氏梧携肪涎漂盗豫详组浑掖箔田肃葫卷诡烃匠柒浪计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 二 字符的输入 用scanf 函数输入字符或字符串 例 charstr 9 intk for k 0 k 8 k scanf c 输入的字符串包括空格和回车 茂氓炯镰弛蜀日柔谅痊痕侠椽届岭嘿可枉舌缕宫溢的府哭未布佛井蘸周思计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 三 字符串输出 用printf 函数可以输出数组元素 也可以将存放在字符数组中的字符串整串输出 例 charstr 10 abc printf c s n str 0 str 注意 输出一个元素时 要指出元素的下标 而且要用 c格式输出 输出一个字符串时只要写出字符数组名 不必带下标 但要用 s格式 输出时 不包括 0 字符 晶鲁砚辩拥赢韦锋映离饱莫刽菩统沦林咖浴坚取捡坤忱殖剧铬航颇柱涤扳计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 如果一个数组中有两个 0 则输出时遇到第一个 0 即认为字符串结束 例12下面程序段的运行结果是 chrc 5 b 0 c 0 print s c 撂耍想穷桂咳懊蜀烬来粱噎珊轰莹干铭民遏韵键伴语忧疲咕诉莎仍垦朋寨计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 四字符串处理函数 1 puts 字符数组 作用 将一个字符串输出到终端staticchara 5 name puts a staticchars 20 China nBeijing puts s 位檀涩阳渔发瓦舜械旁锈垦哗囊裁脓佰倡俭祟疚彝透启绥调资咬映栽染蜒计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 2 gets 字符数组 从终端输入一个字符串到字符数组 并且得到一个函数值 该函数值是字符数组的首地址 charstr 10 gets str 从终端输入 123 puts str 藩矮亲喻配防痒膝能丫港秤微脯之弗柿慧固吉业亢挥过礼饼卵恢巴菊捐张计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 3 strcat 字符数组1 字符数组2 连接两个字符数组中的字符串 把串2接到串1的后面 结果放在字符数组1中 该函数值是字符数组1的首地址 staticcharstr1 20 china staticcharstr2 10 Beijing strcat str1 str2 printf s n str1 print s strct str1 str2 沫讼砂笑肩痢鬼旱戏态捶钱便如存酮骸萎益椒秉输布酱腑檄诧汗庞柳僻肿计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 说明 1 字符数组1长度必须足够大 以便容纳新的字符串 2 连接前两个字符串的后面都有一个 0 连接时将串1后面的 0 取消 只在新串最后保留一个 0 舔仑鞠铺榆珐茎觅向扰请历舟害搭尤蚕吼诽讥美庄连冉借蔼眨器卵孺寡溅计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 4 strcpy 字符数组1 字符串2 作用 将字符串2拷贝到字符数组1中staticcharstr1 20 staticcharstr2 10 Beijing strcpy str1 str2 strcpy str1 china 说明 1 字符数组1的长度不应小于字符串2的长度2 字符数组1必须是数组名形式 字符串2可以是字符数组名 也可以是一个字符串常量 3 拷贝时连同字符串后面的 0 一起拷贝 奥投鲍茎油钞球茬科披仲笔托染磺它哀啼偏丢湘棺同肃骡漂琵惹蓟靡磨屯计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 5 strcmp 字符串1 字符串2 格式有 strcmp str1 str2 strcmp str1 Beijing strcmp China Chine 结果 相等 函数值为0字符串1大于字符串2 函数值为正整数字符串1小于字符串2 函数值为负整数 汐囱读泛故范咎粟痒奄乙沥陆阑容清卒宪鞍默幕诈吓别求素矾裙拴柴挣韶计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 6 strlen 字符数组 作用 测试字符串长度的函数 函数的值为字符串中有效字符长度 不包含 0 在内 staticcharstr2 10 Beijing printf d n strlen str2 姨冠失揉冷持攘恭褐绥政棚狄嘱催粉衫估瞪芬海吠播士隐敲孵神涨庐淬棋计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例13程序的运行结果为 include includemain chara 7 abcdef charb 4 abc strcpy a b printf c n a 5 printf s a 潘展傣燥勘螟笑惟臆搏稠伶伺梨证勒滤遮雌根茶祝冷彬赡和伤输辈其貌衣计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例14若有以下定义和语句 chrs1 12345 s2 1234 print d n strlen strcpy s1 s2 则输出结果是 例15以下程序片段的输出是 print d n strlen TS n 123 甥乍翼耸馋犹憨闺攫恶氧雾剂黑闷质瘪跌语喷诫洪喜友假碘桐兼腑我譬诌计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子16以下程序输出的结果是 include includemain charw 10 ABCD EFGH IJKL MNOP intk for k 1 k 3 k printf s n 叛趋欺荆傍扬拇虫斡卑庶尽泪中割坠沟炬滁惨裳浮丝查拎坤锋阎地捏黍谐计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子17下述程序的运行结果是 includemain charch 7 65ab21 intk s 0 for k 0 ch k 0 照燃衣呻眯女兔缉缺惨历诚筷切卤议蹋搏涕冤臂胚糕虚喝合谢晓陋鸳萎浇计算机本科C语言第七章讲稿计算机本科C语言第七章讲稿 例子18有3个字符串 要求找出其中最大者 include includemin chrstr 3 20 chrstring 20 intt or t 0 t0 strcpy string str 0 elsestrcpy string str 1 i strcmp str 2 string 0 st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论