流程控制语句与数组.ppt

上传人:小飞机 文档编号:5995564 上传时间:2023-09-12 格式:PPT 页数:42 大小:1.68MB
返回 下载 相关 举报
流程控制语句与数组.ppt_第1页
第1页 / 共42页
流程控制语句与数组.ppt_第2页
第2页 / 共42页
流程控制语句与数组.ppt_第3页
第3页 / 共42页
流程控制语句与数组.ppt_第4页
第4页 / 共42页
流程控制语句与数组.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《流程控制语句与数组.ppt》由会员分享,可在线阅读,更多相关《流程控制语句与数组.ppt(42页珍藏版)》请在三一办公上搜索。

1、C+程序设计,第二章 流程控制语句与数组,数组 字符串 编译预处理,数组,数组,熟练掌握数组的概念 灵活应用数组与字符串 灵活应用编译预处理,2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义,第二章 流程控制语句与数组,在程序设计中,为了处理方便,而把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。,类型说明符 数组名 常量表达式,;,int a10;/说明整型数组a有10个元素float b10;/说明浮点型数组b有10个元素char c20;/说明字符数组c有20个元素,2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义,第二章

2、流程控制语句与数组,定义数组时需要注意6点:,数组的类型是指数组元素的类型。同一个数组的所有元素数据类型都相同。,数组名的书写规则应符合标识符的书写规定。,数组名不能与其他变量名相同。,2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义,第二章 流程控制语句与数组,定义数组时需要注意6点:,方括号中常量表达式表示数组元素的个数。其数组元素的下标从0开始计算。,不能在方括号中用变量来表示元素的个数,但是可以是符号常量或常量表达式。,允许在同一个类型说明中,说明多个数组和多个变量。,2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义,第二章 流程控制语句与数组,#define

3、FD 5int i=5;,正确,错误,正确,正确,错误,正确,int s15;,int s2i;,int s3FD;,int s43+2;,int s53+i;,int s63+FD;,2.2 数组和字符串2.2.1 数组的基本概念2.数组元素的访问,第二章 流程控制语句与数组,数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。,数组名下标,下标从0开始,只能为整型常量或整型表达式。,int s5;int i=2;,正确,正确,错误,s0;,si+;,s5;,2.2 数组和字符串2.2.1 数组的基本概念3.数组的赋值,第二章 流程控制语句与数组,给数组赋值的

4、方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。,类型说明符 数组名常量表达式=值,值,值;,初始化赋值,数组初始化赋值是指在数组说明时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。,2.2 数组和字符串2.2.1 数组的基本概念3.数组的赋值,第二章 流程控制语句与数组,给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。,初始化赋值,可以只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。,只能给元素逐个赋值,不能给数组整体赋值。,如给全部元素赋值,则在数组说明中可以不给出

5、数组元素的个数。,2.2 数组和字符串2.2.1 数组的基本概念3.数组的赋值,第二章 流程控制语句与数组,int s10;for(int i=0;i10;i+)si=i;,动态赋值,动态赋值可以在程序执行过程中,对数组作动态赋值。,2.2 数组和字符串2.2.2 二维数组1.二维数组类型说明,第二章 流程控制语句与数组,类型说明符 数组名常量表达式1常量表达式2;,只有一个下标的数组称为一维数组,其数组元素也称为单下标变量。C+语言允许构造多维数组,多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。,二维数组的定义,int a34;,2.2 数组和字符串2.2.2 二维数

