收藏 分销(赏)

高等教育.pptx

上传人:精**** 文档编号:4335838 上传时间:2024-09-07 格式:PPTX 页数:65 大小:370.58KB
下载 相关 举报
高等教育.pptx_第1页
第1页 / 共65页
高等教育.pptx_第2页
第2页 / 共65页
高等教育.pptx_第3页
第3页 / 共65页
高等教育.pptx_第4页
第4页 / 共65页
高等教育.pptx_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、1第第三三章章 基本程序设计基本程序设计 西南交通大学软件学院西南交通大学软件学院计算机基础教研室计算机基础教研室计算机程序设计基础与计算机程序设计基础与Visual C+Visual C+前一页 休息2教学目标教学目标 1掌握顺序、选择、循环三种基本控制结掌握顺序、选择、循环三种基本控制结构的程序实现方法;构的程序实现方法;2了解基本程序调试技能。了解基本程序调试技能。前一页 休息3教学内容教学内容 1顺序结构的程序实现语句;2一路、两路、多路分支选择结构的实现语句;3循环结构的实现语句;4循环控制语句的作用;5程序调试过程。前一页 休息4例“鸡兔同笼问题”:在一个笼子里养着鸡与兔,但不知其

2、中鸡有多少只,兔有多少只。只知道鸡和兔的总数是a,鸡与兔的总脚数是b,求鸡与兔各有多少只。思路分析:思路分析:假设有假设有x只鸡和只鸡和y只兔,则根据已知条件可列只兔,则根据已知条件可列出如下方程组:出如下方程组:x+y=a 2x+4y=b对该方程组做进一步的转换可得:对该方程组做进一步的转换可得:顺序结构程序设计 前一页 休息5源程序清单:源程序清单:#includeusing namespace std;void main()int a,b,x,y;couta;coutb;x=(4*a-b)/2;y=(b-2*a)/2;cout鸡的数量为鸡的数量为:xendl;cout兔的数量为兔的数量为

3、:yendl;顺序结构程序设计 前一页 休息6编程技巧编程技巧 1在顺序结构的程序设计中,主函数在顺序结构的程序设计中,主函数main的函数的函数体的执行顺序为语句的书写顺序。即写在前面体的执行顺序为语句的书写顺序。即写在前面的语句先执行,写在后面的语句后执行,且每的语句先执行,写在后面的语句后执行,且每条语句都会被执行一次;条语句都会被执行一次;2组成顺序结构的常见语句有:组成顺序结构的常见语句有:(1)说明语句,包括变量、常量定义;)说明语句,包括变量、常量定义;(2)表达式语句,由表达式(一般为赋值表达)表达式语句,由表达式(一般为赋值表达式)加分号构成;式)加分号构成;(3)输入)输入

4、/输出流语句;输出流语句;(4)复合语句,由)复合语句,由 括起来的多条语句组成;括起来的多条语句组成;(5)空语句,由独立的分号构成)空语句,由独立的分号构成顺序结构程序设计 前一页 休息7例例 输入一位同学的三门课程考试成输入一位同学的三门课程考试成绩,计算该同学的平均成绩,要求输绩,计算该同学的平均成绩,要求输出数据的形式如下例:出数据的形式如下例:科目科目 成绩成绩英语英语 67程序设计程序设计 78.5大学物理大学物理 89该生的平均成绩为:该生的平均成绩为:78.17思路分析:思路分析:本程序要求的计算内容很简单,重点在输本程序要求的计算内容很简单,重点在输出数据的位置控制上:要求

5、前四行输出的两列出数据的位置控制上:要求前四行输出的两列信息要对齐,且最后计算出的平均成绩的小数信息要对齐,且最后计算出的平均成绩的小数部分只显示两位数字。部分只显示两位数字。顺序结构程序设计 前一页 休息8源程序清单:源程序清单:#include iostream#include iomanipusing namespace std;void main()float score1,score2,score3,average;cout请输入三门课程的考试成绩:请输入三门课程的考试成绩:score1score2score3;average=(score1+score2+score3)/3;cou

