C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针

上传人:w****i 文档编号:94657330 上传时间:2019-08-10 格式:PPT 页数:130 大小:1.44MB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针_第1页
第1页 / 共130页
C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针_第2页
第2页 / 共130页
C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针_第3页
第3页 / 共130页
C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针_第4页
第4页 / 共130页
C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针_第5页
第5页 / 共130页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 罗朝盛第5章 数组、字符串、指针(130页珍藏版)》请在金锄头文库上搜索。

1、第5章 数组、字符串、指针,本章要求:,1、掌握C语言数组在内存中的存储形式 2、掌握一维数组和二维数组的定义及使用 3、掌握使用指针处理数组的方法 4、掌握使用字符数组及指针处理字符串数据的方法 5、掌握与数组有关的基本算法(如排序、查找、插入、删除等)的程序设计,重点:,一维数组、二维数组的定义与使用方法,使用指针访问数组和字符串的方法。,难点:,二维数组与指针;与数组有关的常用算法(排序、查找与插入等)。,第5章 数组、字符串、指针,本章主要内容:,5.1 数组概述 5.2 一维数组 5.3 二维数组与多维数组 5.5 数组与指针 5.5 字符数组与字符串 5.6 字符串与字符指针 5.

2、7 指针数组与多级指针变量 5.8 应用程序举例 本 章 小 结,第5章 数组、字符串、指针,5.1 数组概述,数组是各种计算机程序设计语言中很重要的一个概念,用于处理大量数据的问题。为了处理方便,把具有相同类型的若干数据按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。在语言中,数组属于构造数据类型,一个数组元素可以是基本数据类型或是构造类型。,输入10个数,输出它们的平均值及大于平均值的那些数?,引例:,main() int n; float s=0,a, ave; for (n=1;n=10;n+) scanf(“%d”, ,例5-1:输入10个数,输出它们的平均值及大于平

3、均值的那些数。,引例:,如果使用:a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,int n; float s, ave, a1, a2, a3,a4,a5,a6,a7,a8,a9, a10; scanf(“%d%d%d%d%d”, 实际程序是不能这样写,引例:,读者从上面的程序可以看到程序很冗长,如果不是10个数,而是100,1000,甚至是10000,此时按上面方法编写程序就非常冗长。 思考: 如果能使用ai ( i=1,2,10 ) 的形式? 使用循环来写程序 C语言中表示下标变量就是通过定义数组来实现的。 下面是使用数组来实现的程序:,引例:,#include void

4、main() int n,i; /*定义变量s,ave和有10个元素的一维数组a*/ float s=0, ave, a10; for(i=0;iave) printf(“%f “,ai); ,在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。 在语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为: 数值数组、 字符数组、 指针数组、结构数组等各种类别。 按数组的维数可分为:一维数组、二维数组、多维数组。 数组在内存中占用一片连续的

5、存储单元,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维的,也可以是多维的。,.1 概 述,5.2 一维数组,只有一个下标变量的数组,称为一维数组。 5.2.1 一维数组定义 一般形式为: 类型符 数组名 常量表达式,; 其中,类型说明符是任一种基本数据类型或构造数据类型, 数组名是用户定义的数组标识符; 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 例如:int a10; 说明整型数组a,有10个元素。 float b10,c20; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch20; 说明字符数组ch,有20个元素。,说明

6、: (1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 (2) 数组名的书写规则应符合标识符的书写规定,数组名不能与同一函数中其它变量名相同。例如: int a; float a10; 是错误的。 (3)C语言中规定数组的下标从0开始,方括号中常量表达式表示数组元素的个数。 例如:int a5 表示数组a有5个元素。因下标从0开始计算。因此5个元素分别为a0,a1,a2,a3,a4。,5.2.1 一维数组的声明,(4)不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如: #define FD 5 int a3+2,b7+FD

7、; 是合法的。但是下述说明方式是错误的。 int n=5; int an;,5.2.1 一维数组的声明,(6)数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序。,(5)允许在同一个类型说明中,说明多个数组和多个变量。 例如: int a,b,c,d,k110,k220;,1、数组声明时初始化 数组初始化赋值是指在数组说明时给数组元素赋予初值。 数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。 数组初始化的一般形式为: 类型符 数组名常量表达式=值,值值; 其中: 在 中的各数据值即为各元素的初值,各值之间用逗号间隔。 例如: int a10= 0,

8、1,2,3,4,5,6,7,8,9 ; 相当于a0=0; a1=1;. a9=9;,5.2.2 一维数组的初始化,语言对数组的初始赋值的几点规定: (1)可以只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。 例如: int a10=0,1,2,3,4; 表示只给a0a45个元素赋值,而后5个元素自动赋0值。 (2)如果定义数组前加关键字static,表示是静态存储类型数组(有关静态存储的概念在本书6.6.2节介绍),对于数值类型数组,其元素初值系统自动全部赋值为0值。 (3)只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋1值,只能写为: int a10=

9、1,1,1,1,1,1,1,1,1,1; 而不能写为: int a10=1;,5.2.2 一维数组的初始化,(4)如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如: int a5=1,2,3,4,5; 可写为: int a=1,2,3,4,5; (5)当 中值的个数多于元素个数时, 系统出错。 例如:,5.2.2 一维数组的初始化,int a5=1,2,3,4,5,1 ;,5.2.2 一维数组的初始化,2、使用赋值语句初始化,用赋值语句初始化是在程序执行过程中实现的。例如: int a3; a0=5;a1=8;a2=9; 对于数组的元素用赋值语句初始化,常常使用循环来完成,例

10、如: int k,a10; for(k=1;k10;k+) ak=1; /*对数组中所有元素赋初值为1*/,数组元素是组成数组的基本单元,数组元素也是一种变量。引用数组元素有下标法和指针法。本小节介绍下标法,指针法将在5.5节中介绍。 使用下标法引用一维数组元素的一般形式为: 数组名下标 其中,的下标只能为整型常量或整型表达式。若为小数时,C编译将自动取整。 例如,a5,ai+j,ai+ 都是合法的数组元素。 a1=a2+b1+5; ai=bi; /* 将数组b的第i元素赋值给数组a的第i元素 */ bi+1=ai+2; /*将数组a的第i+2元素赋值给数组b的第i+1元素*/,5.2.3 数

11、组元素的引用,注意: (1)数组元素的引用和数组声明在形式中有些相似,但这两者具有完全不同的含义。数组声明的方括号中给出的是某一维的长度,即表示元素的个数;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。 例如,int a10 这里有a10 只是声明数组有10元素。而在程序中引用数组元素a5表示数组中的第5个元素。但是引用中不能用a10,因为C语言中下标从0开始,数组a的最后一个元素是a9。,5.2.3 数组元素的引用,(2)C语言中对数组的引用不检验数组边界,即当引用时下标超界时(下标小于0或大于上界),C系统虽然不出错,但可能使其它变量的数组甚至

12、程序代码被破坏,使得程序运行中断或输出错误的结果。 (3) 在语言中只能通过下标变量使用数组元素,而不能一次引用整个数组。 例如,输出有10 个元素的数组必须使用循环语句逐个输出各下标变量: for(i=0; i10; i+) printf(“%d“,ai); 而不能用一个语句输出整个数组,下面的写法是错误的: printf(“%d“,a);,5.2.3 数组元素的引用,1. 可通过循环给数组元素输入数据 int a10,i,; for(i=0;i10;i+) scanf(“%d”, 2求数组中最大元素及其下标,5.2.4 一维数组的基本操作,2求数组中最大元素及其下标 例5-2 输入N个数据

13、存入数组中,输出其中的最大元素 #define N 10 main() int i,p,max,aN; printf(“Enter %d Numbersn“,N); /* 提示输入数据 */ for(i=0;i max) max = ai; p = i; printf(“ The Max Numbwer a%d=%dn“,p,max); ,5.2.4 一维数组的基本操作,3一维数组的倒置 编程分析:将第0个元素与最后1个元素的交换、第1个元素与倒数第2个元素的交换、即第i个与第n-i-1个元素的交换,直到in/2。,5.2.4 一维数组的基本操作,例5-3 输入N个数据存入数组中,将其倒置存放

14、,并打印输出。 #define N 10 main() int i,t,aN; printf(“Enter %d Numbersn“,N); /* 提示输入数据 */ for(i=0;iN;i+) scanf(“%d“, ,3一维数组的倒置,5.2.4 一维数组的基本操作,5.2.5 一维数组的应用举例,例5-4 编程求某班20个学生某门课程考试的平均成绩及高于平均成绩的学生人数。 #define NUM 20 /* 声明代表班上学生人数的符号常量*/ main() int aNUM, i,n; float sum,aver; sum = 0; /* 给sum赋初值 */ printf(“En

15、ter Student Scoren“); /* 提示用户输入学生成绩*/ for(i=0;iaver) n+; printf(“The Class Average Score is:%fn“ ,aver); printf(“The Total Number is:%dn“,n); ,5.2.5 一维数组的应用举例,例5-5 例5-4中如果还要统计09,1019,2029,.8089,9099分数段及100分的学生人。 编程分析:则可另用数组bn来存各分数段的人数,并用bn0存09分的人数,bn1存1019分的人数,bn9存9099分的人数,bn10存100分的人数。,5.2.5 一维数组的应用举例,#define NUM 20 /* 声明代表班上学生人数的符号常量*/ main() int aNUM,bn11=0,i,k; float sum,aver; printf(“Enter Student Scoren“); /* 提示用户输入学生成绩*/ for(i=0;iNUM;i+)

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号