C语言程序设计第七章 利用数组处理数据.ppt

上传人:京东小超市 文档编号:6012529 上传时间:2020-08-21 格式:PPT 页数:62 大小:502.50KB
返回 下载 相关 举报
C语言程序设计第七章 利用数组处理数据.ppt_第1页
第1页 / 共62页
C语言程序设计第七章 利用数组处理数据.ppt_第2页
第2页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计第七章 利用数组处理数据.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第七章 利用数组处理数据.ppt(62页珍藏版)》请在三一文库上搜索。

1、C程序设计,主讲人:袁丽,燕大里仁基础教学部,咳窟主涟锭娶湍崖嗓皱涩畏峨始躁鹰衍处苔箩傀侠朝困祁诗凿止十谋函鼓C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,第七章:利用数组处理批量数据,字符数组,纷藩弘勺坪杰饺二控泰搓但损恐偶蓝推缎纸祥法泡究苑孜梧怜浩哩廊困被C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,引:,前几章使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。 对于有些数据,只用简单的数据类型是不够的,难以反映出数据的特点,也难以有效地进行处理。,如果有1000名学生,每个学生有一个成绩,需要求

2、这1000名学生的平均成绩。 用s1,s2,s3,s1000表示每个学生的成绩,能体现内在联系。 C语言用方括号中的数字表示下标,如用s15表示,数组名,椰御哼暴销裕瓜吐债牵逆县佃豺幽精惫细聋捉箩游苟耳溅霉芒潍郊行缺盖C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,数组是一组有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号 用一个数组名和下标惟一确定数组中的元素 数组中的每一个元素都属于同一个数据类型,齐坐滔渣逗骑呀决泉蓬荧桑泥辕段探峦运拱厚笛炒瞒孩挣友赡奶尔茫崎嗅C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理

3、数据,回顾:,前面使用的数据类型都属于基本类型:整型,实型,字符型。 其存储特点是:每个变量单独存储,亦称简单变量。 如:X=a;Y1=0;Y2=2*x;各变量之间独立存放,无任何联系。,在C语言中,还有另外一些复杂类型,合称为构造类型。 构造类型:是由基本类型构造而成的。如数组、结构体、共同体等,构造类型的每一个分量是一个变量,它可以是一个简单类型或 构造类型。,构造类型的分量占用相邻的存储空间。,聘灸况适燕四叭谱丽负浅施炙换硕幻糖纱启趣故墅谁伶旷冗朴衬呛砾扰污C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,数组概念的引入:,计算机处理数据时,经常出现数据是用某

4、种有序的形式进行组织 的情况。,例如:按学号排列的成绩表,这些数据具有共同的特征: 1.都是由若干个分量组成; 2.数据的诸分量都是同一类型(可取任何数据类型); 3.这些分量是按一定顺序排列的;,数组:按序排列的具有相同类型的变量的集合。,学习数组应该注意的问题:,数组的首地址,数组元素的类型和个数(数组长度),靠寿下毖徊碑赔款坝雨熔斜脊然绵鲤衰颇嘛证耀磕铭阴邑炸狞伴南灰顽壁C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,定义一维数组,一、定义和引用一维数组,引用一维数组,一维数组的初始化,一维数组程序举例,纬挛担景丘韵股四冷栗屠戒彪饮迫滑抽冉妹勿搁棉惨浓婿矗江

5、沂义吕镀劝C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,定义一维数组,一维数组是数组中最简单的 它的元素只需要用数组名加一个下标,就能惟一确定 要使用数组,必须在程序中先定义数组 定义一维数组的一般形式为: 类型符 数组名常量表达式; 其中: 类型符是任一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。,抨劳涯婴照墅厌市弘掇脊嚣影凌允祟犊椿揣故癌酬脉潜产裁果一姿七宅葱C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,例如: int a10; 说明整型数组a,有1

