语句与基本控制结构.ppt

上传人:牧羊曲112 文档编号:6025429 上传时间:2023-09-16 格式:PPT 页数:48 大小:425KB
返回 下载 相关 举报
语句与基本控制结构.ppt_第1页
第1页 / 共48页
语句与基本控制结构.ppt_第2页
第2页 / 共48页
语句与基本控制结构.ppt_第3页
第3页 / 共48页
语句与基本控制结构.ppt_第4页
第4页 / 共48页
语句与基本控制结构.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

1、#include void main()double C,F;/C为摄氏温度 coutC;F=9.0/5.0*C+32;/完成温度转换 cout摄氏温度为C时,华氏温度为Fendl;,写出程序:该程序输入摄氏温度,输出相应的华氏温度。,第3章 语句与基本控制结构,3.1 C+语句概述3.2 程序的基本控制结构3.3 选择语句3.4 循环语句3.5 应用举例,3.1 C+语句概述,带标号语句 表达式语句 复合语句 声明语句 Try语句 转移语句 选择语句 循环语句,形式:表达式;例如:i+;sum=a+b;coutabendl;,1.表达式语句,2.空语句,形式:;作用:当程序中某个位置在语法上

2、需要一条语句,而在语义上又不 要求执行任何动作时,可放上一条空语句。一般适用于在循环语句中做空循环体;,如:for(m=0;m1000;m+);,3.复合语句,例如:if(x=0)couta;coutb;,形式:变量定义 语句组作用:当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个操作时,需要使用复合语句。,常出现在选择、循环语句中,4.声明语句,声明语句又称说明语句,它可以用来对程序中出现的各种名称进行声明。这些名称通常是表示变量、常量、函数、结构、类、对象等实际的标识符。如:char ch;/声明和定义char型变量 int count=1;/声明、定义和初始化

3、int型变量const double PI=3.14159;/声明、定义和初始化double型变量 C+语言规定:一个实体的定义只能出现一次,而其声明却可以出现多次。但同一实体的多个声明必须在类型上保持一致。,3.2 程序的基本控制结构,如果不加特殊控制,C+程序中的语句都是按顺序依次逐条执行的。程序的三种基本控制结构(1)顺序结构(2)选择结构(3)循环结构,控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C+语言流程控制语句有:选择语句:if.else、switch 循环语句:while、for、do.while 转向语句:break、continue、goto语句、return

4、语句,3.3 选择结构,选择结构是根据条件的值来判断程序的流向。C+中,提供两类选择控制语句:if语句,实现n分支,要求n个表达式;switch语句,实现多分支;只用1个表达式。,3.3.1 if 语句,if语句的三种形式:形式1:if(表达式)语句 作用:当表达式为真(非0)时,执行表达式后面的语句,否则绕过该语句,而执行其后面的语句。,#include Using namespace std;void main()int x,y,t;coutxy;if(xyendl;,程序:,例1:已知两个数x和y,比较它们的大小,使得x大于y。if(xy)t=x;x=y;y=t;coutxy;,形式2:

5、if(表达式)语句1 else 语句2,作用:当表达式为真(非0)时,执行语句1,否则执行语句2。,例2:计算分段函数:,if(x)y=sin(x)+sqrt(x*x+1);else y=cos(x)x*x+3*x;,形式3:if(表达式1)语句1 else if(表达式2)语句2 else if(表达式n)语句n else 语句n+1作用:当表达式1的值为true时,执行语句1;否则判断当表达式2的值为true时执行语句2;依此类推,若表达式的值都为false,则执行语句n+1。,例3:已知成绩mark,要求显示对应五级制的评定,评定条件:,if(mark=90)cout 优;else if

6、(80=mark,分析下面程序段是否正确:,注意:不管有几个分支,程序执行一个分支后,其余分支不再执行。else if不能写成elseif。当多分支中有多个表达式同时满足,则只执行第一个与之匹配的语句。,if(mark=60)cout=70)cout=80)cout=90)cout 优;else cout 不及格;,if语句的嵌套形式:,if语句的嵌套是指if或else后面的语句本身又是一个if语句。,if(表达式1)if(表达式2)语句1 else 语句2,注意:为了增强程序的可读性,建议采用锯齿型的书写形式。else始终与它上面的最近的if语句配对,而这个if语句又没有其它的else与之匹