6、tsetw(10)科目科目setw(12)成绩成绩endl;coutsetw(10)英语英语setw(12)score1endl;coutsetw(10)程序设计程序设计setw(12)score2endl;coutsetw(10)大学物理大学物理setw(12)score3endl;coutfixed;cout.precision(2);cout该生的平均成绩为:该生的平均成绩为:averageendl;顺序结构程序设计 前一页 休息9编程技巧编程技巧1 1对于输出的多列信息对齐的问题可以通过控制输出的对于输出的多列信息对齐的问题可以通过控制输出的数据所占的位置宽度来实现。实现方法为:在输出

7、该数数据所占的位置宽度来实现。实现方法为:在输出该数据前先通过据前先通过setw(n)setw(n)来设置该数据输出时所占的最少位置来设置该数据输出时所占的最少位置宽度宽度n n。使用时需注意;。使用时需注意;(1 1)setw(n)setw(n)所设置的位置宽度只对其后输出的一所设置的位置宽度只对其后输出的一个数据生效;个数据生效;(2 2)使用)使用setw(n)setw(n)时需包含头文件时需包含头文件iomanipiomanip;2 2该设置也可以通过该设置也可以通过cout.width(n);cout.width(n);来实现。即语句来实现。即语句coutsetw(10)coutse

8、tw(10)科目科目setw(12)setw(12)成绩成绩endl;endl;可更换为:可更换为:cout.width(10);cout.width(10);coutcout科目科目;cout.width(12);cout.width(12);coutcout成绩成绩;注意:此方法不再需要文件包含注意:此方法不再需要文件包含#include iomanip#include iomanip。顺序结构程序设计 前一页 休息10编程技巧编程技巧3在输出一个浮点数时,系统会在科学记数法在输出一个浮点数时,系统会在科学记数法和小数点法两种形式里按照一定的规则(通常在整和小数点法两种形式里按照一定的规则

9、(通常在整数部分超过数部分超过6位时采用科学记数法)自动选择采用哪位时采用科学记数法)自动选择采用哪种形式输出。若想规定不管什么样的浮点数均使用种形式输出。若想规定不管什么样的浮点数均使用小数点形式输出,可采用小数点形式输出,可采用coutfixed;语句来实现语句来实现4以小数点形式输出浮点数时,系统默认输出以小数点形式输出浮点数时,系统默认输出的浮点数的整数和小数部分的总位数最多只有的浮点数的整数和小数部分的总位数最多只有6位数位数字。若想规定输出的浮点数的小数部分的位数可通字。若想规定输出的浮点数的小数部分的位数可通过过cout.precision(n);语句来实现。其中语句来实现。其中

10、n代表小数部代表小数部分的位数(若数据的实际位数超过分的位数(若数据的实际位数超过n,则按,则按4舍舍5入规入规则处理后输出;若数据的实际位数少于则处理后输出;若数据的实际位数少于n,则其余位,则其余位数用数用0补齐)。补齐)。顺序结构程序设计 前一页 休息11例例 从键盘输入一个数,计算并从键盘输入一个数,计算并输出该数的绝对值输出该数的绝对值思路分析:思路分析:对于对于0和正数而言,其绝对值就是该数和正数而言,其绝对值就是该数本身;对于负数而言,其绝对值为该数与本身;对于负数而言,其绝对值为该数与-1相乘的结果。相乘的结果。本题算法的实质就是判断什么情况下需本题算法的实质就是判断什么情况下

11、需要执行要执行“该数与该数与-1相乘相乘”这个操作,同时意这个操作,同时意味者该操作对应的语句虽然书写在了程序中,味者该操作对应的语句虽然书写在了程序中,但在某种情况下是可能不会被执行的。但在某种情况下是可能不会被执行的。选择结构程序设计 前一页 休息12源程序清单源程序清单#includeusing namespace std;void main()float m;coutm;if(m0)m=-1*m;cout你输入数据的绝对值为你输入数据的绝对值为:mendl;选择结构程序设计 前一页 休息13编程技巧编程技巧1在程序中,如果书写的某些语句只有在程序中,如果书写的某些语句只有在特定的条件成

