谭浩强C程序设计课件第3章

上传人:仙*** 文档编号:168504975 上传时间:2022-11-10 格式:PPT 页数:69 大小:494.02KB
收藏 版权申诉 举报 下载
谭浩强C程序设计课件第3章_第1页
第1页 / 共69页
谭浩强C程序设计课件第3章_第2页
第2页 / 共69页
谭浩强C程序设计课件第3章_第3页
第3页 / 共69页
资源描述:

《谭浩强C程序设计课件第3章》由会员分享,可在线阅读,更多相关《谭浩强C程序设计课件第3章(69页珍藏版)》请在装配图网上搜索。

1、第第3章章 程序设计初步程序设计初步第第4章章 函数与预处理函数与预处理第第5章章 数组数组第第6章章 指针指针第第7章章 自定义数据类型自定义数据类型第第2 2篇篇面向过程的程序设计面向过程的程序设计第第3章章 程序设计初步程序设计初步3.1 面向过程的程序设计和算法面向过程的程序设计和算法3.2 +程序和语句程序和语句3.3 赋值语句赋值语句3.4 C+的输入与输出的输入与输出3.5 编写顺序结构的程序编写顺序结构的程序3.6 关系运算和逻辑运算关系运算和逻辑运算3.7 选择结构和语句选择结构和语句3.8 条件运算符和条件表达式条件运算符和条件表达式3.9 多分支选择结构和多分支选择结构和

2、switch语句语句3.10 编写选择结构的程序编写选择结构的程序3.11 循环结构和循环语句循环结构和循环语句3.12 循环的嵌套循环的嵌套3.13 break语句和语句和continue语句语句3.14 编写循环结构的程序编写循环结构的程序(1)方法与算法,)方法与算法,程序结构与语句程序结构与语句(哪些语句?);(哪些语句?);(2)输入、输出)输入、输出的实现?的实现?(3)基本程序结)基本程序结构(顺序、条件分构(顺序、条件分支、循环)如何实支、循环)如何实现?现?q在面向过程的程序设计中,程序设计者必须指定在面向过程的程序设计中,程序设计者必须指定计算机执行的具体步骤,清晰程序要计

3、算机执行的具体步骤,清晰程序要“做什么做什么”q清晰清晰“怎么做怎么做”,并写出一个个语句,安排好它,并写出一个个语句,安排好它们的执行顺序。们的执行顺序。q步骤要合理,保证它的步骤要合理,保证它的正确性和具有较高的效率正确性和具有较高的效率,这就是这就是算法(算法(algorithm)需要解决的问题。需要解决的问题。3.1 面向过程的程序设计和算法面向过程的程序设计和算法一个面向过程的程序应包括以下两方面内容:一个面向过程的程序应包括以下两方面内容:(1)对数据的描述对数据的描述。在程序中要指定。在程序中要指定数据的类型和数据的类型和数据的组织形式数据的组织形式,即,即数据结构数据结构(da

4、ta structure)。(2)对操作的描述对操作的描述。即操作步骤,也就是。即操作步骤,也就是算法算法(algorithm)。算法是处理问题的一系列的步骤算法是处理问题的一系列的步骤。对于面向过程的程序,可以用下面的公式表示:对于面向过程的程序,可以用下面的公式表示:程序程序=算法算法+数据结构数据结构 如:处理的数据如何读入与存放?如何处理?结果如:处理的数据如何读入与存放?如何处理?结果如何存放与输出?如何存放与输出?必须考虑与设计清晰!必须考虑与设计清晰!3.1.1 算法的概念算法的概念(3)算法可分为两大类别:)算法可分为两大类别:数值算法和非数值算数值算法和非数值算法法。数值算法

5、的目的是求数值解。非数值算法包括。数值算法的目的是求数值解。非数值算法包括的面十分广泛,最常见的是用于的面十分广泛,最常见的是用于事务管理事务管理领域。领域。C+既支持面向过程的程序设计,又支持面向对象既支持面向过程的程序设计,又支持面向对象的程序设计。无论面向过程的程序设计还是面向对的程序设计。无论面向过程的程序设计还是面向对象的程序设计,都离不开算法设计。象的程序设计,都离不开算法设计。相对内存,处理的数据如何进行输入和输出?相对内存,处理的数据如何进行输入和输出?输入和输出并不是输入和输出并不是C+语言中的正式组成成分。语言中的正式组成成分。C和和C+本身都没有为输入和输出提供专门的语句