6、0个元素。 float b10,c20; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch20; 说明字符数组ch,有20个元素。,对于数组类型说明应注意以下几点: 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 数组名的书写规则应符合标识符的书写规定。 数组名不能与其它变量名相同。 例如: main( ) int a; float a10; 是错误的。,茵醒颇砍陪傻服摸苹他揪谴骂卉米孽肿咱穿轻企延捷逮自齿怜嫡嘿辩磋他C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,方括号中常量表达式表示数组元素的个

7、数,如a5表示数组a有 5个元素。但是其下标从0开始计算。因此5个元素分别为a0,a1,a2,a3,a4。 不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。 例如: #define FD 5 main( ) int a3+2,b7+FD; 是合法的。 但是下述说明方式是错误的。 main( ) int n=5; int an; ,峰官瞅游塔老氓翼袒慎抿马谅鞠瘪庆夫节老原粟质诬泊投邦搓驴荷跺呐令C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,允许在同一个类型说明中,说明多个数组和多个变量。 例如: int a,b,c,d,k110,k220;

8、,1.数组名命名规则和简单变量名相同; 2.数组名后只能用方括号括起来的常量(常量表达式和符号常量); 3.常量表达式的值确定数组元素的个数,定义即提供以下的信息:名,类型,维数,长度,从而分配空间。,蕾价坦蓝拘贵预岔划雾验似溃钧讲杉翻悲妓奶须纶咆赖苛谅绍拜憎膏运颖C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,一维数组的存储:,计算机中用连续的内存单元存放各个元素。 如:int a5;其内存存储为:,保存数组所需内存量与数组元素的基本类型和数组大小有关。,总字节数=sizeof(基本类型)*数组元素个数 如上例:= sizeof(int)*5,第i个元素的地址=

9、第1个元素的地址+i*sizeof(基本类型),御碎磅灭山祝绩异拳渠魏试蹬古诡坡院特虞肝邑炭甥斤睬碴阴鳞化邵瑟软C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,引用一维数组,数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的 顺序号。 数组元素的一般形式为: 数组名下标 其中下标只能为整型常量或整型表达式。 例如: a5 ai+j ai+ 都是合法的数组元素。,蛙搐竟喳冤蛋帕园睬碱伍芒血兼柏宴昨渠鸭渺锚议喂铲固贫想秉但犯毡挚C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,数组

10、元素通常也称为下标变量。必须先定义数组, 才能使用 下标变量。在语言中只能逐个地使用下标变量,而不能一次 引用整个数组。 例如,输出有10个元素的数组必须使用循环语句逐个输出各 下标变量: for(i=0; i10; i+) printf(%d,ai); 而不能用一个语句输出整个数组。 下面的写法是错误的: printf(%d,a);,耗奋西奸昭嫁凿贺蹦脑壁植屹益车铱队哪彩毒惦还缕踩屹怪是惠馈委藏输C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,例: 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。 解题思路: 定义一个长度为10

11、的数组,数组定义为整型 要赋的值是从0到9,可以用循环来赋值 用循环按下标从大到小输出这10个元素,#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; ,使a0a9的值为09,先输出a9,最后输出a0,省呐阁呢覆栏笺烫粕酉缀淑贵支盛赫醋峭余庚耻疚挨解唤溶瘫棠借悼运圆C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,一维数组的初始化,数组初始化赋值是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为: 类型说明符 数组名常量表达式=值,值值

12、; 其中在 中的各数据值即为各元素的初值,各值之间用逗号间隔。 例如: int a10= 0,1,2,3,4,5,6,7,8,9 ; 相当于a0=0;a1=1.a9=9;,震垫捶求铬缆园痛藕蚊磊淫业喘鹏耻瘫瓢载铅湾漓蚊卤傍宪苏暇撞郁词娇C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,语言对数组的初始化赋值还有以下几点规定: 1.可以只给部分元素赋初值。 当 中值的个数少于元素个数时,只 给前面部分元素赋值。 例如: int a10=0,1,2,3,4; 表示只给a0a45个元素赋值,而后5个元素自动赋0值。 2.只能给元素逐个赋值,不能给数组整体赋值。 例如给10

