教学PPT基本控制结构1(1).ppt

上传人:仙人指路1688 文档编号:2495915 上传时间:2023-02-20 格式:PPT 页数:45 大小:439KB
返回 下载 相关 举报
教学PPT基本控制结构1(1).ppt_第1页
第1页 / 共45页
教学PPT基本控制结构1(1).ppt_第2页
第2页 / 共45页
教学PPT基本控制结构1(1).ppt_第3页
第3页 / 共45页
教学PPT基本控制结构1(1).ppt_第4页
第4页 / 共45页
教学PPT基本控制结构1(1).ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《教学PPT基本控制结构1(1).ppt》由会员分享,可在线阅读,更多相关《教学PPT基本控制结构1(1).ppt(45页珍藏版)》请在三一办公上搜索。

1、第三章基本控制结构,if语句 switch语句 while语句 do-while语句 for语句 循环不变式,3.1 程序的基本控制结构 3.1.1 C+语言的简单语句,单语句:以分号“;”结束int a;变量定义语句a=3*2;表达式语句function(“example”);函数调用语句空语句:只有一个分号“;”复合语句(块语句)用花括号 括起来的若干条语句(可以是单语句、空语句、其他块语句)块语句在语法上等价于一个单语句,所以在单语句可用的地方我们也可以使用块语句。块语句中每一个语句都以分号“;”结束,块语句本身则以右花括号“”结束,if(ab)int t=a;a=b;b=t;,3.1.

2、1 C+语言的简单语句,3.1.2单入口单出口控制结构,实现单入口单出口程序只需三种基本的控制结构 顺序结构选择结构当条件p(条件表达式)成立,则执行一个分支,否则执行另一个分支多路分支循环结构实现反复执行某一部分的操作循环结构三要素:循环条件p循环体A循环变量:在每次循环中都必须有语句修改此变量的值,以使循环条件表达式的值可能改变,从而跳出循环,3.1.3 结构化程序设计工具,程序框图结构化程序设计图形工具N_S图PAD图Jackson结构图Warnier图PDL(Program Design Language),3.2 选择结构,3.2.1 if 语句if(条件表达式)子语句;if语句的有

3、效范围是单个语句,如果子语句有多个语句,则必须用括起来,成为一个复合语句 if(条件表达式)子语句1;else 子语句2;,例3.2.1 输入24小时制的时间,转换并输出12小时制的时间并注明是上午还是下午(上午用A.M表示,下午用P.M表示),#include main()int hour;char noon=A;cout hour;if(hour 12)hour=hour-12;noon=P;cout The hour is hour noon.M.n;,*如果去掉花括号if(hour 12)hour=hour-12;noon=P;“noon=P;”不是if的子语句,而是主流程if语句的下

4、一个顺序语句,程序2:程序3:,#include void main()float x;coutx;if(x12)cout P.M:;x=x-12;else cout A.M:;coutxn;,(改进)#include void main()float x;coutx;if(x=12)cout A.M:;else cout P.M:;x=x-12;coutxn;/注意书写层次结构,例3.2.2 一个具有输入合法性检测的程序,要求用户输入的工龄在047之间,如果超出此范围则提示输入错误,否则才接受用户输入。用户输入错误时,程序用转义字符输出一声响铃,main()int standing;/用户输

5、入的工龄float standing_salary;/根据用户输入工龄计算出来的工龄工资cout standing;if(standing=0),嵌套if语句,if(表达式1)if(表达式2)子语句1;else子语句2;else 子语句3;if(表达式1)子语句1;else if(表达式2)子语句2;else if(表达式n)子语句n;else 子语句n1;,例3.2.3 从键盘上输入3个数A,B,C,求出三数中最大者并输出。,#include void main()int A,B,C,max;coutABC;max=A;if(Bmax)max=B;/求出A、B中的较/大值,记录在max中,然

6、后再比较C与max if(Cmax)max=C;cout MAX(A,B,C):maxn;,采用嵌套if语句来实现,if(A B)if(A C)cout C)coutMaximum is B;else coutMaximum is C;,垂悬else问题,if(p1)if(p2)a=1;else a=2;这样的语句会引起二义性,else子句不知道应该与哪个if语句配对。C+语言中是就近配对:if(p1)注意if与else的配if(p2)a=1;对关系,else总是else a=2;与它上面的最近的 if配对,注意问题,if语句中的表达式,一般为逻辑表达式或关系表达式else子句不能单独使用,必