12、立的情况下才会被执行时,需在特定的条件成立的情况下才会被执行时,需要用到要用到“一路分支选择结构一路分支选择结构”来实现,相应的来实现,相应的语句为语句为“if语句语句”,其格式如下:,其格式如下:if(条件条件)语句;语句;(1)简单的条件通过包含关系运算符的)简单的条件通过包含关系运算符的关系表达式来表示,关系表达式来表示,C+语言的关系运算符见语言的关系运算符见表表3.1。选择结构程序设计 前一页 休息14关系运算符关系运算符运算符运算优先级=小于小于等于大于大于等于1111=!=等于不等于22选择结构程序设计 前一页 休息15编程技巧编程技巧 若满足条件,关系表达式的值为布尔值若满足条

13、件,关系表达式的值为布尔值true;若不满足条件,关系表达式的值为布尔;若不满足条件,关系表达式的值为布尔值值false;关系运算符若为两字符,在书写时两字符关系运算符若为两字符,在书写时两字符间不能加空格;间不能加空格;=与与=的区别:如的区别:如x=1为条件表达式,判为条件表达式,判断断x是否等于是否等于1。x=1为赋值表达式,将数值为赋值表达式,将数值1存存入变量入变量x中;中;两个浮点数之间一般不用两个浮点数之间一般不用=来判断是否相来判断是否相等;等;关系运算符的优先级低于算术运算符,高关系运算符的优先级低于算术运算符,高于赋值运算符。于赋值运算符。选择结构程序设计 前一页 休息16

14、编程技巧编程技巧(2 2)ifif语句的内嵌语句只能是一条,即该处语句的内嵌语句只能是一条,即该处语句多于一条时,需要将这些语句用语句多于一条时,需要将这些语句用 括起来括起来构成复合语句;构成复合语句;(3 3)ifif语句的执行过程:首先测试条件是否语句的执行过程:首先测试条件是否成立,成立则执行条件后的内嵌语句,否则结成立,成立则执行条件后的内嵌语句,否则结束束ifif语句,执行其后续语句。语句,执行其后续语句。练习:将键盘输入的两个数按从大到小的练习:将键盘输入的两个数按从大到小的顺序存储并输出。(两种交换数据的方法)顺序存储并输出。(两种交换数据的方法)选择结构程序设计 前一页 休息

15、17例例输入一个年份,判断该年是否输入一个年份,判断该年是否为闰年,并输出判断结果为闰年,并输出判断结果 源程序清单:#include using namespace std;void main()int year;coutyear;if(year%4=0&year%100!=0|year%400=0)coutyear is a leap yearendl;elsecoutyear“is not a leap year”endl;选择结构程序设计 前一页 休息18编程技巧编程技巧 选择结构程序设计(1)在程序中,如果在特定的条件成立的情况下执行一种操作,不成立的情况下执行另一种操作,则需要用到