13、个元素全部赋1值,只能写为: int a10=1,1,1,1,1,1,1,1,1,1; 而不能写为: int a10=1; 3.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。 例如: int a5=1,2,3,4,5; 可写为: int a =1,2,3,4,5;,虚涉戎贱算舌伐断矽促词织慷枫蒜占开座体扑深拯摘跌捌当肩改邢脚控糊C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,一维数组程序举例,例:有10个地区的面积,要求对它们按由小到大的顺序排列。 解题思路: 排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小 把题目抽象为:“

14、对n个数按升序排序” 采用起泡法排序,瘟缉脖希窟只谬讣锤私畦周于兜勘菠汽纷肖茵泉修哮羽害划扎立窟诽罢沙C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,a0 a1 a2 a3 a4 a5,9 8 5 4 2 0,8 9 5 4 2 0,8 5 9 4 2 0,8 5 4 9 2 0,8 5 4 2 9 0,8 5 4 2 0 9,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,大数沉淀,小数起泡,萨逃陷莽筐颂志寅涂绽增帝挪腑亚薛沦别估曹频桅狐钵蟹歪染汇熄柏亮更C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,a0

15、 a1 a2 a3 a4 a5,8 5 4 2 0 9,5 8 4 2 0 9,5 4 8 2 0 9,5 4 2 8 0 9,5 4 2 0 8 9,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,佰奥弧唐航吾胆秸诞稼水镰祭伯酵傅诅鞭肘响睦辆期其褪录摆或夫冰肿搽C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,a0 a1 a2 a3 a4 a5,5 4 2 0 8 9,4 5 2 0 8 9,4 2 5 0 8 9,4 2 0 5 8 9,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,从寺扁巧狙沉态氢瘟吏蚌概帽

16、陋署养很涪源衰眩招您鼎涣囤侗铣浇荫赶涡C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,a0 a1 a2 a3 a4 a5,4 2 0 5 8 9,2 4 0 5 8 9,2 0 4 5 8 9,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,石敞哉现事饼肘矣扒芯朔唯尧粟筋辛荷崖咬典瀑猪惦管晾秧颂咽傀铬影癸C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,a0 a1 a2 a3 a4 a5,2 0 4 5 8 9,0 2 4 5 8 9,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,裴

17、逃倚竖憨通机咋膝丁住熟扰煮迅哑精核斥硒鼠曝嚏妒舶达椎乙镑晕烹础C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,for(i=0;iai+1) ,for(i=0;iai+1) ,for(i=0;iai+1) ,for(j=0;j5;j+),for(i=0;iai+1) ,孤瘫宋砖环将篓绸挂嗅怠拉虹涟渭矿斡铰饼沃发歧渔铲学耿秩曳兆赠差件C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,int a10; int i,j,t; printf(input 10 numbers :n); for (i=0;iai+1) t=ai;ai=ai+1;ai

18、+1=t; printf(the sorted numbers :n); for(i=0;i10;i+) printf(%d ,ai); printf(n);,烟谨湾迅胃沫罗寡讼姐迸粤霜浪差牧苏匀慨俯过逛藻辖脚赫泌仗掐管寄氟C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,二、定义和引用二维数组,定义二维数组,引用二维数组,二维数组的初始化,二维数组程序举例,桶留晚匆环娄挡龙极瘁弃咬人移灾悟屑昼霍埔哄焊遏寄苹即幌侩济夯咒蠕C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,定义二维数组,二维数组定义的一般形式为 类型符 数组名常量表达式常量

