C语言课件7.数组.ppt_第1页
C语言课件7.数组.ppt_第2页
C语言课件7.数组.ppt_第3页
C语言课件7.数组.ppt_第4页
C语言课件7.数组.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、在第7章,数组,回顾中,for循环类似于while循环,在for语句中有三个表达式:表达式1通常用于给循环变量赋值;表达式2通常是一个循环条件;表达式3用于更新循环变量值。for语句中的每个表达式都可以省略,但是应该注意分号分隔符不能省略。如果省略表达式2和表达式3,则需要尝试在循环体中结束循环,否则将导致无限循环。回头看,当break语句用于循环时,您可以直接结束循环。将控制转向循环后面的语句。continue语句的功能是跳过循环体中剩余的语句,并执行下一个嵌套循环。嵌套循环语句必须完全包含在外部循环的循环体中。了解为什么使用数组来理解什么是C语言中的数组,掌握一维数组的使用,掌握二维数组的

2、使用,并熟悉实现字符数组的常用算法,合法的标识符,指示元素的数量。引用时订阅从0开始,数组运算符单目运算符,如int a6,编译时分配给连续内存的内存字节=数组大小*元素数据类型大小,数组名称代表内存的第一个地址,是一个地址常量,7.1一维数组的定义和引用,一维数组的定义和定义方法:类型描述符数组名称常量表达式;返回,main() int i,a10对于(I=0;I=0;I)printf(“% d”,ai);必须先定义一维数组的引用数组,然后使用,只能逐个引用数组元素,不能一次引用整个数组元素表示:数组名称下标,其中:下标可以是常量或整数表达式示例7.1数组元素的引用,运行结果:9876532

3、10,一维数组的初始化在定义数组时给数组元素赋值。例如,您可以只为元素的一部分赋值。如果您想使数组中的所有元素的值都为0,您可以将它写成:int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4;一个数组元素的定义中有10个元素,但括号中只提供了5个初始值,这意味着只有前5个元素被赋予初始值,最后5个元素是0,inta10=0,0,0,0,0,0,0,0,0,0,0,0;它不能写成inta10=0 * 10为所有数组元素分配初始值时,不能指定数组长度,例如:int a5=1,2,3,4,5;它可以写成int a=1,2,3,4,5;如果要将数组长度定义为10,

4、则不能忽略int a10=1,2,3,4,5的长度;描述:数组未初始化,其元素值为随机数。静态数组元素没有被赋予初始值。系统将仅自动为一些数组元素分配0值,而其他元素的初始值为0。当所有数组元素都被赋予初始值时,可以不指定数组长度。、F0、F1、F2、F3、F4、F5、F19、int f20=1,1;对于(I=2;i20I)fi=fi-2 fi-1;对于(I=0;i20I)if(I % 5=0)printf(n);printf(d,fi);7.2使用数组解决斐波那契数列的问题。一维数组程序示例,运行结果:示例7.3通过冒泡方法对10个数字进行排序。,排序过程:(1)将第一个数字与第二个数字进行

5、比较,如果是倒序a0a1,则进行交换;然后将第二个数字与第三个数字进行比较;通过类比,直到第(n-1)个数与第(n)个数比较,最大的数被放在最后一个元素位置。(2)第(n-1)个数字被放置在第(n-1)个元素位置。(3)重复上述过程。在n-1个气泡排序之后,排序结束。例如,38 49 600 38 49 65 13 27 30 76,第二次行程,38 49 13 27 30 65,第三次行程,38 13 27 30 49,第四次行程,13 27 30 38,第五次行程,13 27 30,第六次行程,49 38 65 97 76 13 27 30,初始关键字,n=8,7,6。65,27,65,3

6、0,65,13,13,49,49,30,49,27,38,27,38,38,13,27,第七趟,38,49,76,97,97,97打印(输入10个数字3360n);对于(I=1;IAI 1)t=ai;ai=ai 1;ai 1=t;打印(已排序的数字:n);对于(I=1;i11i ) printf(%d,ai);例如int a34浮动b25int c234int a3,4;()、行数、列数、元素数=行数*列数,7.2二维数组和多维数组,二维数组的定义:数据类型数组名称常量表达式常量表达式;内存是一维二维数组:先有行顺序的多维数组:最右边的下标变化最快,如int a34二维数组理解每个元素ai由包

7、含四个元素的一维数组组成,而二维数组A由三个元素组成。二维数组元素的引用形式:数组名称下标二维数组元素的初始化:按照元素排列的顺序初始化,程序示例,示例7.4交换二维数组的行和列元素并保存到另一个数组中。示例7.5在二维数组中查找最大元素值及其行数和列数。#include main() int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;int i,j,row=0,colum=0,最大值;max=a00对于(I=0;imax)最大值=aij行=I;colum=j;printf(最大值=%d,行=%d,列=%dn,最大值,行,列);例如char c10、ch34,7.3字符数