16、“两路分支选择结构”来实现,相应的C+语句是“ifelse语句”,其具体格式为:if(if(条件条件)语句语句1 1;elseelse语句语句2 2;内嵌语句1、2都只能是一条语句;条件成立时执行内嵌语句1,否则执行内嵌语句2 前一页 休息19编程技巧编程技巧运算符运算优先级!逻辑非1&逻辑与2|逻辑或3(2)如果条件比较复杂,需要由多个关系表达式按照一定的逻辑关系共同构成,则需要使用逻辑运算符,C+语言的逻辑运算符见表3.2选择结构程序设计 前一页 休息20编程技巧编程技巧由逻辑运算符构成的逻辑表达式的运算结果也是布尔值;逻辑非(!)放在一个条件表达式的前面,用于表示该条件的相反条件;逻辑与

17、(&)运算符的前后各书写一个条件,只有前后的两个条件都成立时,由逻辑与表示的条件才成立;逻辑或(|)运算符的前后同样需要各书写一个条件,但它只要求这两个条件中有任何一个条件成立就可以了;逻辑非运算符的优先级与算术运算的+和-平级,逻辑与和逻辑或运算符的优先级低于关系运算符,高于赋值运算符。选择结构程序设计 前一页 休息21例例 从键盘任意输入三个数,计从键盘任意输入三个数,计算并输出它们的最大数算并输出它们的最大数思路分析一:假设用a,b,c分别表示输入的三个数,则三个数中的最大值必然是两个数中的较大值。因此可以先在a和b中找出一个较大值出来;然后再用这个较大值与剩下的那个数c进行比较,其中的

18、较大者即为三个数中的最大者。在本算法中,首先要判断a和b谁大:在a大的情况下,又要判断a和c谁大;在a小的情况下,又要判断b和c谁大。因此在实现“判断a和b谁大”的两路分支选择结构的执行部分将包含另外一个选择结构。选择结构程序设计 前一页 休息22源程序清单一源程序清单一#includeusing namespace std;void main()double a,b,c,max;coutabc;if(a=b)if(ac)max=a;elsemax=c;elseif(b=c)max=b;elsemax=c;cout“max=”maxendl;选择结构程序设计 前一页 休息23编程技巧编程技巧

19、(1)在)在ifelse语句中,如果在条件成立时语句中,如果在条件成立时和(或)条件不成立时需要根据另一个条件的和(或)条件不成立时需要根据另一个条件的成立情况来进一步决定该执行什么操作,则需成立情况来进一步决定该执行什么操作,则需要用到嵌套的选择结构。即在条件成立时执行要用到嵌套的选择结构。即在条件成立时执行的语句部分和(或)条件不成立时执行的语的语句部分和(或)条件不成立时执行的语句部分中书写另一个选择结构的实现语句;句部分中书写另一个选择结构的实现语句;(2)如果被嵌套的内层选择结构是一路分支)如果被嵌套的内层选择结构是一路分支选择结构的实现语句(选择结构的实现语句(if语句),此时即使

20、该语句),此时即使该部分只有这一条语句,也需要将其用部分只有这一条语句,也需要将其用 括起来,括起来,以隔离内外层选择结构。以隔离内外层选择结构。选择结构程序设计 前一页 休息24思路分析二:思路分析二:假设用假设用a,b,c分别表示输入的三个分别表示输入的三个数。首先判断数。首先判断a是否为最大值:如果是,是否为最大值:如果是,就直接输出判断结果;如果不是,则最就直接输出判断结果;如果不是,则最大值必然在大值必然在b和和c中,此时再判断中,此时再判断b和和c的的大小关系就可以得出整个判断结果。大小关系就可以得出整个判断结果。例例 从键盘任意输入三个数,从键盘任意输入三个数,计算并输出它们的最

21、大数计算并输出它们的最大数选择结构程序设计 前一页 休息25源程序清单二源程序清单二#includeusing namespace std;void main()double a,b,c,max;coutabc;if(a=b&a=c)max=a;else if(b=c)max=b;else max=c;coutmax=maxb?c:de?f:g后后m变量中的值为变量中的值为7。前一页 休息28源程序清单三源程序清单三#includeusing namespace std;void main()double a,b,c,max;coutabc;if(ab)max=(ac)?a:c;elsemax

22、=(bc)?b:c;coutmax=maxendl;练习:习题练习:习题10 前一页 休息29例例由键盘输入一个四则运算式子,由键盘输入一个四则运算式子,输出该运算式子和运算结果输出该运算式子和运算结果思路分析:假设输入的数据分别为x、y,运算符号为op,本题要解决的问题实质上就是根据运算符号op是什么,来决定对x、y两个数据采用什么运算。源程序清单一:选择结构程序设计 前一页 休息30#includeusing namespace std;void main()double x,y;char op;cout请输入算式:请输入算式:xopy;if(op=+)coutx+y=x+yendl;el

23、se if(op=-)coutx-y=x-yendl;else if(op=*)coutx*y=x*yendl;else if(op=/)if(y=0.0)cout除式的分母为零除式的分母为零!endl;elsecoutx/y=x/yendl;elsecout“非四则运算非四则运算!”endl;选择结构程序设计 前一页 休息31#includeusing namespace std;void main()double x,y;char op;cout请输入算式:xopy;switch(op)case+:coutx+y=x+yendl;break;case-:coutx-y=x-yendl;br

