C语言程序设计_完整_第六章(适于清华谭浩强版)PPT课件_第1页
C语言程序设计_完整_第六章(适于清华谭浩强版)PPT课件_第2页
C语言程序设计_完整_第六章(适于清华谭浩强版)PPT课件_第3页
C语言程序设计_完整_第六章(适于清华谭浩强版)PPT课件_第4页
C语言程序设计_完整_第六章(适于清华谭浩强版)PPT课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

精选,1,第6章数组,6.1问题的提出6.2一维数组6.3二维数组6.4字符串与字符串函数,精选,2,6.1问题的提出,第一个问题是:输入100个学生的“C程序设计”课程的成绩,将这100个分数从小到大输出。第二个问题是输入100个学生的“C程序设计”课程的期中和期末成绩,算出总评成绩,总评成绩为“30%期中成绩+70%期末成绩”,计算总评成绩的分数段情况。,精选,3,6.2一维数组,6.2.1一维数组的定义从概念上来说,数组是一组变量,这组变量应该满足下列条件:(1)具有有相同的名字(2)具有相同的数据类型(3)在存储器中连续存放,精选,4,每个变量称为数组的一个“数组单元”,保存在其中的数据值称为“数组元素”,不论是数组单元,还是数组元素,在不引起混淆的情况下,可以简称为元素。数组对象的整体有一个名称,这个名称表示整个数组。,精选,5,每个数组在使用之前都需要定义。定义数组的语法是:数据类型说明符数组名数组长度;数据类型说明符是C语言提供的任何一种基本数据类型或构造数据类型。数组名是用户定义的标识符。方括号中的数组长度是一个常量表达式,它表示了数组单元的个数。注意:数组长度只能是常量。,精选,6,例如:intdata5;说明整型数组a,有5个元素。floatb10,c20;说明单精度浮点型数组b,有10个元素;单精度浮点型数组c,有20个元素。charstring20;说明字符型数组string,有20个元素。,精选,7,注意(1)数组的数据类型定义的是每个数组元素的取值类型。对于一个数组来说,所有数组元素的数据类型应该都是相同的。(2)数组名要符合用户定义字的书写规则,也就是与普通变量一样。(3)在C语言的一个函数中,数组名不能与本函数的其它变量名同名。(4)数组长度不能是变量,也不能是或包含变量的表达式,可以是常量或常量表达式。并且常量表达式应是整型数,不能是小数。,精选,8,程序段一:#defineSize5main()intaSize,bSize+10;/*正确*/程序段二:main()intn=5;intdatan;/*错误*/,精选,9,6.2.2一维数组的引用引用数组单元的一般形式为:数组名下标数组下标可以是整型变量或整型表达式,但不能是浮点型的变量或浮点型表达式;并且下标不能大于数组长度-1,因为超过部分没有被定义过,是不能正确使用的。图。例如:data4、datai+j、datai+都是合法的引用方式。,精选,10,例6.1用数组方式读入5个整数,并求和。/*sumof5interger*/#includestdio.hvoidmain()inti,data5,sum=0;printf(nPleaseenter5integer:);for(i=0;i5;i+)scanf(%d,精选,11,在语言中只能逐个地使用每个数组单元进行操作,而不能一次引用整个数组。例如,不能用printf(“%d”,data);来代替下面的语句:for(i=0;i=4;i+)printf(%d,datai);因为,C语言规定数组名本身代表数组的首地址。printf(“%u”,data);语句输出的是数组的首地址,而不是数组单元的内容。,精选,12,6.2.3一维数组的初始化初始化是指在数组定义时给数组元素赋予初值。需要注意的是,数组初始化是在编译阶段进行的,而不是在程序开始运行以后,由可执行语句完成的,因此不能将初始化的“=”与赋值号混淆。一维数组初始化的一般形式是:数据类型说明符数组名数组长度=数值,数值,.数值;,精选,13,intdata5=1,2,3,4,5;注意(1)允许初始化一部分元素,而不是全部。intdata5=1,2;(2)初始化数组时,允许省略数组的长度。intdata=1,2,3,4,5;与intdata5=1,2,3,4,5;是完全等价的。(3)初始化数组时,不能对整个数组初始化。例如,intdata5=1;,精选,14,6.2.4程序举例例6.2用数组方式解决Fibonacci数列问题,求出Fibonacci数列的前20项存储在数组中,并将数组内容输出。,精选,15,#includestdio.hvoidmain()inti,fib20=1,1;/*初始化*/printf(n);for(i=2;i20;i+)fibi=fibi-1+fibi-2;for(i=1;i=20;i+)printf(%10d,fibi-1);if(i%5=0)printf(n);/*换行,每行输出5个*/,精选,16,例6.3输入100个整数,求出最小的数以及第一个最小的数在数组中的下标。例6.4输入100个整数,从小到大排列并输出。选择排序例6.5输入100个学生的“C程序设计”课程的期中和期末成绩,算出总评成绩,总评成绩为“30%期中成绩+70%期末成绩”,计算总评成绩的分数段情况。本题要使用三个平行的数组才能解决问题。这三个数组的第i个元素记录了一个学生的期中成绩、期末成绩和总评成绩。,精选,17,6.3二维数组,如果一维数组的数组单元不是一个变量,而是另一个一维数组,就构成了二维数组。图。e_score是一个一维数组,它的每个数组单元是一个变量,分别是e_score0、e_score1、e_score2、e_score3、e_score4。而stu_score的每个数组单元不是一个变量,而是一个有三个变量的一维数组,这就构成了二维数组。,精选,18,精选,19,stu_score有5个数组单元,每个数组单元又有3个元素,我们称stu_score是一个53的二维数组,该二维数组行的个数是5,列的个数是3。6.3.1二维数组的定义定义二维数组的语法是:数据类型说明符数组名行数列数,精选,20,例如:intdata53;说明整型数组a,有5行3列共15个整型变量。floatb1020;说明单精度浮点型数组b,有10行20列共200个单精度浮点型变量。charstring2050;说明字符型数组string,有20行50列共1000个字符型变量。,精选,21,地址二维数组在概念上是二维的,可以说是数组的数组,二维数组的下标在行和列两个方向变化。但是,计算机的内存是连续编址的,也就是说存储器单元是按一维线性排列的。那么,如何按照地址的顺序存放二维数组呢?一般有两种方式来存储二维数组,第一种称为按行排列,方法是先存储完第一行中的每个元素,再存放下一行的每个元素;第二种称为按列排列,方法是先存储完第一列中的每个元素,再存放下一列的每个元素。C语言的编译系统采用按行排列。,精选,22,6.3.2二维数组的引用引用二维数组的一般形式为:数组名行下标列下标行下标不能大于行数-1,列下标不能大于列数-1。如果有intstu_score53;stu_score00、stu_score12、stu_score31都是正确的引用方式,但是stu_score33是不正确的。,精选,23,例6.7判断下面程序的运行结果:#includestdio.hvoidmain()inti,j,a32;/*定义*/for(i=0;i3;i+)/*赋值*/for(j=0;j2;j+)aij=i+j;for(i=0;i字符串2,返回值为一正整数;若字符串1字符串2,返回值为一负整数。字符串1和字符串2既可以是字符串常量也可以是字符串变量。,精选,47,4.求字符串长度函数strlen其调用格式为:strlen(字符串)它的功能是:计算字符串的实际长度(不含字符串结束标志0),并将计算结果作为函数值返回。字符串既可以是字符串常量也可以是字符串变量。,精选,48,例6.18使用函数strlen计算字符串的长度并输出。#includestdio.h#includestring.hvoidmain()charstr=Iamastudent;printf(Thelengthofthestringis%dn,strlen(str);运行结果:Thelengthofthestringis14,精选,49,6.4.5程序举例例6.19定义两个字符串变量,使用输入函数为其赋值,将两个字符串连接起来并输出(不用strcat函数)。例6.20编写程序输入一个字符串和一个单个字符,在输入的字符串中删除所有的单个字符。例6.21编写程序输入一个字符串,对该字符串中的字符从小到大排序并输出。,精选,50,例6.22编写程序输入两个字符串,将在第一个字符串中出现的但在第二个字符串未出现的字符存放在第三个字符串变量中并输出。注意,

温馨提示

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

评论

0/150

提交评论