7、须与if配套使用if以及else语句后面都只含一个内嵌的操作语句,有效范围都只有一个语句,若需含多个操作,则须用 括起来。例:if(a+bc)coutc”;c=a+b;else cout“a+b=c”;,程序3.2.4,/程序:AVERAGE.CPP/功能:求数、理、化三科平均成绩的总评,演示if语句嵌套的缩进格式#include void main()int math,phys,chem;int average;float scholarship;coutmathphyschem;average=(math+phys+chem)/3.0+0,5;/why?if(average=90)cout

8、=80)cout Good.n;scholarship=85.00;,程序3.2.4,else if(average=70)cout=60)cout Pass.n;scholarship=45.50;else cout Fail.n;scholarship=0.00;coutYour scholarship is scholarship.n;,条件表达式短路求值,if(members!=0)&(income/members800.00)=if(members!=0)if(income/members800.00)expression1&expression2/expression1为0,exp

9、ression2不做 expression1|expression2/expression1非0,expression2不做,3.2.2 switch语句,多分支选择语句 switch语句的一般形式如下:switch(表达式)case 常量表达式1:语句序列1;break;case 常量表达式2:语句序列2;break;case 常量表达式n:语句序列n;break;default:语句序列n+1;break;,说明,表达式可为任何类型。Switch在入口时判断表达式与哪个常量表达式匹配。若表达式的值与某个case后面的常量相等,则执行与该case后面相应的语句;若与所有列出的常量都不相等,则

10、执行default后面的语句。case后只能是常量表达式,不能是变量表达式,其值只能是整型、字符型、枚举型,不能是其他类型。每个常量表达式的值都不相同。case部分与default部分出现次序不影响执行结果。每部分不限单个语句,可写多个语句,不用加。break;语句用于执行完一个分支后跳出此switch语句,例3.2.6,#include main()int choice;/用户输入的选择cout choice;/用户输入选择switch(choice)/对用户的选择分别作处理case 1:cout Your choice is apple.n;case 2:cout Your choice

11、is pear.n;case 3:cout Your choice is banana.n;case 4:cout Your choice is orange.n;default:cout You did not make a choice.n;,break;break;break;break;break;,例3.2.7,/程序:ORDERS.CPP/功能:旅行社订票折扣率计算#include void main()int orders,fragment;float discount;coutorders;fragment=orders/10;switch(fragment)case 0:di

12、scount=0.10;break;case 1:discount=0.15;break;case 2:discount=0.30;break;default:discount=0.45;break;coutThe discount is discount*100%.n;,3.3 循环结构 3.3.1 while语句,while(循环条件表达式)循环体语句;当表达式的值为T(非零)时,循环条件成立,执行循环体语句。while语句的作用范围只到while后第一个分号(单语句)。若循环体有多个语句则需用 括起来。在循环体中应有使循环趋向于结束的语句循环变量初始化需在while语句前完成,例3.3.

13、1:给定一个正整数n,求出平方值不超过n的最大正整数并输出。,程序流程图如右:,源程序:,#include main()int n;/用户给定的正整数int max;/所求的最大整数cout n;/判断用户输入是否合法if(n=0)cout Input error!n;else/利用循环求出平方大于n的最小整数max=1;while(max*max=n)max=max+1;/输出结果cout The maximum integer is:max-1 n;,例3.3.2,#include Void main()int choice=1;/用户输入的选择 while(choice!=0)cout

14、choice;/用户输入选择 switch(choice)/对用户的选择分别作处理 case 0:break;case 1:cout Your choice is apple.n;break;case 2:cout Your choice is pear.n;break;case 3:cout Your choice is banana.n;break;case 4:cout Your choice is orange.n;break;default:cout Your choice is invalid.n;break;cout Thank you for your choice.n;,3.

15、3.2 do-while语句,do循环体语句;while(循环条件表达式p);先执行一次循环体语句,然后判别表达式,当为T时,返回执行循环体语句,直到表达式为F,结束循环while语句和do-while语句基本等价,只有当表达式一开始就为假时,两种语句结果不一样i=20;sum=0;i=20;sum=0;while(i=10)do sum+=i;sum+=i;i+;i+;while(i=10);结果 sum=0结果 sum=20,3.3.2 do-while语句,/程序:SQRT.CPP/功能:利用牛顿法求一个正数的平方根#include void main()const float EPS=