7、配。,如何使之与第一个if配对?,如:if(表达式1)if(表达式11)语句11 else 语句12 else 语句2,例如:int x=-1;if(x0)if(x50)cout“x is 50”endl;else cout“x is=0”endl;,例4:已知x,y,z三个数,使得xyz。可用一个IF语句和一个嵌套的IF语句实现。,if(xy)t=x;x=y;y=t;if(yz)t=y;y=z;z=t;if(xy)t=x;x=y;y=t;,3.3.2 switch语句,执行顺序:当表达式的值与某个常量表达式的值相等时,则执行该常量表达式后面相应的语句,若使用了break,则执行完该语句后便退

8、出switch语句;否则,还要依次执行其后面的各条语句。若找不到相匹配的常量表达式,则执行default后面的语句。,必须为整型或字符型,形式:switch(表达式)case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break;case 常量表达式n:语句组n;break;default:语句组n+1,2a+1(1=a2)例5:用switch结构求分段函数b=a2-3(2=a4)a 其它,共用同一个语句组:switch(int)a)case 1:b=2*a+1;break;case 2:case 3:b=a*a-3;break;default:b=a;,错误:sw

9、itch(int)a)case a=1,思考:若省去break语句,情况会怎样?,习题,1、任意输入一个4位整数的年份,判断该年是否是润年?,是指年份能被4整除的那些年,但不包括能被100整除而不能被400整除的年,#include using namespace std;void main()int year;cinyear;if(year%4=0),2、输入学生分数,相应地输出其等级 采用switch语句完成学生分数等级的判断,#include using namespace std;void main()int x;cinx;switch(x/10)case 10:case 9:cout

10、“优秀”endl;break;case 8:cout“良好”endl;break;case 7:case 6:cout“合格”endl;break;default:cout“不及格”endl;,3.4 循环结构,C+语言提供了三种循环语句,流程图如下:while,while(表达式)语句,do 语句while(表达式);,for(表达式1;表达式2;表达式3)语句,do-while,for,例1:用上述三种循环语句求,while语句:,n=1;s=0;while(n=100)s=s+n;n=n+1;,n=1;s=0;do s=s+n;n=n+1;while(n=100);,do-while语句

11、:,for语句:,for(n=1;n=100;n+)s=s+n;,100,s,=,n,S=0,例2:求下列级数的前m项和,要求其误差小于0.00001。,分析:级数的通项为 xm/m!,第i项ti与第i-1项 ti-1之间存在如下关系:ti=ti-1*x/i,int i=1;float t(1),e(0),x;cinx;while(t1E-5)e+=t;t=t*x/i;i+;,int i(1);float t(1),e(0),x;cinx;for(;t1E-5;)e+=t;t=t*x/i;i+;,for(i=1,t=1,e=0;t1E-5;e+=t,t=t*x/i,i+);,分号不能省略,空语

12、句,ex=1+x+x2/2!+x3/3!+xm/m!+,循环的嵌套,循环的嵌套:循环体内包含另一个完整的循环结构。三种循环语句皆可以相互嵌套。例3:打印九九乘法表,#include using namespace std;void main()coutt 九九乘法表endl;coutt-endl;for(int i=1;i=9;i+)for(int j=1;j=9;j+)coutij=i*jt;coutendl;,程序:,思考:打印上三角或下三角程序如何改动?,例4:编程输出国际象棋棋盘,8*8,其它控制语句,例:break 和 continue 语句的区别,for(m=20;m0;m-)if

13、(m%6=0)break;coutm;,for(m=20;m0;m-)if(m%6=0)continue;coutm;,1.break语句break语句有两个作用:用于switch语句中,保证多分支情况的正确执行;用于循环语句中,强制终止本层循环(跳出本层循环)。2.continue语句continue语句的作用:绕过本次循环,强行进入下一次循环。即它只能跳过循环体中continue后面的语句。注意:continue只能用于循环语句,3.5 应用举例,1.求最大值(或最小值)例:从键盘输入一组数,求这组数中的最大值。,cinm;max=m;/第一个数假设为最大数 while(cinm,m!=0

14、)if(mmax)max=m;,max=0;/设一个较小的数为最大值的初值 for(int i=0;im;if(mmax)max=m;,以输入0作为结束,输入数的个数未知,输入数的个数已知,2.最大公约数,辗转相除法while(r=m%n)!=0)m=n;n=r;coutn;,m n r12 5 2 5 2 1 2 1 0,例:用辗转相除法求两自然数的最大公约数。算法思想:(1)对于已知两数m,n,使得mn(2)m除以n得余数r(3)若r=0,则n为最大公约数,结束;否则执行(4)(4)n m,r n,再重复执行(2),#include void main()int m,n,t,r;coutm