24、eak;case*:coutx*y=x*yendl;break;case/:if(y=0.0)cout除式的分母为零!endl;elsecoutx/y=x/yendl;break;default:cout“非四则运算!”endl;选择结构程序设计 前一页 休息32编程技巧编程技巧 选择结构程序设计本题是典型的“多路分支选择结构”,程序清单一采用嵌套的ifelse语句来实现,程序清单二采用C+的switch开关分支语句来实现,该语句的格式为:switch(switch(条件条件)casecase常量表达式常量表达式1 1:语句序列语句序列1 1break;break;casecase常量表达式常

25、量表达式2 2:语句序列语句序列2 2break;break;defaultdefault:语句序列:语句序列n n 前一页 休息33编程技巧编程技巧(1 1)switchswitch后的(后的()中书写的是需要进行比较的运)中书写的是需要进行比较的运算式子,该式子的计算结果必须是整型或字符型数据;算式子,该式子的计算结果必须是整型或字符型数据;(2 2)switchswitch语句的语句的 中主要由若干个中主要由若干个casecase分句构成,分句构成,每个每个casecase关键字后面书写一个整型或字符型常量。如果关键字后面书写一个整型或字符型常量。如果switchswitch后的(后的(

26、)中的计算式子的计算结果等于该常量,)中的计算式子的计算结果等于该常量,则从该则从该casecase分句开始执行,故分句开始执行,故switchswitch语句也称为开关语语句也称为开关语句;句;(3 3)switchswitch语句找到执行起始点后,将一直执行到语句找到执行起始点后,将一直执行到 为止。若想提前结束运行,可在需要执行的最后一条为止。若想提前结束运行,可在需要执行的最后一条语句后加上语句后加上breakbreak语句;语句;(4 4)如果)如果switchswitch后的(后的()中的计算式子的计算结果)中的计算式子的计算结果与所有与所有casecase分句后的常量都不相等,则

27、语句的执行起始分句后的常量都不相等,则语句的执行起始点为点为defaultdefault。若没有。若没有defaultdefault分句,则不执行任何操作分句,则不执行任何操作选择结构程序设计 前一页 休息34算法描述:算法描述:例例 计算计算0n之间所有整数之和,之间所有整数之和,其中其中n为正整数,由键盘输入为正整数,由键盘输入 循环结构程序设计 前一页 休息35源程序清单源程序清单#includeusing namespace std;void main()int n,i,sum;coutn;i=1;sum=0;while(i=n)sum=sum+i;i=i+1;cout1与与n之间所有

28、整数之和为:之间所有整数之和为:sumendl;循环结构程序设计 前一页 休息36编程技巧编程技巧(1)在程序中,如果书写的某些语句可)在程序中,如果书写的某些语句可能需要被重复执行,就要用到循环结构。这些能需要被重复执行,就要用到循环结构。这些可能被重复执行的语句称为该循环结构的循环可能被重复执行的语句称为该循环结构的循环体。循环体是否被重复执行以及循环体被重复体。循环体是否被重复执行以及循环体被重复执行的次数取决于一个条件,该条件称为循环执行的次数取决于一个条件,该条件称为循环结构的循环条件;结构的循环条件;(2)当型循环结构的实现语句之一为)当型循环结构的实现语句之一为“while语句语

29、句”,其语句格式为:,其语句格式为:while(条件条件)语句语句Page 36循环结构程序设计 前一页 休息37循环结构中条件的表示方法与选择结构循环结构中条件的表示方法与选择结构相同;相同;循环体超过一条时,应写成复合语句;循环体超过一条时,应写成复合语句;while语句的执行过程:首先判断循环条语句的执行过程:首先判断循环条件:若条件成立,则执行一次循环体,然后重件:若条件成立,则执行一次循环体,然后重复复“判断判断执行执行”的过程。直到该循环条件不的过程。直到该循环条件不再成立时退出循环结构;再成立时退出循环结构;为避免为避免“死循环死循环”,循环体中应含有修,循环体中应含有修正与循环

30、条件相关数据的语句。正与循环条件相关数据的语句。练习:计算练习:计算n之间所有奇数之和(两方法)之间所有奇数之和(两方法)计算并输出一个正整数的反序数计算并输出一个正整数的反序数Page 37编程技巧编程技巧循环结构程序设计 前一页 休息38例例 计算计算n!,其中!,其中n为正整数,为正整数,由键盘输入由键盘输入 源程序清单:源程序清单:#include using namespace std;void main()int mul=1,j,n;coutn;for(j=1;j=n;j+)mul*=j;coutmul=mulendl;循环结构程序设计 前一页 休息39编程技巧编程技巧(1)当型循