8、组,字符数组的定义字符数组的初始化在示例7.6中,使用字符串常量逐个赋值,返回并输出一个字符串。,#包括main() char c10=I,a,m,a,b,o,y;int I;对于(I=0;i10i ) printf(%c,ci);printf(n);字符数组的引用,运行结果:我是男孩,字符串及其结束标志没有字符串变量,字符串结束标志用字符数组处理:0,字符串的输入输出是字符输入输出:% c整个字符串输入输出:% s,例如,% c main()char str 5;int I;对于(I=0;i5;I)scanf(“% c”),例如,% s main()char str 5;scanf(%s ,

9、字符串);printf(%s ,字符串);使用不带printf的字符数组名称(“%s”,a);主()字符a=你好;printf(“% s”,a);结果:Hello#-=*,结果:Hello,当以“%s”输出时,以0结尾。比较两个输出之间的差异,main() char a=h,e,l,0,l,o,0;printf(%s,a);output: hel,当数组中有多个零时,第一个零结束。例如,如果您要记录字符串“这是一个字符串。”,错误的输入语句是:(a)scanf(s,s);(二)为(k=0;k17k)sk=getchar();(c=getchar()!=n)sk=c;头文件字符串中包含字符串处理

10、函数。h,字符串输出函数put format:put(字符数组)函数:要显示的输出字符串(输出后,换行)说明:字符数组必须以0结尾,字符串输入函数get format:get(字符数组)函数:从键盘输入一个以回车结束的字符串,并将其放入字符数组,并自动添加0说明:输入字符串的长度应小于字符数组的维数。打印(“输入字符串:”);获取(字符串);puts(字符串);输入:你好吗?输出:你好吗?字符串连接函数strcat格式:strcat(字符数组1,字符数组2)函数:将字符数组2连接到字符数组1。返回值:返回字符数组1的第一个地址。描述:字符数组1必须足够大。在连接之前,两个字符串都以0结尾;连接

11、后,字符串1的0被取消,最后0被添加到新字符串中。字符串复制函数str Copy格式:str Copy(字符数组1,字符串2)函数:将字符串2复制到字符数组1中以返回值:返回字符数组1的第一个地址描述:当必须充分复制字符数组1时,0应该一起复制。不能使用赋值语句给字符数组赋值,例如char str120,str220你好;str2=str1,(),(),字符串比较函数strcmp格式:strcmp(字符串1,字符串2)函数:比较两个字符串:从左到右逐个比较两个字符串(ASCII码),直到满足不同的字符或0。返回值:返回整数,a。如果字符串1和字符串2,返回正整数c。如果字符串1=字符串2,返回

12、零的说明:字符串比较不能使用“=”,但必须使用strcmp,字符串长度函数strlen格式:strlen(字符数组)函数:计算字符串长度返回值:返回字符串的实际长度,不包括0。例如,对于以下字符串,strlen具有以下值:(1) chars10=a,0,b,c,(2)char s= tv0 willn ;(3)char s= x 69082n ;答案:1 3 1,字符数组应用程序示例,示例7.8,输入一行字符并计算有多少个单词,#包括main()char string 81;int i,num=0,word=0;char c;获取(字符串);对于(I=0;(c=stringi)!=0;I)如果

13、(c=)字=0;否则,如果(word=0)word=1;数量;印刷字体(亚麻布上有%d个字,数字);例7.9有三个字符串,找出最大的一个,包括# main()charstring20,str 320int I;对于(I=0;i0) strcpy(字符串,str 0);else strcpy(字符串,str 1);if(strcmp(str R2,string)0) strcpy(string,str 2);printf(最大字符串为:n%sn,字符串);数组是一种可以在内存中连续存储多个元素的结构。数组中的所有元素必须属于同一数据类型。必须先声明数组,然后才能使用它。声明一个数组只会为该数组留

14、下内存空间,而不会给它赋值。数组的元素通过数组下标来访问。概要2。一维数组可以用循环动态初始化,而二维数组可以用嵌套循环动态初始化。可以看出,字符数据可以存储在由一维数组嵌套而成的字符数组中,字符数组可以形成字符串。练习:1。只有()才能正确初始化一维数组中的所有元素。从下列问题中选择正确答案:inta5=int a=inta5=0,0,0,0,0 inta5=0,2。解释int k=3,a10下列表达式可以正确引用数组元素。ak a10 a1.3 a3*5,#定义k3 int AK;int k=3;int ak练习:1 .从下列问题中选择正确答案。定义int d 3=1,2,3,4,5,6;

15、执行语句printf(“% c”,D10A);结果是()。A B D E,int d 3=1,2,3,4,5,6,练习:1。从下列问题中选择正确答案,4。定义char c=A,ch20=a,b,c,0,d,0;执行printf(“% s”,ch);结果是()。abc abc abcd abc0d,练习:1。从下列问题中选择一个正确答案,卡尔和巴尔一样,卡尔比巴尔长,卡尔比巴尔短,5。初始化数组Charcarr=s,t,u,d,e,n,t,barr=学生;那么正确的答案是()。卡尔,巴尔,练习1。从下列问题中选择一个正确答案,#包括#包含无效主()int I,j,temp,d44=1,2,3,4,5,6,7,8,4,3,2,1,1代表(I=0;idji)DJI=dij;对于(I=0;i=i) printf(m,dij);else printf(l),5,4,3,练习:2。读取下列程

温馨提示

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

最新文档

评论

0/150

提交评论