数组维数组学习.pptx

上传人:莉*** 文档编号:87377997 上传时间:2023-04-16 格式:PPTX 页数:56 大小:311.08KB
返回 下载 相关 举报
数组维数组学习.pptx_第1页
第1页 / 共56页
数组维数组学习.pptx_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《数组维数组学习.pptx》由会员分享,可在线阅读,更多相关《数组维数组学习.pptx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1什么情况下使用数组?int a,b,c;char c1,c2,c3;float f1,f2,f3;double x,y,z;100个整数排序,怎么定义变量?数组批量定义一系列相同类型的数据第1页/共56页2什么是数组?处理批量数据时,基本类型数据不能进行有效的表示、处理和存储。构造数据类型数组:相同数据类型的变量的集合。数组元素内存中连续存放。第2页/共56页3什么是数组?数组中的各变量称为元素。每个元素用下标区分。数组用一个名字作为标识。a0a1a2a3a4int a5;第3页/共56页4数组分类一维数组一个下标a10二维数组两个下标a1010三维数组三个下标a1025第4页/共56页5本

2、章主要内容一维数组的定义与引用字符数组二维数组的定义与引用 典型例题第5页/共56页6一维数组定义和引用一维数组的定义语句:数据类型 数组名数组长度;数组名:符合C命名规则。特殊含义是地址常量。“”是下标运算符,是数组的标志。数组长度:整型常量,元素的个数。数组类型:数组元素的类型,如int、float等可同时说明多个数组和变量。第6页/共56页7一维数组在内存中存储的示意图int abc5short abc5第7页/共56页8一维数组元素的引用如何使用数组元素?数组名下标下标可以是常量或表达式a2 ax+2下标变量虽然有下标,但它的使用和简单变量是一样的。第8页/共56页9一维数组元素的引用

3、float a20;int x=4,y=5;a4=5;a5=8;a0=ax+ay/2;printf(“%f”,a0);第9页/共56页10编程实现一维数组的输入输出。#include void main()int i,a10;for(i=0;i10;i+)/*输入数组中的10个数*/scanf(%d,&ai);for(i=0;i10;i+)/*输出数组中的10个数*/printf(%d,ai);第10页/共56页11例设有整型数组a,其长度是5。编写程序,令5个数组元素的值依次为10、20、30、40、50并输出数组个元素的值。分析:循环循环变量的初始值第11页/共56页12第12页/共56页

4、13一维数组的初始化数据类型 数组名容量=常量表达式1,常量表达式2,;例如:int i10=1,2,3,4,5,6,7,8,9,10float farr=1.1,2.2,3.3,4.4,5.5,6.6int a10=0,1,2,3,4可以只给前k个元素赋初始值。这时,后面未赋值的元素则自动初始化为0第13页/共56页14举例输入10个数,求其中的最大数#include void main()int i,a10,imax;/imax 存放最大数for(i=0;i10;i+)/*输入数组中的10个数*/scanf(%d,&ai);imax=a0;for(i=1;iimax)imax=ai;pri

5、ntf(%dn,imax);第14页/共56页15一维数组应用举例输出Fibonacci 数列的前20项。1、1、2、3、5、8、13、21、在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n=2)第15页/共56页16输出Fibonacci 数列的前20项#include void main(void)int fib20=1,1,i;for(i=2;i20;i+)fib i=fib i-2+fib i-1;for(i=0;i b)则a,b互换输出a,b第19页/共56页20排序(从小到大)3个数排序三个数排序a,b,cif(ab)则a,b

6、互换if(ac)则a,c互换if(bc)则b,c互换输出a,b,c第20页/共56页21排序(从小到大)四个数排序四个数排序a,b,c,dif(ab)则a,b互换if(ac)则a,c互换if(ad)则a,d互换if(bc)则b,c互换if(bd)则b,d互换if(cd)则c,d互换输出a,b,c,d第21页/共56页22五个数排序(从小到大)int s5=8,7,9,5,6第1步:s0与后面的4个数比较和交换7 8 9 5 67 8 9 5 65 8 9 7 65 8 9 7 6第2步:s1与后面的3个数比较和交换5 8 9 7 65 8 9 7 65 7 9 8 65 6 9 8 7第22页

7、/共56页238,7,9,5,6第3步;s2与后面的2个数比较和交换5 6 9 8 75 6 8 9 75 6 7 9 8第4步;s3与后面的1个数比较和交换的过程:5 6 7 9 85 6 7 8 9第23页/共56页24第24页/共56页25选择排序基本思路(由小到大):排序的n个数据an令a0和其后的a1an-1进行比较若其后的数小于a0,则两数进行交换a0为n个数中最小的数。令a1和其后的a2an-1进行比较若其后的数小于a1,则两数进行交换最终,a1为n个数中次小的数。如此等等,最终这n个数按从小到大的顺序存放在a0an-1中。第25页/共56页26冒泡排序相邻两数比较按从头到尾的顺

8、序,进行两相邻数据的比较。如s0与s1比,s1与s2比,以此类推。比较过程中,若发现后一个数据比前一个小(仍以由小到大排序为例),则将两个数据的位置对调。比较的结果,最后一个数便是最大的。然后进行第二轮的从头到尾的相邻两数的比较。这个比较过程要反复地从头到尾进行多次排序便完成了。第26页/共56页278,7,9,5,6第1轮比较8,7,9,5,6 7,8,9,5,6有数据互换7,8,9,5,6 7,8,9,5,67,8,9,5,6 7,8,5,9,6 有数据互换7,8,5,9,6 7,8,5,6,9 有数据互换第2轮比较7,8,5,6,9 7,8,5,6,87,8,5,6,9 7,5,8,6,

