《预处理和语句》PPT课件.ppt

上传人:牧羊曲112 文档编号:5620289 上传时间:2023-08-03 格式:PPT 页数:31 大小:1.09MB
返回 下载 相关 举报
《预处理和语句》PPT课件.ppt_第1页
第1页 / 共31页
《预处理和语句》PPT课件.ppt_第2页
第2页 / 共31页
《预处理和语句》PPT课件.ppt_第3页
第3页 / 共31页
《预处理和语句》PPT课件.ppt_第4页
第4页 / 共31页
《预处理和语句》PPT课件.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《《预处理和语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《预处理和语句》PPT课件.ppt(31页珍藏版)》请在三一办公上搜索。

1、龚涛,东华大学信息科学与技术学院,1,第3章 预处理和语句,转向语句,循环语句,选择语句,语句,预处理功能,龚涛,东华大学信息科学与技术学院,2,C+语言程序是由若干个文件组成的,文件又是由若干个函数组成的,而函数便是由若干个语句组成。每条语句实现一个操作,若干个语句实现一种功能。C+语句的预处理功能是指C+语言源程序中可以包含使用的各种编译命令,而这些编译命令由于它们是在程序被正常编译之前执行的,故称为预处理命令(或指令)。这些命令所实现的功能称为预处理功能。预处理命令是编译命令,它不是语句,不要用分号结束。文件包含命令条件编译命令宏定义命令,3.1 预处理功能,第3章 预处理和语句,龚涛,

2、东华大学信息科学与技术学院,3,3.1.1 文件包含命令,3.1 预处理功能,文件包含命令格式如下:#include 或者#include 文件名 文件名以尖括号()括起是指那些由系统提供的并放在指定子目录中的头文件;文件名以双括号()括起是指那些由用户自己定义的放在当前目录或其他目录下的头文件或其他源文件。一条文件包含命令只能包含一个文件。若想包含多个文件,则必须用多条文件包含命令。在被包含的文件中还可以使用文件包含命令,文件包含命令可以嵌套使用。包含不宜太多。,龚涛,东华大学信息科学与技术学院,4,3.1.2 条件编译命令,条件编译命令是用来定义某些编译内容要在满足一定条件下才参与编译,否

3、则将不参与编译。因此,利用条件编译命令可以使同一个源程序在不同的编译条件下产生不同的目标代码。利用条件编译可在调试程序时增加一些调试语句,以达到跟踪的目的。当程序调试好后,重新编译时,再让调试语句不参与编译。(1)格式一#ifdef#else#endif,3.1 预处理功能,龚涛,东华大学信息科学与技术学院,5,3.1.2 条件编译命令,3.1 预处理功能,(2)格式二#ifndef#else#endif(3)格式二#if#elif#else#endif,龚涛,东华大学信息科学与技术学院,6,3.1.3 宏定义命令,3.1 预处理功能,宏定义命令用来将一个标识符定义为一个字符串。该标识符被称为

4、宏名,被定义的字符串称为替换文本。(1)简单的宏定义#define 一个标识符被宏定义后,该标识符便是一个宏名。在程序中出现的是宏名。在该程序被编译时,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译。宏替换是简单的代换。,龚涛,东华大学信息科学与技术学院,7,3.1.3 宏定义命令,3.1 预处理功能,使用简单的宏定义可以定义符号常量,但在C+语言中,常用const来定义符号常量。两种方法是有区别的,其主要区别有:const将产生一个具有类型的符号,用#define命令仅产生文本替换,而不管内容是否正确。使用const可以定义一个局部常量,使其作用域局限在一个函数体内。而用#de

5、fine定义的常量,尽管在某个函数体内,但它的作用域是从定义时开始,直到使用#undef取消其定义时为止;如果不取消其定义,则直到整个文件结束。使用const定义常量是一个说明语句,以分号结束;而用#define定义常量是一个预处理命令,不能用分号结束。,龚涛,东华大学信息科学与技术学院,8,3.1.3 宏定义命令,3.1 预处理功能,(2)带参数的宏定义#define()中可以有一个参数,也可以有多个参数,多个参数用逗号分隔。在替换时,中与参数表中相同的标识符的字符序列将被程序中引用这个宏定义时提供的与该标识符对应的字符序列所替换。在宏定义时出现的参数称为形参,在程序中引用宏定义时出现的参数