15、n;if(mn)t=m;m=n;n=t;while(r=m%n)!=0)m=n;n=r;cout“最大公约数为:nendl;,程序:,3.求部分级数和,例:计算sin(x)的值,公式为:,当第n项的绝对值小于10-5时结束。分析:关键是找部分级数和的通项,如下表示:ti+2=-1*ti*x*x/(i+1)*(i+2)i=1,3,5,7,#include#include using namespace std;void main()double t,x,sum=0;int i=1;coutx;t=x;while(fabs(t)=1e-5)sum+=t;t=-t*x*x/(i+1)*(i+2);i

16、=i+2;coutsum;,程序,4.穷举法,例:百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现有100元钱要买100只鸡,列出所有可能的购鸡方案。分析:(1)设母鸡、公鸡、小鸡各为x、y、z只,列出方程为:x+y+y=1003x+2y+0.5z=100 三个未知数,两个方程,此题有若干个整数解。(2)采用试凑法(也称为穷举法或枚举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。,用三重循环来实现:for(x=0;x33;x+)for(y=0;y51;y+)for(z=0;z201;z+)if(3*x+2*y+0.5*z)=100),用二

17、重循环来实现:for(x=0;x=33;x+)for(y=0;y=50;y+)z=100-x-y;if(3*x+2*y+0.5*z)=100)coutsetw(9)xsetw(9)ysetw(9)zendl;,5.递推法,“递推法”也称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复,每次重复都从旧值的基础上递推出新值,并由新值代替旧值。,例:利用牛顿迭代法求方程,在x0附近的根的近似值。牛顿迭代公式为:,输入x0值,由公式求出x1,再由x1从公式求出x2,.,直到,时可视x n+1为方程f(x)=0在X0附近的,一个近似根,设为10-5。,x1=1;do x0=x1;x

18、1=x0-(3*x0*x0*x0-4*x0*x0-5*x0+13)/(9*x0*x0-8*x0-5);while(fabs(x1-x0)1e-5);,6.分类统计,例:对输入一串字符,统计其中单词的个数、字母个数、数字个数。规定单词之间用一个空白符分开(空白符包括空格符、水平制表符、换行符)。以z表示输入结束。分析:(1)统计单词的个数,可通过统计空白符的个数得到。(2)由于标准输入流cin输入时会把空白符作为输入结束符,所以应使用getchar()函数逐一读取字符,该函数必须用”stdio.h”。,#include#include stdio.husing namespace std;voi

19、d main()int alpha(0),num(0),ch(0),word(0);char c;/输入字符变量 cout=a,程序,习题,1、任意输入一个整数,按位翻转输出。例如输入124,输出421。2、一球从100米高度落下,每次落地后反弹回原高度的一半,再落下。编程求解它在第n次落地时,共经过多少米?3、若一头母牛,从出生起第四个年头开始每年开始生一头母牛,按此规律,第n年时有多少头母牛?,1、程序#include using namespace std;void main()int i,n,result=0;coutn;cout按位翻转的结果为:;while(n!=0)i=n%10;

20、result=result*10+i;n/=10;coutresultendl;,2、程序#include using namespace std;void main()double height=100;double sum=height;int n=0;coutn;/输入小球落地的次数 for(int i=1;in;i+)sum+=height;height/=2;coutsumendl;,3、程序#include using namespace std;void main()int n;long a=1,b=1,c=1,temp;/c保存总的母牛数 cout n;/输入年数 for(int i=4;i=n;i+)temp=a+c;a=b;b=c;c=temp;cout c endl;,思考:如果母牛每三个年头生母牛或每五个年头生母牛,程序应该如何修改?,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号