6、组1.二维数组类型说明,第二章 流程控制语句与数组,如何在一维存储器中存放二维数组,可以有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列。在C+语言中,二维数组是按行排列的。,二维数组的存储,a00a01a02a03a10a11a12a13a20a21a22a23,2.2 数组和字符串2.2.2 二维数组2.二维数元素的表示方法,第二章 流程控制语句与数组,二维数组的元素也称为双下标变量。,数组名下标下标,int i,j,s=0,l,a53;printf(input scoren);for(i=0;i3;i+)for(j=0;j5;j+

7、)scanf(%d,2.2 数组和字符串2.2.2 二维数组3.二维数组的初始化,第二章 流程控制语句与数组,int a53=80,75,92,61,65,71,59,63,70,85,87,90,76,77,85;,按行分段赋值,int a53=80,75,92,61,65,71,59,63,70,85,87,90,76,77,85;,按行连续赋值,2.2 数组和字符串2.2.2 二维数组3.二维数组的初始化,第二章 流程控制语句与数组,int a33=1,2,3;/对每一行的第一列元素赋值。,可以只对部分元素赋初值,未赋初值的元素自动取0值,2.2 数组和字符串2.2.2 二维数组3.二维

8、数组的初始化,第二章 流程控制语句与数组,int a33=1,2,3,4,5,6,7,8,9;,对全部元素赋初值,则第一维的长度可以不给出,int a3=1,2,3,4,5,6,7,8,9;,等效于,2.2 数组和字符串2.2.3 字符数组1.字符数组定义与赋值,第二章 流程控制语句与数组,用来存放字符量的数组称为字符数组。,char c10;,char c10=c,p,r,o,g,r,a,m,.;char c=c,p,r,o,g,r,a,m,.;,2.2 数组和字符串2.2.3 字符数组2.字符数组与字符串,第二章 流程控制语句与数组,字符串在C语言中没有专门的字符串变量,通常用一个字符数组

9、来存放一个字符串。,char c=C,p,r,o,g,r,a,m;/可写为:char c=C program;/或去掉写为:char c=C program;,字符数组初始化,用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志0。,2.2 数组和字符串2.2.4 字符串常用函数,第二章 流程控制语句与数组,用于输入输出的字符串函数,在使用前应包含头文件stdio.h,使用其他字符串函数,则应包含头文件string.h。,2.2 数组和字符串2.2.4 字符串常用函数1.字符串输出函数puts,第二章 流程控制语句与数组,把字符数组中的字符串输出到显示器。,puts(字符数组

10、名);,#include stdio.hvoid main()char c=BASICndBASE;puts(c);,功能,函数原型,示例,2.2 数组和字符串2.2.4 字符串常用函数2.字符串输入函数gets,第二章 流程控制语句与数组,从标准输入设备键盘上输入一个字符串。,gets(字符数组名);,#includestdio.hvoid main()char st15;gets(st);,功能,函数原型,示例,gets函数以回车作为输入结束,2.2 数组和字符串2.2.4 字符串常用函数3.字符串连接函数strcat,第二章 流程控制语句与数组,把字符数组2中的字符串连接到字符数组1 中

11、字符串的后面,并删去字符串1后的串标志“0”。,strcat(字符数组名1,字符数组名2),#include stdio.h#include string.hvoid main()char st130=My name is;char st210=“game;strcat(st1,st2);,功能,函数原型,示例,字符数组1应定义足够的长度。,2.2 数组和字符串2.2.4 字符串常用函数4.字符串拷贝函数strcpy,第二章 流程控制语句与数组,把字符数组2中的字符串拷贝到字符数组1中。串结束标志0也一同拷贝。,strcpy(字符数组名1,字符数组名2),#include stdio.h#in

12、clude string.hvoid main()char st115,st2=C Language;strcpy(st1,st2);,功能,函数原型,示例,字符数组1应定义足够的长度。,2.2 数组和字符串2.2.4 字符串常用函数5.字符串比较函数strcmp-0,第二章 流程控制语句与数组,按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。,strcmp(字符数组名1,字符数组名2),字符串1=字符串2,返回值=0;字符串1字符串2,返回值0;字符串1字符串2,返回值0。,功能,函数原型,返回值,比较时顺序比较字符串。,2.2 数组和字符串2.2.4 字符串常用函数

13、6.测字符串长度函数strlen,第二章 流程控制语句与数组,测字符串的实际长度(不含字符串结束标志0)并作为函数返回值。,strlen(字符数组名),#include stdio.h#include string.hvoid main()int k;char st=C language;k=strlen(st);,功能,函数原型,示例,2.3 编译预处理2.3.1 宏定义,第二章 流程控制语句与数组,在C+源程序中允许用一个标识符来表示一个字符串,称为“宏”。在编译预处理时,对程序代码中所有出现的“宏名”,都用宏定义中的字符串去代换,称为“宏代换”或“宏展开”。,#define OK 100

14、int i=5;int a;a=i+OK;,int i=5;int a;a=i+100;,宏代换,2.3 编译预处理2.3.1 宏定义1.无参宏定义,第二章 流程控制语句与数组,无参宏的宏名后不带参数。,#define 标识符 字符串,#define PI 3.1415926#define PIDIV2(3.1415926*0.5),一般形式,示例,2.3 编译预处理2.3.1 宏定义1.无参宏定义,第二章 流程控制语句与数组,使用无参宏定义需要注意5点:,宏定义只是一种简单的文本代换,字符串中可以含任何字符,预处理程序对它不作任何检查。,宏定义不是说明或语句,在行末不要加分号,如加上分号则连

15、分号也一起置换。,宏定义必须写在函数之外,其作用域为从宏定义命令到源程序结束。,2.3 编译预处理2.3.1 宏定义1.无参宏定义,第二章 流程控制语句与数组,使用无参宏定义需要注意5点:,宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。,宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。,2.3 编译预处理2.3.1 宏定义2.带参宏定义,第二章 流程控制语句与数组,C+允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数则称为实际参数。,#define 宏名(形参表)字符串,宏名(实参表);,一般形式,调用方式,#define M(y)y*y+3*y/*宏定义*

16、/k=M(5);/*宏调用*/,示例,2.3 编译预处理2.3.1 宏定义2.带参宏定义,第二章 流程控制语句与数组,使用带参宏定义需要注意:,带参宏定义中,宏名和形参表之间不能有空格出现。,在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义。,在有参宏定义中,字符串内的形参和字符串通常要用括号括起来。,2.3 编译预处理2.3.1 宏定义2.带参宏定义,第二章 流程控制语句与数组,使用带参宏定义需要注意:,带参的宏和带参函数很相似,但有本质上的不同。,宏也可用来定义多条语句,宏调用展开后,将产生多条语句。,2.3 编译预处理2.3.2 文件包含,第二章 流程控制语句与数组,文件包含命

17、令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。,#include 文件名,一般形式,#include#include math.h,示例,2.3 编译预处理2.3.2 文件包含,第二章 流程控制语句与数组,使用文件包含需要注意:,使用尖括号表示在系统目录中查找,而不在源文件目录中查找;使用双引号则表示首先在当前的源文件目录中查找,若未找到才到系统目录中查找。,一个include命令只能指定一个被包含文件。,文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。,2.3 编译预处理2.3.3 条件编译1.ifdef条件,第二章 流程

18、控制语句与数组,#ifdef 标识符 程序段1#else 程序段2#endif,一般形式,如果标识符已被#define命令定义过,则对程序段1进行编译;否则对程序段2进行编译。,功能说明,2.3 编译预处理2.3.3 条件编译2.ifndef条件,第二章 流程控制语句与数组,#ifndef 标识符 程序段1#else 程序段2#endif,一般形式,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。,功能说明,2.3 编译预处理2.3.3 条件编译3.if条件,第二章 流程控制语句与数组,#if 常量表达式 程序段1#else 程序段2#endif,一般形式,

19、如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译。,功能说明,小结(理论课),第二章 流程控制语句与数组,数组字符数组宏定义文件包含条件编译,小测验,第二章 流程控制语句与数组,选择题(单选题)1以下定义语句中,错误的是(D)A int a=1,2;B char a3;C char s10=test;D int n=5,an;2以下数组定义中不正确的是(D)。A.int a23;B.int b3=0,1,2,3;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4;3以下不能正确进行字符串赋初值的语句是(A)。A.char str5=g

20、ood!;B.char str=good!;C.char*str=good!;D.char str5=g,o,o,d;,小测验(答案),第二章 流程控制语句与数组,选择题(单选题)1以下定义语句中,错误的是(D)A int a=1,2;B char a3;C char s10=test;D int n=5,an;2以下数组定义中不正确的是(D)。A.int a23;B.int b3=0,1,2,3;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4;3以下不能正确进行字符串赋初值的语句是(A)。A.char str5=good!;B.char str=good!;C.char*str=good!;D.char str5=g,o,o,d;,课后作业,第二章 流程控制语句与数组,【作业1】输入5个国家的名称,按字母顺序排序,【作业2】输入一个园的半径,计算其面积,思路分析:用一个字符数组保存5个国家的名称,利用字符串比较函数进行对比,思路分析:用宏定义定义PI的值,在程序中使用PI进行计算,第二章 流程控制语句与数组,The End,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号