6、称为实参。在宏替换时,将用实参来替换中所出现的形参。,龚涛,东华大学信息科学与技术学院,9,3.1.3 宏定义命令,3.1 预处理功能,例3.5 分析下列程序的输出结果。#include void main()int b(5);#define b 2#define f(x)b*(x)int y(3);coutf(y+1)endl;#undef b coutf(y+1)endl;#define b 3 coutf(y+1)endl;,程序中出现了#define和#undef预处理命令。在宏定义中,有简单的,也有带参数的。在宏定义#define f(x)b*(x)中,如果对b的宏定义没有取消,那么

7、b是符号常量b,而不是变量b,因为预处理命令在编译之前执行。,龚涛,东华大学信息科学与技术学院,10,C+语言提供了丰富的语句,这些语句足以组成结构化程序设计所需要的3种基本控制结构:连续结构、选择结构和循环结构。C+语言所提供的语句包括如下几种:表达式语句和空语句;复合语句;选择语句;循环语句;转向语句。,3.2 语句,第3章 预处理和语句,龚涛,东华大学信息科学与技术学院,11,3.2.1 表达式语句和空语句,3.2 语句,C+语言中任何一个表达式加上分号(“;”)便是表达式语句。空语句是指只有一个分号的语句。a=3*b;x=a|b,龚涛,东华大学信息科学与技术学院,12,3.2.2 复合

8、语句和空语句,3.2 语句,复合语句是由两条或两条以上的语句组成,并由一对花括号()括起来的语句。复合语句在语法上相当于一条语句,复合语句又称为块语句。复合语句可以嵌套,即复合语句中还可以包含复合语句。含有一条或多条说明语句的复合语句称为分程序,也称为块结构。复合语句常用来作为if语句的if体、else体,或者作为循环语句的循环体等。,龚涛,东华大学信息科学与技术学院,13,3.3 选择语句,选择语句是C+语言程序经常使用的语句,可用它构成选择结构。选择语句有两种:一种是条件语句,即if语句;另一种是开关语句,即switch语句。它们都可以用来实现多路分支。这种语句具有一定的判断能力,它可以根

9、据给定的条件来决定执行哪些语句,不执行哪些语句。,第3章 预处理和语句,龚涛,东华大学信息科学与技术学院,14,3.3.1 条件语句,3.3 选择语句,条件语句具有如下格式:if()else if()else if()else if()else 其中,if,else if,else是关键字。if(),龚涛,东华大学信息科学与技术学院,15,3.3.1 条件语句,3.3 选择语句,例3.6 比较两个数的大小。#include void main()int x,y;coutxy;if(x!=y)if(xy)coutyendl;else coutxyn;else coutx=yn;,龚涛,东华大学信

10、息科学与技术学院,16,3.3.1 条件语句,3.3 选择语句,例3.7 分析下列程序的输出结果。#include void main()int a,b;a=b=5;if(a=1)if(b=5)a+=b;coutaendl;else a-=b;coutaendl;couta+bendl;,该程序中出现了if语句的嵌套,这里只有一个else,它显然应该属于距它最近的if,即属于if(b=5)的else。,龚涛,东华大学信息科学与技术学院,17,3.3.2 开关语句,3.3 选择语句,开关语句具有如下格式:switch()case:case:case:default:;其中,先计算switch后面

11、括号内的表达式的值,然后,将该值与花括号内case后面的的值进行比较。,龚涛,东华大学信息科学与技术学院,18,3.3.2 开关语句,3.3 选择语句,例3.9 编程统计从键盘上输入的数字中每种数字的个数和其他字符的个数,并以字符$作为输入结束符。#include void main()char c;int nother(0),ndigit10;for(int i=0;ic;while(c!=$)switch(c)case 0:case 1:case 2:case 3:case 4:,case 5:case 6:case 7:case 8:case 9:+ndigitc-0;break;def

12、ault:+nother;cinc;coutdigiter=;for(i=0;i10;i+)coutndigiti;coutnother=notherendl;,龚涛,东华大学信息科学与技术学院,19,3.4 循环语句,C+语言中提供了3种循环语句:一种是while循环语句,一种是do-while循环语句,另一种是for循环语句。它们的共同特点是根据循环条件来判断是否执行循环体。3.4.1 while循环语句 该语句格式如下:while()其中,该条件给出了一个表达式,通过计算该表达式,可决定是否执行循环体。当表达式的值为非零时,执行循环体;否则退出该循环,即执行该循环后边的语句。,第3章 预