6、本身都没有为输入和输出提供专门的语句结结构。输入输出不是由构。输入输出不是由C+本身定义的,而是在本身定义的,而是在编译编译系统提供的系统提供的I/O库中定义的库中定义的。C+的输出和输入是用的输出和输入是用“流流”(stream)的方式实现的方式实现的。图的。图3.2和图和图3.3表示表示C+通过流进行输入输出的通过流进行输入输出的过程。过程。3.4 C+的输入与输出的输入与输出图图3.2图图3.3有关有关流对象流对象cincin、coutcout和和流运算符流运算符的定义等信息是的定义等信息是存放在存放在C+的的输入输出流库输入输出流库中的,因此使用中的,因此使用cin、cout和流运算符

7、,就必须:和流运算符,就必须:#include 为了叙述方便,常常把由为了叙述方便,常常把由cin和流和流提取运算符提取运算符“”实现输入的语句称为实现输入的语句称为输入语句输入语句或或cin语句语句;把由把由cout和流和流插入运算符插入运算符“”实现输出的语句称实现输出的语句称为为输出语句输出语句或或cout语句。语句。流运算符相当于一个输入或输出函数,由对象调用流运算符相当于一个输入或输出函数,由对象调用之。之。cout语句的一般格式为语句的一般格式为 cout表达式表达式1表达式表达式2变量变量1变量变量2变量变量n;输出流中的数据在输出流中的数据在系统默认的设备系统默认的设备(一般为

8、显示器一般为显示器)输出。输出。*3.4.1 输入流与输出流的基本操作输入流与输出流的基本操作有时为了输入输出特殊的要求,如在输出实数时规有时为了输入输出特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对定字段宽度,只保留两位小数,数据向左或向右对齐等。齐等。C+提供了在输入输出流中使用的提供了在输入输出流中使用的控制符控制符(有的书有的书中称为操纵符中称为操纵符),见书中表见书中表3.1。P.53需要注意的是:需要注意的是:如果使用了控制符,在程序单位如果使用了控制符,在程序单位的开头除了要加的开头除了要加iostream头文件外,还要加头文件外,还要加iomanip头

9、文件。具体自学!头文件。具体自学!举例:举例:输出双精度数。输出双精度数。*3.4.2 在输入流与输出流中使用控制符在输入流与输出流中使用控制符double a=123.456789012345;对对a赋初值赋初值(1)couta;输出:输出:123.456 默认为精度默认为精度6(2)coutsetprecision(9)a;输出:输出:123.456789 (3)coutsetprecision(6);恢复默认格式恢复默认格式(精度为精度为6)(4)cout setiosflags(ios fixed);输出:输出:123.456789(5)coutsetiosflags(ios fixe

10、d)setprecision(8)a;输出:输出:123.45678901(6)coutsetiosflags(ios scientific)a;输出:输出:1.234568e+02(7)coutsetiosflags(ios scientific)setprecision(4)a;输出:输出:1.2346e02下面是整数输出的例子:下面是整数输出的例子:int b=123456;对对b赋初值赋初值(1)coutb;输出:输出:123456(2)couthexb;输出:输出:1e240 (3)coutsetiosflags(ios uppercase)b;输出:输出:1E240 (4)cout

11、setw(10)b,b;输出:输出:123456,123456(5)coutsetfill(*)setw(10)b;输出:输出:*123456(6)coutsetiosflags(ios showpos)b;输出:输出:+123456如果在多个如果在多个cout语句中使用相同的语句中使用相同的setw(n),并使用并使用setiosflags(ios right),可以实现各行数据右对齐,可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。如果指定相同的精度,可以实现上下小数点对齐。例例3.1 各行小数点对齐。各行小数点对齐。#include#include using nam

12、espace std;int main()double a=123.456,b=3.14159,c=-3214.67;coutsetiosflags(ios fixed)setiosflags(ios right)setprecision(2);coutsetw(10)aendl;coutsetw(10)bendl;coutsetw(10)cendl;return 0;输出如下:输出如下:123.46 (字段宽度为字段宽度为10,右对齐,取两位小数,右对齐,取两位小数)3.14 -3214.67先统一设置定点形式输出、取两位小数、右对齐。先统一设置定点形式输出、取两位小数、右对齐。这些设置对其