31、环也可用)当型循环也可用for语句来实现,语法格式为:语句来实现,语法格式为:for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句表达式表达式1:进入循环前执行一次,作用是为有关:进入循环前执行一次,作用是为有关变量赋初值;表达式变量赋初值;表达式2:用于控制循环的条件;表达:用于控制循环的条件;表达式式3:用于修正有关变量的值;表达式:用于修正有关变量的值;表达式1和表达式和表达式3可可以是逗号表达式以是逗号表达式表达式表达式1、2、3都可以省略,但分号不能省略。都可以省略,但分号不能省略。省略表达式省略表达式1表示不需要赋初值(该任务可在表示不需要赋初值(该任务可在for语句语

32、句前完成);省略表达式前完成);省略表达式2表示循环条件永远为真;省表示循环条件永远为真;省略表达式略表达式3表示没有修正部分(循环体内应有相关修表示没有修正部分(循环体内应有相关修正);省略表达式正);省略表达式1和和3的的for语句等效于语句等效于while语句。语句。循环体仍只能是一条语句;循环体仍只能是一条语句;循环结构程序设计 前一页 休息40编程技巧编程技巧 forfor语句的执行过程:首先求解表达式语句的执行过程:首先求解表达式1 1,然后,然后判断表达式判断表达式2 2是否成立,如果成立,则执行循环体,是否成立,如果成立,则执行循环体,并求解表达式并求解表达式3 3,之后重复,

33、之后重复“判断判断执行执行求解求解”的过程,直到循环条件不成立时退出循环。的过程,直到循环条件不成立时退出循环。(2 2)whilewhile和和forfor语句实现的都是当型循环结构,语句实现的都是当型循环结构,因此可以相互转换,如本例中的因此可以相互转换,如本例中的forfor语句可以用语句可以用whilewhile语句改写成如下形式:语句改写成如下形式:j=1;while(j=n)mul*=j;j+;循环结构程序设计 前一页 休息41编程技巧编程技巧(3)通过对比可以发现,)通过对比可以发现,for语句在实现结语句在实现结果上比果上比while语句更简洁,因此使用更普遍。语句更简洁,因此

34、使用更普遍。而且通过而且通过for语句(语句()中的三个表达式很容易)中的三个表达式很容易计算出循环的执行次数(如通过本例中的计算出循环的执行次数(如通过本例中的j=1;j=n;j+部分可以直接推算出循环的次数部分可以直接推算出循环的次数为为n次),使得次),使得for语句在已知循环次数的场景语句在已知循环次数的场景下应用尤为突出。下应用尤为突出。练习:计算练习:计算1!+2!+3!+n!Page 41循环结构程序设计 前一页 休息42写出程序运行结果写出程序运行结果#includeusing namespace std;void main()int i,a(0);for(i=1;i=6;i+

35、)switch(i%3)case 0:i-;case 1:a-=2;break;case 2:i+=1;default:+a;couta“,”iendl;运行结果:运行结果:-2,7 前一页 休息43例例计算计算e=1+(1/1!)+(1/2!)+(1/n!)+的近似值,的近似值,1/n!10-7时停止计算时停止计算 算法描述:算法描述:循环结构程序设计 前一页 休息44源程序清单源程序清单#includeusing namespace std;void main()double e=1.0,u=1.0;int n=1;doe=e+u;n=n+1;u=u/n;while(u=1.0e-7);c

36、oute=e,(n=n)endl;循环结构程序设计 前一页 休息45编程技巧编程技巧(1 1)本例采用直到型循环结构。注意:直)本例采用直到型循环结构。注意:直到型循环必须保证循环体至少执行一次。其实现到型循环必须保证循环体至少执行一次。其实现语句格式为:语句格式为:dodo语句语句whilewhile(条件)(条件);do-whiledo-while语句实现的是直到型循环结构,语句实现的是直到型循环结构,但其判断条件有所改变:循环条件成立时继续执但其判断条件有所改变:循环条件成立时继续执行下次循环体;行下次循环体;循环体仍为一条语句;循环体仍为一条语句;循环结构程序设计 前一页 休息46 d

37、o-while语句的执行过程:首先执行一次循环体,然后重复“判断执行”的过程,直到循环条件不成立时退出循环;注意:循环条件位于while关键字后的圆括号()中,且圆括号后面需要加分号。练习:计算两个正整数计算两个正整数m m和和n n的最大公约数的最大公约数(用当型和直到型循环结构分别实现)(用当型和直到型循环结构分别实现)编程技巧编程技巧循环结构程序设计 前一页 休息47例例 判断正整数判断正整数m是否为素数是否为素数 算法描述:算法描述:Page 47循环控制语句 前一页 休息48源程序清单源程序清单#includeusing namespace std;void main()int m,