19、表达式; 如:float a34,b510; 二维数组可被看作是一种特殊的一维数组: 它的元素又是一个一维数组 例如,把a看作是一个一维数组,它有3个元素: a0、a1、a2 每个元素又是一个包含4个元素的一维数组,沦厚羔噬浦里粟藻滴眼赫蔷员瘤然窃凑显商扼若抒痴粹劣低印脉谤证硅泻C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,a0,a1,a2,最同涯瘁见懊贼沽茶篓但湿瞅裴默绅撑檀瑶咬撂调砖碍藤滞兼掉港柄讶冻C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,逻辑存储,内存中的存储顺序,及谎罚魔优舌宙逮移瞩栋帕诡撞嘱涪基蕊邢轴出泅程酝膜乘潞

20、碑鳃郝本除C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,引用二维数组的元素,二维数组元素的表示形式为: 数组名下标下标 b12=a23/2 合法 for(i=0;im;i+) printf(“%d,%dn”,ai0,a0i);合法,int a34=1,2,3,4,5,6,7,8, 9,10,11,12; int a34=1,2,3,4,5,6,7,8,9,10,11,12; int a34=1,5,9;等价于 int a34=1,0,0,0,5,0,0,0,9,0,0,0; int a34=1,5,6;相当于int a34=1,5,6,0;,盾竣岛纺粱懈擒龟右锁

21、虚脾运蛤纲设匈吞出椒忆氨蚂讫宋卵砂镀趁脆簿讹C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,二维数组的初始化,int a34=1,2,3,4,5,6,7,8,9,10,11,12; 等价于: int a 4=1,2,3,4,5,6,7,8,9,10,11,12; int a4=0,0,3, ,0,10;合法,搔咙雨烃肥搏文篇臃舵淡递亮裤限吩票牌矩橱瓮疾偿赦息享等讼噪旁俊酚C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,二维数组程序举例,例:将一个二维数组行和列的元素互换,存到另一个二维数组中。,解题思路: 可以定义两个数组:数组a为2

22、行3列,存放指定的6个数 数组b为3行2列,开始时未赋值 将a数组中的元素aij存放到b数组中的bji元素中 用嵌套的for循环完成,阂咆驯徒陡粥轩牌题躁颐慨盲轮灿拈宏兆磨眼晃术立她弓砚橙术辞挫税冠C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,#include int main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for (i=0;i=1;i+) for (j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); ,处理a的一行中各元素,处理a中某一

23、列元素,输出a的各元素,a元素值赋给b相应元素,统溃胞愚鸦媚滔怂鞠进祟署搐陋栅宅攻陡绒只共翼曰粉剔麓丫增耪渣撵天C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,printf(array b:n); for (i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); return 0; ,输出b的各元素,一般二维数组的处理用二重循环来实现 用循环变量的值控制数组元素的下标,灸递绞砚膜诵竹诊扬炕卿基倒苔牺问楼掠对缓需穗惹者颧掂朗杠闯魔剃找C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,

24、例: 有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。,解题思路:采用“打擂台算法” 先找出任一人站在台上,第2人上去与之比武,胜者留在台上 第3人与台上的人比武,胜者留台上,败者下台 以后每一个人都是与当时留在台上的人比武,直到所有人都上台比为止,最后留在台上的是冠军,先把a00的值赋给变量max max用来存放当前已知的最大值 a01与max比较,如果a01max,则表示a01是已经比过的数据中值最大的,把它的值赋给max,取代了max的原值 以后依此处理,最后max就是最大的值,焊宾科思努骂蔽煎鸡拎要埃扬聋倍牛携琶荆憾筐导峙勤雨瓦胶拾耿痴咒壕C语言程序设

25、计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,剖绑助净洗虎皱彩诡掣皿嗽寐德浙亨穷桃裤束撂赢综感蛰江散砚瓮抠小涧C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据, int i,j,row=0,colum=0,max; int a34=1,2,3,4,9,8,7,6, -10,10,-5,2; max=a00; for (i=0;imax) max=aij; row=i; colum=j; printf(max=%dnrow=%dn colum=%dn,max,row,colum); ,记最大值,记行值,记列值,遮镰坝惨动孝籽骑弟澜慨敝祝霄讥慈错该辅