13、后的输出均有效这些设置对其后的输出均有效(除非重新设置除非重新设置),而而setw只对其后一个输出项有效,因此必须在输出只对其后一个输出项有效,因此必须在输出a,b,c之前都要写之前都要写setw(10)。C+中用于输入和输出单个字符的函数:中用于输入和输出单个字符的函数:其中最常用的有其中最常用的有getchar函数和函数和putchar函数。函数。1.putchar函数(字符输出函数)函数(字符输出函数)putchar函数的作用是向终端输出一个字符。例如函数的作用是向终端输出一个字符。例如putchar(c);它输出字符变量的值。它输出字符变量的值。3.4.3 用用getchar和和put

14、char 函数进行字符的输入和输出函数进行字符的输入和输出例例3.2 输出单个字符。输出单个字符。#include /或者包含头文件或者包含头文件stdio.h:#include using namespace std;int main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);putchar(66);putchar(79);putchar(89);putchar(10);return 0;运行结果为运行结果为BOYBOY可以看到:可以看到:用用putchar可以输出转义字符,可以输出转义字符,put

15、char(n)的作用是输出一个换行符,使输出的作用是输出一个换行符,使输出的当前位置移到下一行的开头。的当前位置移到下一行的开头。putchar(66)的作用的作用是将是将66作为作为ASCII码转换为字符输出,码转换为字符输出,66是字母是字母B的的ASCII码,因此码,因此putchar(66)输出字母输出字母B。其余类其余类似。似。putchar(10)中的中的10是换行符的是换行符的ASCII码,码,putchar(10)输出一个换行符,作用与输出一个换行符,作用与putchar(n)相同。相同。也可以输出其他转义字符也可以输出其他转义字符,如,如 putchar(015)(输出回车,

16、不换行,使输出输出回车,不换行,使输出的当前位置移到本行开头)的当前位置移到本行开头)2.getchar函数(字符输入函数)函数(字符输入函数)此函数的作用是从终端输入一个字符。其一般形式此函数的作用是从终端输入一个字符。其一般形式为为getchar(),),函数的值就是从输入设备得到的函数的值就是从输入设备得到的字符。字符。例例3.3 输入单个字符。输入单个字符。#include using namespace std;int main()char c;c=getchar();putchar(c+32);putchar(n);return 0;在运行时,如果从键盘输入大写字母在运行时,如果从

17、键盘输入大写字母A并按回车并按回车键,就会在屏幕上输出小写字母键,就会在屏幕上输出小写字母a。请注意,请注意,getchar()只能接收一个字符只能接收一个字符。getchar函函数得到的字符可以赋给一个字符变量或整型变量,数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。也可以不赋给任何变量,作为表达式的一部分。例例3.5 求方程求方程ax2+bx+c=0的根。的根。a,b,c由键盘输入。由键盘输入。#include#include /!using namespace std;int main()float a,b,c,x1,x2;cinabc;x1=(-

18、b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);coutx1=x1endl;coutx2=x2endl;return 0;3.5 编写顺序结构的程序编写顺序结构的程序运行情况如下:运行情况如下:4.5 8.8 2.4 x1=-0.327612x2=-1.17794如果程序中要用到数学函数,都要包含头文件如果程序中要用到数学函数,都要包含头文件cmath(也可以用老形式的头文件也可以用老形式的头文件math.h,但提倡使但提倡使用用C+新形式的头文件,请参阅第新形式的头文件,请参阅第14章章14.3节节)。在。在写程序时,一定要注意将数学

19、表达式正确地转换成写程序时,一定要注意将数学表达式正确地转换成合法的合法的C+表达式。表达式。可以看到:可以看到:顺序结构的程序中的各执行语句是顺顺序结构的程序中的各执行语句是顺序执行的。这种程序最简单,最容易理解序执行的。这种程序最简单,最容易理解。C+提供提供if语句来实现这种条件选择。语句来实现这种条件选择。条件如何形成呢?条件如何形成呢?简单条件简单条件复合条件复合条件3.6 关系运算和逻辑运算关系运算和逻辑运算C+的关系运算符有:的关系运算符有:(小于小于)(大于大于)=(大于或等于大于或等于)=(等于等于)!=(不等于不等于)优先级相同优先级相同(低低)3.6.1 关系运算和关系表