38、j;cout请输入一整数:请输入一整数:m;for(j=2;jm;j+)if(m%j=0)break;if(jm)coutm不是素数。不是素数。endl;else coutm是素数。是素数。endl;循环控制语句 前一页 休息49编程技巧编程技巧(1)如果在循环体中根据需要想退出循环,)如果在循环体中根据需要想退出循环,可以使用可以使用break语句。其作用是只要程序执行该语句。其作用是只要程序执行该语句,则结束整个循环结构;语句,则结束整个循环结构;(2)退出循环结构后,如何知道在执行循环)退出循环结构后,如何知道在执行循环结构时是否执行过结构时是否执行过break语句呢?那就是判断循语句呢

39、?那就是判断循环条件是否依然成立:若循环条件依然成立,说环条件是否依然成立:若循环条件依然成立,说明循环结构是在执行循环体的过程中执行了明循环结构是在执行循环体的过程中执行了break语句而被提前终止退出的。相反,如果循语句而被提前终止退出的。相反,如果循环条件不成立,说明循环结构是在通过循环条件环条件不成立,说明循环结构是在通过循环条件不成立而退出的,同时意味着在执行循环体的过不成立而退出的,同时意味着在执行循环体的过程中一直没有执行程中一直没有执行break语句。语句。循环控制语句 前一页 休息50例例找出并输出找出并输出100150之间和之间和400450之间能被之间能被9整除的数整除的

40、数 源程序清单:源程序清单:#includeusing namespace std;void main()int n;for(n=100;n150&n400)continue;if(n%9=0)coutn;cout150&n400成立时将执行continue语句,这就表示其后的循环体部分if(n%9=0)在本次循环时不会执行。循环控制语句 前一页 休息52例例编程求编程求100到到999之间的回文数,之间的回文数,回文数是指正读与反读都一样的数回文数是指正读与反读都一样的数算法分析:算法分析:本题实质是要找出所有的三位回文数。对于本题实质是要找出所有的三位回文数。对于一个三位数而言,如果它是回

41、文数,则其百位数一个三位数而言,如果它是回文数,则其百位数与个位数必然相同(取值范围为与个位数必然相同(取值范围为19),而此时),而此时对应的十位数可以是对应的十位数可以是09中的任意一个数。如果中的任意一个数。如果用变量用变量i表示其个位数,则该变量需要在表示其个位数,则该变量需要在19之之间进行循环。同时,如果用变量间进行循环。同时,如果用变量j表示该数的十表示该数的十位数,则对于任何一个个位数位数,则对于任何一个个位数i而言,变量而言,变量j都需都需要在要在09之间进行变化。这就意味着在一个循环之间进行变化。这就意味着在一个循环的循环体中需要包含另外一个循环。的循环体中需要包含另外一个

42、循环。循环的嵌套 前一页 休息53算法描述算法描述 Page 53循环的嵌套 前一页 休息54源程序清单源程序清单#includeusing namespace std;void main()int n,i,j;for(i=1;i=9;i+)for(j=0;j=9;j+)n=i*100+j*10+i;coutnendl;循环的嵌套 前一页 休息55编程技巧编程技巧(1)一个循环结构的循环体中包含另一个循环结)一个循环结构的循环体中包含另一个循环结构,称为循环结构的嵌套;构,称为循环结构的嵌套;(2)在嵌套的循环结构中,内外层循环可以使用)在嵌套的循环结构中,内外层循环可以使用相同的循环语句来实

43、现(如本例都采用相同的循环语句来实现(如本例都采用for语句来实语句来实现),也可以使用不同的循环语句来实现;现),也可以使用不同的循环语句来实现;(3)在嵌套的循环结构中,外层循环结构每执行)在嵌套的循环结构中,外层循环结构每执行一次,内层循环结构将执行整轮循环(如本例中,一次,内层循环结构将执行整轮循环(如本例中,当外层循环变量当外层循环变量i为为1时,内层循环将循环一轮,即变时,内层循环将循环一轮,即变量量j将依次取值将依次取值09;当外层循环的变量;当外层循环的变量i变化为变化为2后,后,内层循环又将循环一轮);内层循环又将循环一轮);()内外层循环的循环控制变量不能同名。()内外层循

