《流程控制语句与数组.ppt》由会员分享,可在线阅读,更多相关《流程控制语句与数组.ppt(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、IC-MSPC+程序设计程序设计IC-MSP第二章第二章 流程控制语句与数组流程控制语句与数组l 数组l 字符串l 编译预处理n 数组数组u 数组数组 熟练掌握数组的概念熟练掌握数组的概念 灵活应用数组与字符串灵活应用数组与字符串 灵活应用编译预处理灵活应用编译预处理IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义第二章第二章 流程控制语句与数组流程控制语句与数组在程序设计中,为了处理方便,而把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。类型说明符 数组名 常量表达式,;int a10;/说明整型数组a有10个元素float
2、b10;/说明浮点型数组b有10个元素char c20;/说明字符数组c有20个元素IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义第二章第二章 流程控制语句与数组流程控制语句与数组定义数组时需要注意6点:数组的类型是指数组元素的类型。同一个数组的所有元素数据类型都相同。数组名的书写规则应符合标识符的书写规定。数组名不能与其他变量名相同。IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义第二章第二章 流程控制语句与数组流程控制语句与数组定义数组时需要注意6点:方括号中常量表达式表示数组元素的个数。其数组元素的下标从0开始计算。不能在方括号中用变
3、量来表示元素的个数,但是可以是符号常量或常量表达式。允许在同一个类型说明中,说明多个数组和多个变量。IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念1.数组的定义第二章第二章 流程控制语句与数组流程控制语句与数组#define FD 5int i=5;正确错误正确正确错误正确int s15;int s2i;int s3FD;int s43+2;int s53+i;int s63+FD;IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念2.数组元素的访问第二章第二章 流程控制语句与数组流程控制语句与数组数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后
4、跟一个下标。数组名下标下标从0开始,只能为整型常量或整型表达式。int s5;int i=2;正确正确错误s0;si+;s5;IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念3.数组的赋值第二章第二章 流程控制语句与数组流程控制语句与数组给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。类型说明符 数组名常量表达式=值,值,值;初始化赋值数组初始化赋值是指在数组说明时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念3.数组的赋值第二章第二章 流程控制语句
5、与数组流程控制语句与数组给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。初始化赋值可以只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。只能给元素逐个赋值,不能给数组整体赋值。如给全部元素赋值,则在数组说明中可以不给出数组元素的个数。IC-MSPv2.2 数组和字符串2.2.1 数组的基本概念3.数组的赋值第二章第二章 流程控制语句与数组流程控制语句与数组int s10;for(int i=0;i10;i+)si=i;动态赋值动态赋值可以在程序执行过程中,对数组作动态赋值。IC-MSPv2.2 数组和字符串2.2.2 二维数组1.二
6、维数组类型说明第二章第二章 流程控制语句与数组流程控制语句与数组类型说明符 数组名常量表达式1常量表达式2;只有一个下标的数组称为一维数组,其数组元素也称为单下标变量。C+语言允许构造多维数组,多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。二维数组的定义int a34;IC-MSPv2.2 数组和字符串2.2.2 二维数组1.二维数组类型说明第二章第二章 流程控制语句与数组流程控制语句与数组如何在一维存储器中存放二维数组,可以有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列。在C+语言中,二维数组是按行排列的。二
7、维数组的存储a00a01 a02 a03a10a11 a12 a13a20a21 a22 a23IC-MSPv2.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+)scanf(%d,&aji);IC-MSPv2.2 数组和字符串2.2.2 二维数组3.二维数组的初始化第二章第二章 流程控制语句与数组流程控制语句与数组int a53=80,75,92,61,
8、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;按行连续赋值IC-MSPv2.2 数组和字符串2.2.2 二维数组3.二维数组的初始化第二章第二章 流程控制语句与数组流程控制语句与数组int a33=1,2,3;/对每一行的第一列元素赋值。可以只对部分元素赋初值,未赋初值的元素自动取0值IC-MSPv2.2 数组和字符串2.2.2 二维数组3.二维数组的初始化第二章第二章 流程控制语句与数组流程控制语句与数组int a33=1,2,3,4,5,6,7,8,9;
9、对全部元素赋初值,则第一维的长度可以不给出int a3=1,2,3,4,5,6,7,8,9;等效于IC-MSPv2.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,.;IC-MSPv2.2 数组和字符串2.2.3 字符数组2.字符数组与字符串第二章第二章 流程控制语句与数组流程控制语句与数组字符串在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。char c=C,p,
10、r,o,g,r,a,m;/可写为:char c=C program;/或去掉写为:char c=C program;字符数组初始化用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志0。IC-MSPv2.2 数组和字符串2.2.4 字符串常用函数第二章第二章 流程控制语句与数组流程控制语句与数组用于输入输出的字符串函数,在使用前应包含头文件stdio.h,使用其他字符串函数,则应包含头文件string.h。功能函数名称字符串输出函数puts字符串输入函数gets字符串连接函数strcat字符串拷贝函数strcpy字符串比较函数strcmp字符串测长度函数strlenIC-MS
11、Pv2.2 数组和字符串2.2.4 字符串常用函数1.字符串输出函数puts第二章第二章 流程控制语句与数组流程控制语句与数组把字符数组中的字符串输出到显示器。puts(字符数组名);#include stdio.hvoid main()char c=BASICndBASE;puts(c);功能函数原型示例IC-MSPv2.2 数组和字符串2.2.4 字符串常用函数2.字符串输入函数gets第二章第二章 流程控制语句与数组流程控制语句与数组从标准输入设备键盘上输入一个字符串。gets(字符数组名);#includestdio.hvoid main()char st15;gets(st);功能函
12、数原型示例gets函数以回车作为输入结束IC-MSPv2.2 数组和字符串2.2.4 字符串常用函数3.字符串连接函数strcat 第二章第二章 流程控制语句与数组流程控制语句与数组把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“0”。strcat(字符数组名1,字符数组名2)#include stdio.h#include string.hvoid main()char st130=My name is;char st210=“game;strcat(st1,st2);功能函数原型示例字符数组1应定义足够的长度。IC-MSPv2.2 数组和字符串2.2.4
13、字符串常用函数4.字符串拷贝函数strcpy 第二章第二章 流程控制语句与数组流程控制语句与数组把字符数组2中的字符串拷贝到字符数组1中。串结束标志0也一同拷贝。strcpy(字符数组名1,字符数组名2)#include stdio.h#include string.hvoid main()char st115,st2=C Language;strcpy(st1,st2);功能函数原型示例字符数组1应定义足够的长度。IC-MSPv2.2 数组和字符串2.2.4 字符串常用函数5.字符串比较函数strcmp-0第二章第二章 流程控制语句与数组流程控制语句与数组按照ASCII码顺序比较两个数组中的
14、字符串,并由函数返回值返回比较结果。strcmp(字符数组名1,字符数组名2)字符串1=字符串2,返回值=0;字符串1字符串2,返回值0;字符串1字符串2,返回值0。功能函数原型返回值比较时顺序比较字符串。IC-MSPv2.2 数组和字符串2.2.4 字符串常用函数6.测字符串长度函数strlen 第二章第二章 流程控制语句与数组流程控制语句与数组测字符串的实际长度(不含字符串结束标志0)并作为函数返回值。strlen(字符数组名)#include stdio.h#include string.hvoid main()int k;char st=C language;k=strlen(st);
15、功能函数原型示例IC-MSPv2.3 编译预处理2.3.1 宏定义第二章第二章 流程控制语句与数组流程控制语句与数组在C+源程序中允许用一个标识符来表示一个字符串,称为“宏”。在编译预处理时,对程序代码中所有出现的“宏名”,都用宏定义中的字符串去代换,称为“宏代换”或“宏展开”。#define OK 100int i=5;int a;a=i+OK;int i=5;int a;a=i+100;宏代换IC-MSPv2.3 编译预处理2.3.1 宏定义1.无参宏定义 第二章第二章 流程控制语句与数组流程控制语句与数组无参宏的宏名后不带参数。#define 标识符 字符串#define PI 3.14
16、15926#define PIDIV2(3.1415926*0.5)一般形式示例IC-MSPv2.3 编译预处理2.3.1 宏定义1.无参宏定义 第二章第二章 流程控制语句与数组流程控制语句与数组使用无参宏定义需要注意5点:宏定义只是一种简单的文本代换,字符串中可以含任何字符,预处理程序对它不作任何检查。宏定义不是说明或语句,在行末不要加分号,如加上分号则连分号也一起置换。宏定义必须写在函数之外,其作用域为从宏定义命令到源程序结束。IC-MSPv2.3 编译预处理2.3.1 宏定义1.无参宏定义 第二章第二章 流程控制语句与数组流程控制语句与数组使用无参宏定义需要注意5点:宏名在源程序中若用引
17、号括起来,则预处理程序不对其作宏代换。宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。IC-MSPv2.3 编译预处理2.3.1 宏定义2.带参宏定义 第二章第二章 流程控制语句与数组流程控制语句与数组C+允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数则称为实际参数。#define 宏名(形参表)字符串 宏名(实参表);一般形式调用方式#define M(y)y*y+3*y/*宏定义*/k=M(5);/*宏调用*/示例IC-MSPv2.3 编译预处理2.3.1 宏定义2.带参宏定义 第二章第二章 流程控制语句与数组流程控制语句与数组使用带参宏定义需要注意:带参宏定义中
18、,宏名和形参表之间不能有空格出现。在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义。在有参宏定义中,字符串内的形参和字符串通常要用括号括起来。IC-MSPv2.3 编译预处理2.3.1 宏定义2.带参宏定义 第二章第二章 流程控制语句与数组流程控制语句与数组使用带参宏定义需要注意:带参的宏和带参函数很相似,但有本质上的不同。宏也可用来定义多条语句,宏调用展开后,将产生多条语句。IC-MSPv2.3 编译预处理2.3.2 文件包含第二章第二章 流程控制语句与数组流程控制语句与数组文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文
19、件。#include 文件名一般形式#include#include math.h示例IC-MSPv2.3 编译预处理2.3.2 文件包含 第二章第二章 流程控制语句与数组流程控制语句与数组使用文件包含需要注意:使用尖括号表示在系统目录中查找,而不在源文件目录中查找;使用双引号则表示首先在当前的源文件目录中查找,若未找到才到系统目录中查找。一个include命令只能指定一个被包含文件。文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。IC-MSPv2.3 编译预处理2.3.3 条件编译1.ifdef条件第二章第二章 流程控制语句与数组流程控制语句与数组#ifdef 标识符 程序段1
20、#else 程序段2#endif 一般形式如果标识符已被#define命令定义过,则对程序段1进行编译;否则对程序段2进行编译。功能说明IC-MSPv2.3 编译预处理2.3.3 条件编译2.ifndef条件第二章第二章 流程控制语句与数组流程控制语句与数组#ifndef 标识符 程序段1#else 程序段2#endif 一般形式如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。功能说明IC-MSPv2.3 编译预处理2.3.3 条件编译3.if条件第二章第二章 流程控制语句与数组流程控制语句与数组#if 常量表达式 程序段1#else 程序段2#endif一
21、般形式如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译。功能说明IC-MSPv 小结(理论课)第二章第二章 流程控制语句与数组流程控制语句与数组数组字符数组宏定义文件包含条件编译IC-MSPv小测验第二章第二章 流程控制语句与数组流程控制语句与数组1.选择题(单选题)选择题(单选题)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
22、 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;IC-MSPv小测验(答案)第二章第二章 流程控制语句与数组流程控制语句与数组1.选择题(单选题)选择题(单选题)1以下定义语句中,错误的是(以下定义语句中,错误的是(D)A int a=1,2;B char a3;C char s10=test;D int n=5,an;2以下数组定义中不
23、正确的是(以下数组定义中不正确的是(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;IC-MSPv课后作业第二章第二章 流程控制语句与数组流程控制语句与数组【作业作业1】输入输入5个国家的名称,按字母顺序排序个国家的名称,按字母顺序排序【作业作业2】输入一个园的半径,计算其面积输入一个园的半径,计算其面积思路分析:用一个字符数组保存思路分析:用一个字符数组保存5个国家的名称,利用字符串比较函数进个国家的名称,利用字符串比较函数进行对比行对比思路分析:用宏定义定义思路分析:用宏定义定义PI的值,在程序中使用的值,在程序中使用PI进行计算进行计算IC-MSP第二章第二章 流程控制语句与数组流程控制语句与数组The End