20、达式关系运算和关系表达式C+增加了逻辑型数据。逻辑型常量只有两个,即增加了逻辑型数据。逻辑型常量只有两个,即false(假假)和和true(真真)。逻辑型变量要用类型标识符逻辑型变量要用类型标识符boolbool来定义来定义,它的值只,它的值只能是能是true和和false之一。如之一。如bool found,flag=false;/定义逻辑变量定义逻辑变量found和和flag,并使并使flag的初值的初值 为为falsefound=true;/将逻辑常量将逻辑常量true赋给逻辑变量赋给逻辑变量found由于逻辑变量是用关键字由于逻辑变量是用关键字bool来定义的,因此又称来定义的,因此又

21、称为为布尔变量布尔变量。逻辑型常量又称为布尔常量。所谓逻。逻辑型常量又称为布尔常量。所谓逻辑型,就是布尔型。辑型,就是布尔型。3.6.2 逻辑常量和逻辑变量逻辑常量和逻辑变量在编译系统处理逻辑型数据时,将在编译系统处理逻辑型数据时,将false处理为处理为0,将将true处理为处理为1。因此,逻辑型数据可以与数值型因此,逻辑型数据可以与数值型数据进行算术运算。数据进行算术运算。如果将一个非零的整数赋给逻辑型变量,如果将一个非零的整数赋给逻辑型变量,则按则按“真真”处理处理,如,如flag=123;/赋值后赋值后flag的值为的值为truecouty)coutxendl;/多于一句加多于一句加

22、cout yy)coutx;else cout500)cost=0.15;else if(number300)cost=0.10;else if(number100)cost=0.075;else if(number50)cost=0.05;else cost=0;图图3.例例3.6 求三角形的面积。求三角形的面积。#include#include /使用数学函数时要包含头文件使用数学函数时要包含头文件cmath#include /使用使用I/O流控制符要包含头文件流控制符要包含头文件iomanipusing namespace std;int main()double a,b,c;couta

23、bc;if(a+bc&b+ca&c+ab)/复合语句开始复合语句开始 double s,area;/在复合语句内定义变量在复合语句内定义变量 s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);coutsetiosflags(ios fixed)setprecision(4);/指定输出的数指定输出的数包含包含4位小数位小数 coutarea=areaendl;/在复合语句内输出局部变量的值在复合语句内输出局部变量的值 /复合语句结束复合语句结束else coutit is not a trilateral!b)?a:b;其中其中“(ab)?a:b”是一个是一个

24、“条件表达式条件表达式”。它是它是这样执行的:如果这样执行的:如果(ab)条件为真,则条件表达式条件为真,则条件表达式的值就取的值就取“?”后面的值,即条件表达式的值为,后面的值,即条件表达式的值为,否则条件表达式的值为否则条件表达式的值为“:”后面的值,即后面的值,即b。3.8 条件运算符和条件表达式条件运算符和条件表达式条件运算符要求有条件运算符要求有3个操作对象,称三目(元)运个操作对象,称三目(元)运算符,算符,它是它是C+中惟一的一个中惟一的一个三目运算符三目运算符。条件表。条件表达式的一般形式为达式的一般形式为表达式表达式1?表达式表达式2 表达式表达式3条件运算符的执行顺序是:先

25、求解表达式条件运算符的执行顺序是:先求解表达式1,若为,若为非非0(真)则求解表达式(真)则求解表达式2,此时表达式的值就作,此时表达式的值就作为整个条件表达式的值。若表达式为整个条件表达式的值。若表达式1的值为的值为0(假),(假),则求解表达式则求解表达式3,表达式,表达式3的值就是整个条件表达式的值就是整个条件表达式的值。的值。例例3.7 输入一个字符,判别它是否为大写字母,如输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。然后输出最后得到的字符。#include using names

26、pace std;int main()char ch;cinch;ch=(ch=A&ch=Z)?(ch+32):ch;/判别判别ch是否大写是否大写 字母,字母,是则转换是则转换 coutchendl;return 0;switch语句是多分支选择语句,用来实现多分支选语句是多分支选择语句,用来实现多分支选择结构,又叫择结构,又叫开关语句开关语句。它的一般形式如下:它的一般形式如下:switch(表达式)表达式)/多种情况多种情况case case 常量常量表达式表达式1:语句:语句1 case 常量表达式常量表达式2:语句:语句2 .case 常量表达式常量表达式n:语句语句n defaul

