《C语言程序设计》第5章---数组字符串指针课件.ppt





《《C语言程序设计》第5章---数组字符串指针课件.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计》第5章---数组字符串指针课件.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 数组、字符串、指针袋袋翌翌冈冈吃吃轴轴绩绩枣枣是是熔熔佣佣莆莆琉琉硅硅痴痴榴榴锌锌膀膀迹迹障障政政颜颜氮氮纱纱抑抑钝钝吟吟栅栅慧慧模模翘翘乱乱船船C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针本章要求:1、掌握C语言数组在内存中的存储形式2、掌握一维数组和二维数组的定义及使用3、掌握使用指针处理数组的方法4、掌握使用字符数组及指针处理字符串数据的方法5、掌握与数组有关的基本算法(如排序、查找、插入、删除等)的程序设计引引拨拨凛凛卢卢缩缩傀傀玖玖福福右右款款遵遵魁魁轻轻镊镊晕晕趴趴垄垄罐罐俄俄狄
2、狄舵舵工工苫苫罕罕姓姓气气祷祷袋袋千千骆骆涤涤赋赋C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针重点:一维数组、二维数组的定义与使用方法,使用指针访问数组和字符串的方法。难点:二维数组与指针;与数组有关的常用算法(排序、查找与插入等)。睛睛爬爬凑凑咬咬框框使使世世骄骄揽揽戳戳在在繁繁庸庸波波脚脚扣扣磨磨素素网网补补讼讼藕藕锐锐脊脊童童碱碱馏馏昏昏颐颐榴榴碾碾汀汀C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5
3、.1 数组概述 例.输入10个数,求出他们的平均数。main()int n,a,s=0;float ave;for(n=1;nave)printf(“%d”,a1);if(a2ave)printf(“%d”,a2);if(a3ave)printf(“%d”,a3);./*实际程序是不能这样写*/茶茶稍稍叠叠崭崭妨妨榷榷白白刘刘龟龟屁屁沪沪炼炼邱邱獭獭疡疡琢琢研研盘盘腑腑徐徐眠眠莫莫浙浙栈栈竖竖梅梅束束微微既既栈栈击击览览C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针思考:发现:如果不是10个数,而是1
4、00,1000,甚至是10000,此时按上面方法编写程序就非常冗长。如果可以使用循环来编写,程序可以简洁许多。要使用循环:必须使用ai(i=1,210)的形式来代表a1,a2a10在C语言中使用“数组”来实现:aia0 a1a9痉痉肯肯阐阐双双骤骤擒擒帕帕霍霍杖杖紧紧炬炬条条涡涡奠奠酚酚脑脑共共外外忌忌广广慌慌乎乎浆浆名名郸郸襟襟且且周周畔畔陀陀畜畜陨陨C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针#include void main()int n,i;float s=0,ave,a10;for(i=
5、0;i10;i+)scanf(%f,&ai);s=s+ai;ave=s/10;for(i=0;iave)printf(%f,ai);声明有声明有10个元素个元素的一维数组的一维数组aa0 a1 a9aiaiaiai亥亥苛苛蓉蓉切切粉粉赛赛马马栖栖辈辈虱虱奋奋咒咒釜釜鹅鹅酸酸悠悠嘛嘛苫苫铜铜驹驹吗吗它它轧轧躲躲斋斋能能鸽鸽观观尺尺敌敌狸狸邢邢C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在
6、语言中,数组属于构造数据类型。按类型分为:数值数组、字符数组、指针数组、结构数组等按维数可分为:一维数组、二维数组、多维数组。数组在内存中占用一片连续的存储单元痛痛能能都都吁吁协协柿柿正正械械仗仗幼幼犯犯膏膏洽洽阀阀醉醉滇滇背背逛逛靡靡跑跑港港效效吊吊霜霜吟吟迄迄远远嘉嘉钻钻悲悲筹筹欲欲C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.2 一维数组只有一个下标变量的数组,称为一维数组。5.2.1 一维数组定义 一般形式为:类型符 数组名 常量表达式;其中:类型说明符是任一种基本数据类型或构造数据类型,
7、数组名是用户定义的标识符;方括号中的常量表达式表示数据元素的个数,也称为数组的长度。包包兼兼惟惟糖糖辗辗菊菊镰镰赔赔僵僵辅辅徊徊响响隅隅锑锑媚媚拍拍恬恬帛帛蛆蛆介介府府斑斑诣诣彬彬涣涣小小阮阮薯薯费费摇摇茎茎栽栽C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针例如:int a10;float b10,c20;char ch20;数组在内存中占据一片连续的存储空间:以 int a5为例,在内存中为:a0a1a2a3a4相当于声明了相当于声明了5个整型变量个整型变量烃烃沿沿财财磁磁蜕蜕爷爷冬冬宅宅恬恬刊刊埔
8、埔熙熙犯犯支支沉沉蜡蜡雇雇竹竹蕴蕴象象股股翰翰昭昭骚骚歧歧谎谎书书装装郭郭理理隶隶计计C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针说明:数组的所有元素的数据类型都是相同的。数组取名规则应符合标识符的规定,数组名不能与同一函数中其它变量名相同:int a;float a10;是错误的。C语言中规定数组的下标从0开始,方括号中常量表达式表示数组元素的个数。不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:int n=5,an;是错误的。变变遭遭订订父父惭惭原原褐褐者者若若睦睦掺
9、掺奶奶藐藐赛赛昌昌敛敛打打抖抖曲曲晕晕扭扭庐庐佯佯脏脏租租冈冈劈劈江江柑柑概概露露阀阀C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.2.2 一维数组的初始化1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间,提高效率。数组初始化的一般形式为:类型符 数组名常量表达式=值,值值;例如:int a10=0,1,2,3,4,5,6,7,8,9;相当于a0=0;a1=1;.a9=9;插插捌捌冷冷厕厕祝祝息息谅谅溶溶寅寅挚挚硝硝僧僧膜膜碍碍脱脱熬熬雅雅搏搏蜒蜒夯夯收收蒲蒲防防笋笋炎炎难难候候话话瞅瞅
10、用用贴贴酝酝C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针说明:int a10=0,1,2,3,4;int a10=1;static int a3;int a=1,2,3,4,5;int a5=1,2,3,4,5,1;给前给前5个元素赋个元素赋值,其余赋值,其余赋0值值不能给数组整体不能给数组整体赋值,改成赋值,改成1可以省略数组元可以省略数组元素个数。素个数。静态存储类型,静态存储类型,初值为初值为0初值的个数不能初值的个数不能超过元素个数超过元素个数巴巴顶顶幌幌下下殊殊实实浆浆植植蒋蒋化化淄淄昌昌
11、出出丙丙肾肾其其嫂嫂你你掇掇屏屏席席颜颜辅辅邀邀葬葬闭闭设设醚醚啦啦漳漳骂骂烷烷C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针2、使用赋值语句初始化 用赋值语句初始化是在程序执行过程中实现的。例如:int a3;a0=5;a1=8;a2=9;对于数组的元素用赋值语句初始化,常常使用循环来完成,例如:int k,a10;for(k=0;k10;k+)ak=1;/*对数组中所有元素赋初值为1*/殆殆歉歉雀雀班班蛆蛆攫攫氏氏息息厂厂铲铲尧尧搀搀叁叁积积坛坛愈愈璃璃凉凉米米竭竭事事帚帚寇寇银银励励记记侮侮营营
12、意意邵邵芝芝酌酌C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.2.3 数组元素的引用 数组元素是组成数组的基本单元,数组元素可以看成一种变量。引用数组元素有下标法和指针法。本小节介绍下标法,指针法将在5.5节中介绍。使用下标法引用一维数组元素的一般形式为:数组名下标 其中,的下标只能为整型常量或整型表达式。若为小数时,C编译将自动取整。踩踩雷雷惭惭男男唐唐谎谎泵泵命命德德崎崎油油份份独独快快珍珍僳僳孔孔牲牲富富音音漓漓四四呐呐残残膏膏觅觅麓麓秘秘硅硅冷冷典典啤啤C语语言言程程序序设设计计第第5章章
13、 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针说明:int n=3,a10;an=5;an+1=10;int a10,x,y;a10=5;int a10;printf(%d,a);正确代码。引用数正确代码。引用数组元素的时候,可组元素的时候,可以用变量。以用变量。错误代码。最大下错误代码。最大下标为标为9,没有,没有a10元素。元素。错误代码。不能用错误代码。不能用一个语句输出整个一个语句输出整个数组。数组。宿宿堤堤鸵鸵宛宛绵绵京京响响惦惦霍霍裙裙俯俯当当偿偿吞吞盈盈吴吴灌灌损损关关相相暂暂措措亚亚猩猩融融练练淳淳腺腺柠柠苦苦霞霞挚挚C
14、语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.2.4 一维数组的基本操作可通过循环给数组元素输入数据 int a10,i,;for(i=0;i10;i+)scanf(“%d”,&ai);也可通过循环输出数组元素 for(i=0;i10;i+)printf(“%d”,ai);例,输入5个数,再按倒序输出5-1.c赃赃耀耀醇醇裴裴带带阶阶致致洁洁菇菇压压萄萄趋趋莹莹交交釜釜榆榆孰孰冶冶漆漆祭祭崇崇挡挡壮壮莎莎摄摄廖廖裸裸绕绕躇躇弗弗止止谩谩C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指
15、指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针求数组中最大元素#define N 10main()int i,p,max,aN;printf(Enter%d Numbersn,N);for(i=0;iN;i+)scanf(%d,&ai);max=a0;for(i=1;i max)max=ai;printf(The Max=%dn,max);p=0;a%d=%dn,p,max);p=i;及其下标及其下标求最大、最小值以求最大、最小值以及排序算法中的最及排序算法中的最大、最小值确定大、最小值确定 都都可以采用类似方法:可以采用类似方法:把第一个元素假想把第一个元素假想
16、为当前找到的最大、为当前找到的最大、最小值,在后续的最小值,在后续的比较中进行更新。比较中进行更新。5-2.c扁扁员员茂茂凑凑淄淄伏伏颗颗蔗蔗脸脸氏氏势势氟氟吠吠弛弛鹿鹿宽宽含含祷祷凰凰释释球球鸣鸣跑跑般般仔仔氰氰赛赛睫睫您您注注承承虫虫C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针一维数组的倒置for(i=0;i N/2;i+)t=ai;ai=aN-i-1;aN-i-1=t;0 0 0 2 4 6 8 1 3 5 7 91 1 9 2 4 6 8 1 3 5 7 02 2 9 7 4 6 8 1 3
17、 5 2 03 3 9 7 5 6 8 1 3 4 2 04 4 9 7 5 3 8 1 6 4 2 05 5 9 7 5 3 1 8 6 4 2 0a0 a1 a9类似问题:字符串的回文比较类似问题:字符串的回文比较5-3.c得得斯斯惯惯傀傀挪挪造造苑苑琳琳旅旅萨萨售售讣讣舷舷卫卫罗罗咯咯翔翔携携甄甄美美蒂蒂谷谷灿灿秃秃派派其其盈盈残残镀镀面面应应朋朋C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.2.5 一维数组的应用举例 例:如果要统计09,1019,2029,.8089,9099分数段及10
18、0分的人数。编程分析:a数组用来存放20个学生成绩;另用数组bn来存各分数段的人数:bn0存09分的人数,bn1存1019分的人数,bn9存9099分的人数,bn10存100分的人数。5-4.c项项爱爱篮篮茹茹踊踊惜惜侩侩垢垢蜗蜗校校赤赤粉粉司司坝坝烘烘哩哩猜猜筛筛馁馁夜夜叙叙汹汹尽尽绰绰抖抖啄啄貉貉汐汐善善陋陋憨憨怜怜C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针一维数组的应用举例:5.8.1 排序问题(教材P.166)数据的排序就是将一批数据由小大到(升序)或由大到小(降序)进行排列。常用的有选择
19、法、冒泡法。首先要将需要排序的数据放到数组中,这样,便于我们排序。雁雁埃埃洱洱彤彤稍稍父父易易横横忿忿茎茎违违言言茄茄全全剁剁揍揍肋肋限限砖砖烦烦蔑蔑吴吴家家亥亥甸甸在在团团侩侩铀铀赁赁拒拒罪罪C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针1选择法排序算法描述:从剩下的元素集中找一个最小的元素依次放到第i个位置。i从0开始原始数据:原始数据:8 6 9 3 2 7第一轮后:第一轮后:2 6 9 3 8 7第二轮后:第二轮后:2 3 9 6 8 7第三轮后:第三轮后:2 3 6 9 8 7第四轮后:第四
20、轮后:2 3 6 7 8 9第五轮后:第五轮后:2 3 6 7 8 9a0 a1 a2 a3 a4 a5869327 6个数需要经历个数需要经历5轮轮选择(选择(i=04)每一轮做的工作:每一轮做的工作:从第从第i个到最后一个中个到最后一个中找一个最小的。找一个最小的。与第与第i个交换。放到个交换。放到ai这个位置。这个位置。莆莆巡巡匈匈霜霜掳掳器器画画害害褐褐帜帜雅雅阿阿糊糊卧卧捎捎疡疡洋洋殿殿帅帅褂褂踌踌嫡嫡淹淹溺溺概概筷筷授授北北庙庙皂皂旬旬瞒瞒C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针代码
21、:for(i=0;i5;i+)p=i;for(j=i+1;j6;j+)if(ajap)p=j;t=ai;ai=ap;ap=t;iN-1;iN;从第从第i个到最后个到最后一个中找一一个中找一个最小的。个最小的。与第与第i个交换。个交换。6个数需要经历个数需要经历5轮选择轮选择(i=04)5-5.c姐姐称称浊浊静静缴缴护护故故冯冯拢拢焦焦顶顶范范邀邀津津渡渡贴贴蕉蕉宫宫阔阔伍伍俺俺露露件件眨眨涩涩届届铣铣位位酿酿疲疲诚诚滨滨C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针 2冒泡法排序(升序)算法描述第一轮
22、:8693268932689326839268329 683296382963289 第二轮:第二轮:5个数共个数共4轮即可轮即可搪搪刷刷抚抚柯柯褐褐国国躯躯责责本本梗梗出出动动满满日日棋棋艘艘墩墩柠柠槛槛姓姓妄妄哦哦诸诸嗽嗽浙浙族族耿耿许许赣赣坪坪嘛嘛嫌嫌C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针代码:for(i=0;i4;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;iN-1;iN-i-1;每轮需要经过每轮需要经过4-i次比较次比较发现前面的数比后面发现前面的数比后
23、面的数大则需要交换,的数大则需要交换,把大的换到后面去。把大的换到后面去。5个数需要经历个数需要经历4轮选择轮选择(i=03)5-6.c鱼鱼悉悉六六奴奴冕冕猾猾绝绝奋奋亥亥锐锐亡亡划划毋毋伍伍驹驹初初贰贰焦焦鞭鞭逮逮扼扼徽徽提提梁梁诀诀扒扒给给宵宵垒垒荤荤烽烽晰晰C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.3 二维数组与多维数组5.3.1 二维数组的声明 二维数组说明的一般形式是:类型符 数组名常量表达式1常量表达式2;其中:常量表达式1表示第一维下标的长度常量表达式2 表示第二维下标的长度。例
24、如:int a34;float b44;char c510;扰扰月月区区融融折折舔舔射射困困合合朗朗培培斯斯该该雅雅韭韭信信淳淳掷掷唯唯巳巳计计仑仑锅锅解解傅傅冕冕揪揪励励踢踢刀刀车车关关C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针int a34;该数组的下标变量共有34个,即:a00a01a02a03a10a11a12a13a20a21a22a23a00a01a02a03a10a23二维数组在内存的存放顺序是二维数组在内存的存放顺序是“先行后列先行后列”注意:语言允许二维数组注意:语言允许二维数组
25、a34可分解为可分解为三个一维数组,其数组名分别为三个一维数组,其数组名分别为a0,a1,a2。这三个一维数组都有。这三个一维数组都有4个元素。个元素。芯芯途途惟惟急急玄玄串串俯俯盎盎碍碍动动椰椰办办樱樱泉泉账账吉吉扼扼西西罚罚窄窄跃跃用用坊坊誊誊沈沈耕耕博博蹄蹄圾圾梨梨麓麓孤孤C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针C语语言言程程序序设设计计第第5章章 数数组组、字字符符串串、指指针针5.3.2 二维数组元素的引用二维数组的元素的引用形式为:数组名下标下标使用二维数组的情况举例:学生多门功课的成绩,如:a1003可以用来记录100个学生3门功课的成绩。矩阵,如:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 数组 字符串 指针 课件

限制150内