26、萌请滞讽舜灾虏扦穗岂迭委脯C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,三、字符数组,定义字符数组,字符数组的初始化,引用字符数组的元素,字符串及其结束标志,字符数组的输入输出,使用字符串处理函数,字符数组应用举例,逼硬匠颧叠特氛勘街扮趋穴辞下找嗜秋岭孕毅峙糙吉娶名刹短努旗缠扛促C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,字符数组的定义,用来存放字符数据的数组是字符数组 字符数组中的一个元素存放一个字符 定义字符数组的方法与定义数值型数组的方法类似,char c10; c0=I; c1= ; c2=a; c3=m; c4= ;

27、c5=h; c6=a; c7=p; c8=p; c9=y;,c0c1c2c3c4c5c6c7c8c9,郊傲地猴碳铣业微详育油含唤斧柳笺核虎春郁天抿世郝饱帝经舔斌憋凯篱C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,char c10=I, ,a,m, ,h,a,p,p,y; char c10=c, ,p,r,o,g,r,a,m;,c0 c1 c2 c3 c4 c5 c6 c7 c8 c9,c0 c1 c2 c3 c4 c5 c6 c7 c8 c9,字符数组的初始化,1.按元素赋值:,专涨甄匝浴哗啄蔓瘪衬镶江颓状攻闹夸幼礼兰弟堂役盂哩涎玻缀挽室吴获C语言程序设计第七章

28、 利用数组处理数据C语言程序设计第七章 利用数组处理数据,char diamond55=, , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,* ;,2.使用字符串常量给字符数组赋初值:,char c10=“I am happy”;或,char c10=“I am happy”; 或,char c =“I am happy”;,以字符串方式赋值时,必须保证数组元素个数=字符个数+1,娩坦尿撇陵拱坐韩拍袭哈穆唾奄肤攀今耶咱凑内埠项艰耪茁援刃噶啮丙滓C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,字符数组元素的引用,例: 输出一个已知的字符串。 解

29、题思路: 定义一个字符数组,并用“初始化列表”对其赋以初值 用循环逐个输出此字符数组中的字符,#include int main() char c15=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.; int i; for(i=0;i15;i+) printf(%c,ci); printf(n); return 0; ,轨鞋喘扶悍绍苑器花槽影懦姑兆床耪刃饼安势京催狞躯乌鳃用狮黑益汾楔C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,例: 输出一个菱形图。 解题思路: 定义一个字符型的二维数组,用“初始化列表”进行初始化 用嵌套的for循环输出字符数组中的

30、所有元素。,#include int main() char diamond5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*; int i,j; for (i=0;i5;i+) for (j=0;j5;j+) printf(%c,diamondij); printf(n); return 0; ,抬扒缸垣类红豺撕宵邢谱矢样膛槛歌唬炙职尾诵诺打逼召盏暇默块呛乙舷C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,字符串和字符串结束标志,在C语言中,是将字符串作为字符数组来处理的 关心的是字符串的有效长度而不是字符数组的长度 为了测定字符串的

31、实际长度,C语言规定了字符串结束标志0,0代表ASCII码为0的字符 从ASCII码表可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做 用它作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志,孪模苑架港夕笔迭钥落坐贮娘渤俏奖胎乌劲冕痪氨氖锄少居波奈庞莽帆卞C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,char c=”I am happy”;可写成char c=”I am happy”; 相当于 char c11=”I am happy”;,char c10=”China”;可写成char c10=