44、环的循环控制变量不能同名。练习:找出练习:找出m、n之间所有的回文数之间所有的回文数计算计算m、n之间所有素数之和之间所有素数之和循环的嵌套 前一页 休息56阅读程序阅读程序#include using namespace std;void main()int j=1,sum=0;loop:sum+=j;j+;if(j=100)goto loop;coutsum=sumendl;前一页 休息57编程技巧编程技巧(1)goto语句的功能是控制程序的语句的功能是控制程序的流程无条件转移到标号指定的语句处继流程无条件转移到标号指定的语句处继续执行。由于续执行。由于goto语句常常会破坏程序语句常常会

45、破坏程序的结构性,除非某些特殊情况,一般不的结构性,除非某些特殊情况,一般不用用goto语句。语句。(2)goto语句的使用范围仅局限于语句的使用范围仅局限于函数内部。即:不允许使用函数内部。即:不允许使用goto语句从语句从一个函数转入另一个函数体内。一个函数转入另一个函数体内。前一页 休息58例例编写程序输出以下图案编写程序输出以下图案*算法分析:算法分析:图案的输出实质上是要将指定的图图案的输出实质上是要将指定的图形符号输出到相应的位置,而所谓没有形符号输出到相应的位置,而所谓没有图案的地方都要通过输出空格符号来占图案的地方都要通过输出空格符号来占据位置。本例的图案可以分成上面四行据位置

46、。本例的图案可以分成上面四行和下面三行两部分,在输出上面四行时,和下面三行两部分,在输出上面四行时,可以采用循环方式来实现,每循环一次,可以采用循环方式来实现,每循环一次,输出一行图案,因此循环次数应为图案输出一行图案,因此循环次数应为图案的行数。而每一行图案又包括空格、星的行数。而每一行图案又包括空格、星号和换行符三部分。不管是空格还是星号和换行符三部分。不管是空格还是星号,每一行都可能要输出多个,因此也号,每一行都可能要输出多个,因此也需要采用循环方式进行输出,每循环一需要采用循环方式进行输出,每循环一次输出一个空格或者一个星号。次输出一个空格或者一个星号。循环的嵌套 前一页 休息59算法

47、描述一算法描述一 循环的嵌套 前一页 休息60源程序清单一源程序清单一#include using namespace std;void main(void)int i,j;for(i=0;i=3;i+)for(j=0;j=2-i;j+)cout;for(;j=3+i;j+)cout*;coutendl;for(i=0;i=2;i+)for(j=0;j=i;j+)cout;for(j=i;j=4-i;j+)cout*;coutendl;循环的嵌套 前一页 休息61算法描述二算法描述二 循环的嵌套 前一页 休息62源程序清单二源程序清单二#include using namespace std;

48、void main(void)int i,j;for(i=0;i=3;i+)for(j=0;j=3+i;j+)if(j3-i)cout;elsecout*;coutendl;for(i=0;i=2;i+)for(j=0;j=5-i;j+)if(j=i)cout;elsecout*;coutendl;循环的嵌套 前一页 休息63编程技巧编程技巧 两种算法的区别在于内层循环的处理上有两种算法的区别在于内层循环的处理上有所不同:算法一中将空格和星号的输出分开来所不同:算法一中将空格和星号的输出分开来处理,并各自用一个循环来实现,特别适合实处理,并各自用一个循环来实现,特别适合实心图案的输出;算法二则将空格和星号一起采心图案的输出;算法二则将空格和星号一起采用一个统一的循环来处理,在循环体中再来判用一个统一的循环来处理,在循环体中再来判断什么时候该输出空格符号,什么时候该输出断什么时候该输出空格符号,什么时候该输出星号。该方法既可以用于输出实心图案,更适星号。该方法既可以用于输出实心图案,更适合输出空心图案。合输出空心图案。练习:输出空心菱形图练习:输出空心菱形图循环的嵌套 前一页 休息64调试技能调试技能1.设置断点设置断点2.开始调试开始调试3.单步执行单步执行4.查看变量取值查看变量取值5.结束调试结束调试程序调试 前一页 休息65

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服