9、9有数据互换7,5,8,6,9 7,5,6,8,9 有数据互换第27页/共56页288,7,9,5,6第3轮比较7,5,6,8,9 5,7,6,8,9有数据互换5,7,6,8,9 5,6,7,8,9有数据互换第4轮比较5,6,7,8,9第28页/共56页29第29页/共56页30字符数组字符串一维字符数组第30页/共56页31字符数组char 字符数组名字符串长度;长度=实际长度1。字符串以 0 结尾。0 是ASCII码为0的字符,用于判断字符串是否结束。字符串常量是用双引号括起来的字符序列。“hello”在内存中实际上占用了6个内存单元。第31页/共56页32字符数组初始化字符串作初值,可以

10、不用括起,系统自动在串尾加 0char str=hello;等价于,人工在串尾加 0:char str=h,e,l,l,o,0;但不等价于:char str=h,e,l,l,o;/占用5个单元*/hello0第32页/共56页33初始化、赋值char str10=“hello”;char str10;str=“hello”;char str10;strcpy(str,”hello”);第33页/共56页34字符数组的输出(1)printf()函数%c:利用循环逐个字符输出char str=hello;for(i=0;stri!=0;i+)printf(%c,stri);第34页/共56页35字

11、符数组的输出(1)printf()函数%s:对应的输出项是字符数组名或字符串常量 char str=hello;printf(%s,str);第35页/共56页36字符数组的输出(2)puts()函数puts(字符数组名或字符串常量);作用:将字符串输出到显示屏上,遇第一个0终止,并将 0 转换成 n 输出。char str=hello;puts(str);puts(hello);第36页/共56页37字符数组的输入(1)scanf函数使用%s,其对应项是字符数组名。char name20;scanf(“%s”,name);不足:当遇到空格时,scanf的输入操作将中止。无法使用scanf输入

12、一个包含空格的字符串。第37页/共56页38字符数组的输入利用scanf函数可以连续输入多个字符串。字符串之间用空格分隔。例如:char xingstr10,mingstr10;scanf(%s%s,xingstr,mingstr);第38页/共56页39字符数组的输入(2)gets()函数get(字符数组名);作用:读入一个字符串(包括空格)到str 中,遇到换行结束,用0 代替换行符。例如:char name100;gets(name);puts(name);第39页/共56页40读程序#include void main()char str80;int i;gets(str);for(i

13、=0;str i!=0;i+)if(stri=a&stri=z)stri=stri-32;puts(str);第40页/共56页41字符串输入输出函数举例第41页/共56页42常用的字符串系统库函数字符串输入输出函数说明在头文件stdio.hgets()puts()字符串处理函数说明在头文件string.hstrlen()strcmp()strcpy()strcat()第42页/共56页43strlen()求字符串长度(字符串中字符的个数)strlen(数组名)第43页/共56页44strcmp()作用:对s1和s2 进行逐个字符的ASCII码比较,直到对应字符能够确定大小关系或到串尾为止。返

14、回整型数值结果:比较结果strcmp的值str1str21第44页/共56页45strcmp()#include#include void main()char s1100,s2100;gets(s1);gets(s2);if(strcmp(s1,s2)=0)printf(stri1=stri2);else if(strcmp(s1,s2)0)printf(str1 str2);elseprintf(s1 s2);第45页/共56页46strcpy()格式:strcpy(s1,s2);作用:将s2拷贝到字符数组s1中,包括0。用法:char s180,s2 80;gets(s2);strcpy

15、(s1,s2);strcpy(s1,”Program”);第46页/共56页47strcpy()第47页/共56页48字符串连接函数strcat()一般形式为:strcat(s1,s2);参数s1为字符数组名;s2可以是字符串常量,或字符数组名。本函数的功能是将s1中的字符串的结束标记字符取消,然后,将s2加到它之后。s2保持不变。第48页/共56页49字符串连接函数strcat()第49页/共56页50字符数组举例输入文本,统计其中单词的个数,单词之间用空格间隔第50页/共56页51#include void main()char string200,c;int i,num,word;num

16、=0;/*累计单词个数变量首先清零*/word=0;/*初值为0*/gets(string);/*输入一行字符*/for(i=0;(c=stringi)!=0;i+)/*逐个读入字符,直到字符串尾*/printf(There are%d words in the line.n,num);第51页/共56页52for(i=0;(c=stringi)!=0;i+)/*逐个读入字符,直到字符串尾*/if(c=)/*若第i字符为空格,置标记word为0*/word=0;printf(n);else/*若第i字符为非空格*/printf(%c,c);if(word=0)/*前一字符为空格,则该字符为新词开始*/word=1;/*修改标记word为1*/num+;/*单词个数加1*/第52页/共56页53第53页/共56页54第54页/共56页55汉语分词举例他们是来|查|金泰|撞人那件事的。(“查”读音为cha)行侠仗义的|查金泰|远近闻名。(“查”读音为zha)美国会通过对台售武法案 乒乓球拍卖完了主要的分词方法简单的模式匹配:正向最大匹配、逆向最大匹配法、双向匹配法基于规则的方法:最少分词算法基于统计的方法:统计语言模型分词、串频统计和词形匹配相结合的汉语自动分词、词典分词第55页/共56页56感谢您的观看。第56页/共56页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