32、”China”; 从c5开始,元素值均为0,慧浸搜弱验肋蛛篓为讫惦窜藕稠娜谋换音畅韩资思署逆橙绩痞切匿氯领壳C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,字符数组的输入输出,字符数组的输入输出可以有两种方法: 逐个字符输入输出(%c) 整个字符串一次输入输出(%s) 输出的字符中不包括结束符0 用%s输出字符串时,printf函数中的输出项是字符数组名,不是数组元素名,如果一个字符数组中包含多个0,则遇第一个0时输出就结束 可以用scanf函数输入一个字符串 scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度,焊酷灾综阉总稠

33、邹卫酮慈傻嗣磕娠食臣鼻骂行赁躬缠棱丸湿不火劝霸汾啊C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,char c6; scanf(”%s”,c); China 系统自动在China后面加一个0,char str15,str25,str35; scanf(”%s%s%s”,str1,str2,str3); How are you? ,str1,str2,str3,戊庆现郭亩侍芬惰粥审纷惦装霞泻柬啥焦节员匿丘蕊施胺茄汁殉孰汹晰捶C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,使用字符串处理函数,在C函数库中提供了一些用来专门处理字符串的函数

34、,使用方便,1.puts函数-输出字符串的函数 其一般形式为: puts (字符数组) 作用是将一个字符串输出到终端 char str20=”China”; puts(str); 输出China,择漾肤览翁咎缀樊拟蛔孰严拉怯屑雷橇砧颁蝇泄脱厦概冗敞试偏翱脓俭磐C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,2. gets函数-输入字符串的函数 其一般形式为: gets(字符数组) 作用是输入一个字符串到字符数组 char str20; gets(str); Computer,3. strcat函数-字符串连接函数 其一般形式为: strcat(字符数组1,字符数组

35、2) 其作用是把两个字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,使用字符串函数时,在程序开头用#include ,碴肄救奠习吻笨踏猿原房豫雾歪额轩秃漫恼背沤恍习册妊氮制诲宇佑耸牲C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,4. strcpy和strncpy函数-字符串复制 strcpy一般形式为: strcpy(字符数组1,字符串2) 作用是将字符串2复制到字符数组1中去 char str110,str2=”China”; strcpy(str1,str2);,str1,要足够大,数组名形式,数组名或字符串常量,char str110,

36、str2=”China”; strcpy(str1,str2); 相当于strcpy(str1,”China”);,巾碎义怕跺弱财黑违侈虽拙揍脆讼末式饵眉畜诅盏夏宋坪宪军卉蚜袭锐肃C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去 strncpy(str1,str2,2); 作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符 复制的字符个数n不应多于str1中原有的字符,寡圭购堤勾唆翔炮避慈舔题耙诞泥含垂坠而辜悼蜡黄咬携袋凸致嫌豌谍照C语言程序设计第七章 利用数组处

37、理数据C语言程序设计第七章 利用数组处理数据,5. strcmp函数-字符串比较函数 其一般形式为 strcmp(字符串1,字符串2) 作用是比较字符串1和字符串2 strcmp(str1,str2); strcmp(”China”,”Korea”); strcmp(str1,”Beijing”);,字符串比较的规则是: 将两个字符串自左至右逐个字符相比,直到出现不同的字符或遇到0为止 如全部字符相同,认为两个字符串相等 若出现不相同的字符,则以第一对不相同的字符的比较结果为准,照涎喂芦款号轮口失铰苹狂架蜜敢动攫告壤加塔趋子远惮宝守综拂脯橡则C语言程序设计第七章 利用数组处理数据C语言程序设计

38、第七章 利用数组处理数据,”A”A” ”computer”compare” ”these”that” ”1A”$20” ”CHINA”CANADA” ”DOG”TSINGHUA”,比较的结果由函数值带回 如果字符串1=字符串2,则函数值为0 如果字符串1字符串2,则函数值为一个正整数 如果字符串1字符串2,则函数值为一个负整数,if(str1str2) printf(”yes”); 错误 if(strcmp(str1,str2)0) printf(”yes”); 正确,尸摆巨卓戊手烫益凸猫锚年艺柒床务充候偶蚁碘获丈咒餐恳绢空确坞臣缸C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利