27、t:语句语句n+1 3.9 多分支选择结构和多分支选择结构和switch switch 语句语句例如,要求按照考试成绩的等级打印出百分制分数例如,要求按照考试成绩的等级打印出百分制分数段,可以用段,可以用switch语句实现:语句实现:switch(grade)case A:cout85100n;case B:cout7084n;case C:cout6069n;case D:cout60n;default :couterrorn;(1)switch后面括号内的后面括号内的“表达式表达式”,允许为任何类,允许为任何类型型。(2)当当switch表达式的值与某一个表达式的值与某一个case子句中

28、的常量子句中的常量表达式的值表达式的值相匹配相匹配时时,就执行此,就执行此case子句中的内嵌子句中的内嵌语句,若所有的语句,若所有的case子句中的常量表达式的值都不子句中的常量表达式的值都不能与能与switch表达式的值匹配,就执行表达式的值匹配,就执行default语句。语句。要形成真正多分支,必须加要形成真正多分支,必须加break语句。语句。即在执行即在执行一个一个case子句后,使流程跳出子句后,使流程跳出switch结构,可以用结构,可以用一个一个break语句来达到此目的。将上面的语句来达到此目的。将上面的switch结结构改写如下:构改写如下:switch(grade)cas

29、e A:cout85100n;break;case B:cout7084n;break;case C:cout6069n;break;case D:cout60n;break;default :couterrorn;break;最后一个子句(最后一个子句(default)可以不加可以不加break语句。如语句。如果果grade的值为的值为B,则只输出则只输出“7084”。流程图。流程图见图见图3.7。图图3.7(3)多个多个case可以共用一组执行语句可以共用一组执行语句,如,如 .case A:case B:case C:cout60n;.当当grade的值为的值为A、B或或C时都执行同一组

30、语句。时都执行同一组语句。因为,没加因为,没加break.例例3.8 编写程序,判断某一年是否为闰年。编写程序,判断某一年是否为闰年。#include/注意注意ifelse的嵌套关系的嵌套关系using namespace std;int main()/注意注意if-else 配对的对应性!配对的对应性!int year;bool leap;coutyear;/输入年份输入年份 if(year%4=0)/年份能被年份能被4整除整除 if(year%100=0)/年份能被年份能被4整除又能被整除又能被100整除整除 if(year%400=0)/年份能被年份能被4整除又能被整除又能被400整除整

31、除 leap=true;/闰年,令闰年,令leap=true(真真)else leap=false;/非闰年,令非闰年,令leap=false(假假)else /年份能被年份能被4整除但不能被整除但不能被100整除肯定是闰年整除肯定是闰年 leap=true;/是闰年,令是闰年,令leap=true3.10 编写选择结构的程序编写选择结构的程序 else /年份不能被年份不能被4整除肯定不是闰年整除肯定不是闰年 leap=false;/若为非闰年,令若为非闰年,令leap=false if(leap)coutyear is;/若若leap为真,就输出年份和为真,就输出年份和“是是”else c

32、outyear is not;/若若leap为真,就输出年份和为真,就输出年份和“不是不是”cout a leap year.endl;/输出输出“闰年闰年”return 0;运行情况如下:运行情况如下:2005 2005 is not a leap year.1900 1900 is npt a leap year.例例3.9 运输公司对用户计算运费。路程运输公司对用户计算运费。路程(s)越远,每越远,每公里运费越低。标准如下:公里运费越低。标准如下:s250km 没有折扣没有折扣 250s500 2折扣折扣 500s1000 5折扣折扣 1000s2000 8折扣折扣 2000s3000

33、10折扣折扣 3000s 15折扣折扣设每公里每吨货物的基本运费为设每公里每吨货物的基本运费为p(price的缩写的缩写),货物重为货物重为w(wright的缩写的缩写),距离为,折扣为,距离为,折扣为d(discount的缩写的缩写),则总运费,则总运费f(freight的缩写的缩写)的计的计算公式为:算公式为:f=p*w*s*(1-d)图图3.8S转换为转换为C的的值,以形成多分支:值,以形成多分支:C=int(S/250)据此写出程序如下:据此写出程序如下:#include using namespace std;int main()int c,s;float p,w,d,f;coutp

34、ws;if(s=3000)c=12;else c=s/250;/由由c的值形成多分支的值形成多分支 switch(c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);/计算公式计算公式 coutfreight=fendl;return 0;运行情况如下:运行情况如下:please enter p

35、,w,s:100 20 300 freight=588000v需要反复执行某一操作时,就要用到循环结构。需要反复执行某一操作时,就要用到循环结构。v顺序结构、选择结构和循环结构是结构化程序设顺序结构、选择结构和循环结构是结构化程序设计的计的3 3种基本结构种基本结构,是各种复杂程序的基本构造单,是各种复杂程序的基本构造单元。元。v因此程序设计者必须熟练掌握选择结构和循环结因此程序设计者必须熟练掌握选择结构和循环结构的概念及使用方法。构的概念及使用方法。3.11 循环结构和循环语句循环结构和循环语句一般形式如下:一般形式如下:while(表达式表达式)语句语句其作用是:其作用是:当指定的条件为真

36、当指定的条件为真(表达式为非表达式为非0)时,时,执行执行while语句中的内嵌语句。其流程图见图语句中的内嵌语句。其流程图见图3.9。其特点是:其特点是:先判断表达式,后执行语句先判断表达式,后执行语句。while循循环称为环称为当型循环当型循环(当条件满足,循环之(当条件满足,循环之,否则,不循环否则,不循环)。图图3.93.11.1 用用while语句构成循环语句构成循环例例3.10 求求1+2+3+100。根据流程图写出程序:根据流程图写出程序:/程序输入格式程序输入格式#include using namespace std;int main()int i=1,sum=0;while

37、(i=100)sum=sum+i;i+;/叫循环变量叫循环变量 coutsum=sumendl;运行结果为运行结果为sum=5050 需要注意需要注意:(1)循环体如果包含循环体如果包含一个以上的语句一个以上的语句,应该用花括,应该用花括号括起来,以复合语句形式出现。号括起来,以复合语句形式出现。(2)在循环体中应有使循环趋向于结束的语句。在循环体中应有使循环趋向于结束的语句。do-while语句的特点是语句的特点是先执行循环体,然后判断循先执行循环体,然后判断循环条件是否成立环条件是否成立。其一般形式为。其一般形式为do 语句语句 while(表达式表达式);注意分号;注意分号它是这样执行的

38、:先执行一次指定的语句它是这样执行的:先执行一次指定的语句(即循环即循环体体),然后判别表达式,当表达式的值为非零,然后判别表达式,当表达式的值为非零(“真真”)时,返回重新执行循环体语句,如此反复,时,返回重新执行循环体语句,如此反复,直到表达式的值等于直到表达式的值等于0为止,此时循环结束。可以为止,此时循环结束。可以用图用图3.11表示其流程。表示其流程。3.11.2 用用do-while语句构成循环语句构成循环 图图3.11 图图3.12例例3.11 用用do-while语句求语句求1+2+3+100。可编写出下面的程序:可编写出下面的程序:#include using namespa

39、ce std;int main()int i=1,sum=0;do sum=sum+i;i+;while(i=100);coutsum=sumendl;return 0;格式:格式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句int i,sum;sum=0;for(i=1;i=100;i+)sum=sum+1;它的执行过程如下:它的执行过程如下:(1)先求解表达式先求解表达式1。(2)求解表达式求解表达式2,若其值为真,若其值为真(值为非值为非0),则执行,则执行for语句中指定的内嵌语句,然语句中指定的内嵌语句,然后执行下面第后执行下面第(3)步。若为假步。若为假(值

40、为值为0),则结束循环,则结束循环,转到第转到第(5)步。步。3.11.3 用用for语句构成循环语句构成循环(3)求解表达式求解表达式3。(4)转回上面第转回上面第(2)步骤继续执行。步骤继续执行。(5)循环结束,执行循环结束,执行for语句下面的一个语句。语句下面的一个语句。一个循环体内又包含另一个完整的循环结构,称为一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。是多层循环。3.12 循环的嵌套循环的嵌套break;其作用为使流程从循环体内跳出循环体,其作用为使流程从循环体内跳出循环体,即提前

41、结即提前结束循环,接着执行循环体下面的语句束循环,接着执行循环体下面的语句。break语句语句只能用于循环语句和只能用于循环语句和switch语句内,不能单独使用语句内,不能单独使用或用于其他语句中。或用于其他语句中。3.13 break语句和语句和continue语句语句continue语句的一般格式为语句的一般格式为continue;其作用为其作用为结束本次循环,即跳过循环体中下面尚未结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。执行的语句,接着进行下一次是否执行循环的判定。continue语句和语句和break语句的区别是语句的区别是:continue

42、语句语句只结束本次循环,而不是终止整个循环的执行。而只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行语句则是结束整个循环过程,不再判断执行循环的条件是否成立。循环的条件是否成立。图图3.18 图图3.19例例3.12 用下面公式求用下面公式求的近似值。的近似值。/41-1/3+1/5-1/7+直到最后一项的绝对值小于直到最后一项的绝对值小于10-7为止。为止。根据给定的算法很容易编写程序如下:根据给定的算法很容易编写程序如下:#include#include#include using namespace std;int main()int s=1;

43、/符号符号 double n=1,t=1,pi=0;/n 分母;分母;t某一项的值某一项的值 while(fabs(t)1e-7)pi=pi+t;n=n+2;3.14 编写循环结构的程序编写循环结构的程序 s=-s;t=s/n;pi=pi*4;coutpi=setiosflags(ios fixed)setprecision(6)piendl;return 0;运行结果为运行结果为pi=3.141592注意!注意!不要把不要把n定义为整型变量,否则在执行定义为整型变量,否则在执行“t=s/n;”时,得到时,得到t的值为的值为0(原因是两个整数相除原因是两个整数相除)。例例3.14 找出找出10

44、0200间的全部素数。间的全部素数。编写程序如下:编写程序如下:#include#include#include using namespace std;int main()int m,k,i,n=0;bool prime;/定义布尔变量定义布尔变量prime for(m=101;m=200;m=m+2)/判别判别m是否为素数,由是否为素数,由101变化到变化到200,增量,增量2 prime=true;/循环开始时设循环开始时设prime为真,即先认为为真,即先认为m为素数为素数 k=int(sqrt(m);/用用k代表根号代表根号m的整数部分的整数部分 for(i=2;i=k;i+)/此循

45、环作用是将此循环作用是将m被被2至根号至根号m除,检查是否能整除除,检查是否能整除 if(m%i=0)/如果能整除,表示如果能整除,表示m不是素数不是素数m 为为素数条件:能被素数条件:能被2至至sqrt(m)的数的数整除整除 prime=false;/使使prime变为假变为假 break;/终止执行本循环终止执行本循环 if(prime)/如果如果m为素数为素数 coutsetw(5)m;/输出素数输出素数m,字段宽度为字段宽度为5 n=n+1;/n用来累计输出素数的个数用来累计输出素数的个数 if(n%10=0)coutendl;/输出输出10个数后换行个数后换行/for 循环结束循环结

46、束 coutendl;/最后执行一次换行最后执行一次换行 return 0;例例3.15 译密码。为使电文保密,往往译密码。为使电文保密,往往按一定规律将按一定规律将电文转换成密码电文转换成密码,收报人再按约定的规律将其译回,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将原文。例如,可以按以下规律将电文变成密码:将字母字母A变成字母变成字母E,a变成变成e,即变成其后的第即变成其后的第4个字个字母母,W变成变成A,X变成变成B,Y变成变成C,Z变成变成D。见图见图3.20。字母按上述规律转换,。字母按上述规律转换,非字母字符不变非字母字符不变。如。如Wonderful

47、!转换为转换为Asrhivjyp!。输入一行字符,输入一行字符,要求输出其相应的密码。要求输出其相应的密码。图图3.20程序如下:程序如下:#include using namespace std;int main()char c;while(c=getchar()!=n)if(c=a&c=A&cZ&cz)c=c-26;coutc;coutZ|cz)c=c-26;因为所有小写字母都满足因为所有小写字母都满足“cZ”条件,从而也执条件,从而也执行行“c=c-26;”语句,这就会出错。因此必须限制其语句,这就会出错。因此必须限制其范围为范围为“cZ&cz&cz”即可。即可。作业:作业:第第3章所有例题。章所有例题。习题习题11,18

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!