13、处理和语句,龚涛,东华大学信息科学与技术学院,20,3.4.1 while循环语句,3.4 循环语句,例3.11 编程求出自然数110之和。#include void main()int i(1),sum(0);while(i=10)sum+=i;i+;coutsum=sumendl;,龚涛,东华大学信息科学与技术学院,21,3.4.2 do-while循环语句,3.4 循环语句,该循环语句具有如下格式:do while();该循环语句的功能如下:先执行一次(即循环体),然后计算所给出的表达式值。如果其值为非零,则再次执行循环体,直到其值为零才退出该循环,并执行该循环后边的语句。do-whil

14、e循环与while循环的区别在于do-while循环至少执行一次循环体,而while循环可能一次也不执行循环体。,龚涛,东华大学信息科学与技术学院,22,3.4.2 do-while循环语句,3.4 循环语句,例3.12 用do-while循环编程求出自然数110之和。#include void main()int i(1),sum(0);do sum+=i+;while(i=10);coutsum=sumendl;,龚涛,东华大学信息科学与技术学院,23,3.4.3 for循环语句,3.4 循环语句,该循环语句具有如下格式:for(d1;d2;d3)d1表达式用来表示给循环变量初始化;d2表

15、达式用来表示循环是否结束的条件,若该表达式值为非零,则执行循环体,否则退出循环;d3表达式用来作为循环变量的增、减量。在for循环中,d1表达式只计算一次,可以放在for循环前面;d3表达式每执行完循环体后计算一次,可放在循环体中,因此for循环格式可以与while循环互换。,龚涛,东华大学信息科学与技术学院,24,3.4.4 多重循环,3.4 循环语句,所谓多重循环是指在循环体内还有循环语句,这又称为循环的嵌套。C+语言中提出的上述3种循环不仅可以自身嵌套,而且可以相互嵌套。嵌套时应该注意的是要在一个循环体内包含另一个完整的循环结构。do-while循环的自身嵌套for循环内嵌套while循

16、环while循环内嵌套for循环,for循环又自身嵌套while循环内嵌套do-while循环for循环内嵌套while循环和do-while循环,龚涛,东华大学信息科学与技术学院,25,3.4.4 多重循环,3.4 循环语句,例3.15 分析下列程序的输出结果。#include void main()int i(1),a(0);for(;i=5;i+)do i+;a+;while(i3);i+;couta,iendl;,龚涛,东华大学信息科学与技术学院,26,3.4.4 多重循环,3.4 循环语句,例3.16 编程求出50100之内的素数。#include#include#define MI

17、N 51#define MAX 100void main()int i,j,k,n(0);for(i=MIN;i=k+1)if(n%6=0)coutendl;n+;cout i;coutendl;,龚涛,东华大学信息科学与技术学院,27,3.5 转向语句,C+语言中提供了goto、break和continue等转向语句。其中,goto是非结构化控制语句,而break和continue是半结构化控制语句,它们会改变语句的执行顺序,因此,应在程序中尽量少用。goto语句:goto;break语句:break;用于退出开关语句;用于退出该重循环。continue语句:continue;该语句只在循环

18、体中用来结束该次循环。,第3章 预处理和语句,龚涛,东华大学信息科学与技术学院,28,3.5.1 goto语句,3.5 转向语句,例3.18 编程程序,从一个已知的二维数组中查找出第一次出现负数的数组元素。#include void main()int j,num23;coutnumij;for(i=0;i2;i+)for(j=0;j3;j+)if(numij0)goto found;coutnot found!n;goto end;found:coutnumijnumijendl;end:;,龚涛,东华大学信息科学与技术学院,29,3.5.1 goto语句,3.5 转向语句,例3.18 不用

19、goto语句编程从已知的二维数组中查找出第一次出现负数的数组元素。#include void main()int j,num23,flag=0;coutnumij;for(i=0;i2,龚涛,东华大学信息科学与技术学院,30,3.5.2 break语句,3.5 转向语句,例3.19 编程将从键盘上输入的若干个正数求和,遇到负数则终止程序,并且输入的数不超过10个。#include#define M 10void main()int num,sum(0);coutnum;if(num0)break;sum+=num;coutsum=sumendl;,龚涛,东华大学信息科学与技术学院,31,3.5.3 continue语句,3.5 转向语句,例3.20 编程计算从键盘上输入的10个数中的所有整数之和,对负数不进行计算,并显示求和结果。#include#define M 10void main()int num,sum(0);coutnum;if(num0)continue;sum+=num;coutsum=sumendl;,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号