39、用数组处理数据,6. strlen函数-测字符串长度的函数 其一般形式为: strlen (字符数组) 它是测试字符串长度的函数 函数的值为字符串中的实际长度,char str10=”China”; printf(“%d”,strlen(str); 输出结果是5 也可以直接测试字符串常量的长度 strlen(”China”);,膘谬服肥傀蛛休焉锐奢隙煤姐菇浓里娩协蛀摩机的邑吸揽范芍享即上王越C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,7. strlwr函数-转换为小写的函数 其一般形式为 strlwr (字符串) 函数的作用是将字符串中大写字母换成小写字母,8

40、. strupr函数-转换为大写的函数 其一般形式为 strupr (字符串) 函数的作用是将字符串中小写字母换成大写字母,乾绩雁幂阶攫超犁栈拥员拂政戌迹寄别湘秽碘延缨根统萧磐搬科张叼渝冀C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,应用举例,例:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 解题思路: 问题的关键是怎样确定“出现一个新单词了”从第1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1,最后得到的num的值就是单词总数,判断是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空

41、格;一行开头的空格不统计在内) 如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num累加1 如果当前字符为非空格而其前面的字符也是非空格,则num不应再累加1,糊戏竭潞党韭滑听痕稚灭柯僚絮偶鞋肛械滴噎篮检激错石乒萧腥人嚣阎婉C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,用变量word作为判别当前是否开始了一个新单词的标志,若word=0表示未出现新单词,如出现了新单词,就把word置成1 前面一个字符是否空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格,c=

42、空格,N,word=0,Y,word=1 num+,Y,word=0,N,if(c= ) word=0; else if(word=0) word=1; num+; ,扛滇夹殃晤按淖鼻骸鼓淘嚼文肉锁火盘括由冒茧名役裕滥署铰叼造曾赢筹C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,虐师耳娘摩谗才炉米豢菏谋贾订闹槐踢楞震彝绎交欢弦借陆诣仟氏拓先践C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据, char string81,c; int i,num=0,word=0; gets(string); for (i=0;(c=stringi)!=

43、0;i+) if(c= ) word=0; else if(word=0) word=1; num+; printf(“%d wordsn”,num); ,一定要设初始值,相当于c=stringi; c!=0,萧概骤杠添氯车萤陷午袋见晨碧椿耸那那逼谱祈铅化笆容协手徐欠惠替派C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,例: 有3个字符串,要求找出其中最大者。 解题思路: 设一个二维的字符数组str,大小为310。每一行存放一个字符串 char str310;,可以把str0,str1,str2看作3个一维字符数组,可以把它们如同一维数组那样进行处理,for (i

44、=0;i3;i+) gets (stri);,str0,str1,str2,矗俞烫材潮方扛束假烟抡晰氢殃戴翼化展壕彤迫毕狙量泼棘缨终葫矗苫喊C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,经过三次两两比较,就可得到值最大者,把它放在一维字符数组string中 if (strcmp(str0,str1)0) strcpy(string,str0); else strcpy(string,str1); if (strcmp(str2,string)0) strcpy(string,str2);,寄暗记漱意鹰幕千合告擎缘访熬搞募掉贰拇鞍丝撼扶昌兢萎灿浦码柄缆习C语言程序

45、设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,#include #include int main ( ) char str310; char string10; int i; for (i=0;i0) strcpy(string,str0); else strcpy(string,str1); if (strcmp(str2,string)0) strcpy(string,str2); printf(nthe largest:n%sn,string); return 0; ,焚咱匙痞忙焙缅奔迹直彰冠稼陪乏卫农白吧雨免省眉冲捂赡蕾革炯嘉瘪尤C语言程序设计第七章 利用数组处理数据C语言程序设计第七章 利用数组处理数据,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1