16、1e-5;float num,root,pre;coutnum;if(numEPS)|(root-preEPS);cout The rootof num is rootendl;,3.3.3 for语句,for(表达式1;表达式2;表达式3)循环体语句;执行过程:求解表达式1求解表达式2,若其值为T,执行循环体语句,跳到第3)步;若为F,结束循环,跳到第4)步求解表达式3,然后跳到第2)步循环结束,执行for语句的下一条语句适用于循环次数已知的循环表达式1:循环变量赋初值表达式2:循环条件表达式3:循环变量增量(计数表达式),for语句中的三个表达式中任一个或全部均可省略,但分号必须保留,su

17、m=0;for(i=1;i100)break;sum+=i;sum=0;for(i=1;i=100;)sum+=i;i+;,sum=0;i=1;for(;i100)break;sum+=i;i+;for(sum=0,i=1;i=100;i+)sum+=i;,while(i=100),while(1),程序3.3.4,/程序:ALPHABET.CPP/功能:正反向打印字母表。#include void main()char ch;for(ch=A;ch=A;ch-)coutch;coutendl;,程序3.3.5,/程序:TEMPTAB.CPP/功能:打印摄氏温度与华氏温度对照表#include

18、 void main()const int max=10;const int min=-5;int cel;float fah;/输出对照表栏目cout=min;cel-)fah=cel*1.8+32;coutcelx09fahendl;,3.3.4 循环的嵌套,三种循环可以相互替代一个循环体内又包含另一个完整的循环结构循环的嵌套各种循环可以相互嵌套,3.3.4 循环的嵌套,/程序:MULTITAB.CPP/功能:打印乘法口诀表#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)couti*j=i*j;coutendl;,程序3.

19、3.6 公鸡5元1只,母鸡3元1只,小鸡1元3只,花了100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?,cock公鸡的个数;hen母鸡的个数;chicken小鸡的个数;得方程:cock+hen+chicken=1005*cock+3*hen+chicken/3=100#include void main()int cock,hen,chicken;for(cock=0;cock=100/5;cock+)for(hen=0;hen=100/3;hen+)chicken=100-cock-hen;if(chicken%3=0),运行结果:cock=0 hen=25 chicken=75cock

20、=4 hen=18 chicken=78cock=8 hen=11 chicken=81cock=12 hen=4 chicken=84,20,33,3.3.5 设计正确的循环,循环不变式一个或者多个表达式用于保证循环的正确性在循环前成立在每次执行循环体后仍成立在循环结束后也成立,3.4 转向语句,例3.4.1(break的用法)键盘输入m和n(10mn32000),求出mn间所有素数且按每行8个数形式输出,#include#include#include void main()int m,n,x,k,i,j;j=0;/j计算输出个数 do coutmn;while(m=n)|(n=32000

21、);coutn*n;,for(x=m;x=k+1)/不是用break跳出的,找到一个素数if(j%8=0)coutendl;/每行8个数 coutsetw(8)x;j=j+1;/以每行8个数的形式输出,每个数占8个字符的位置 coutn*n;,例3.4.2(continue的用法)在键盘上输入若干个正数,累加求和,最后输出累加和以及平均值。,问题分析:事先不知道要输入多少个数,但知道输入数是正数,我们可边输入边统计其个数,若发现输入的是0或负数时,输入结束。当输入数是大于0时则累加并累计数的个数。,源程序如下:#include void main()double sum,num;int n;s

22、um=0.0;n=0;num=1.0;/设置初值 while(num0)coutnum;if(num0是否成立。显然,当n=0时退出循环。,3.5 简单程序设计举例,3.5.1 问题 将1到100(也许更大)的数字相加的和使多少?3.5.2 求解问题的精美算法 1+2+3+98+99+100 50*101=5050,3.5.2 求解问题的精美算法,/程序:GAUSS.CPP/功能:求1到MAX之间的数字相加之和的精美算法#include void main()const int max=99;int sum;sum=(max/2)*(1+max);coutThe summing result

23、is sumendl;,3.5.2 求解问题的精美算法,问题:MAX为奇数?精美算法寻找(设计)困难精美算法通用性,3.5.3 求解问题的原始算法,/程序:GAUSS02.CPP/功能:求1到MAX之间的数字相加之和的原始算法#include void main()int max,sum,cnt;coutmax;sum=0;for(cnt=1;cnt=max;cnt+)sum+=cnt;/求12+22+102?coutThe summing result is sumendl;,习题与上机,习题P.893-2,3-6,3-8,3-11,3-12*补充:编程求解一元二次方程的根 ax2+bx+c=0 要求:设计完备的测试数据集,考虑a,b,c各种取值对根的影响上机:实验教程实验二 必做:(1)阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能:、(2)编写程序实现下列问题的求解:编程求解下列各计算式:2)、4),

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号