资源描述
*,*,程序控制结构,程序的基本控制结构有顺序结构、选择结构和循环结构,3,种。本章将介绍实现这,3,种结构的基本程序控制语句,包括用于实现分支结构的,if,语句和,switch,语句,用于实现循环结构的,for,语句、,while,语句、,do-while,语句以及,break,、,continue,等各种转向语句。,3.1,顺序控制语句,Add your text in here,Click to add Text,计算圆的周长和面积,案例引入,从键盘输入,a,、,b,和,c,,求解一元二次方程,ax2+bx+c=0,根。要求,a,、,b,和,c,满足,b2-4ac0,。,3.1,顺序控制语句,源代码展示,#include stdafx.h,#include,#include,int main(int argc,char*argv),double a,b,c,x1,x2,delta;,cout,输入,a,、,b,和,c,的值:,abc;,delta=b*b-4*a*c;,x1=(-b+sqrt(delta)/(2*a);,x2=(-b-sqrt(delta)/(2*a);,coutx1=x1endl;,coutx2=x2endl;,return 0;,3.1,顺序控制语句,运行结果,程序分析,上述程序中使用了数学函数,sqrt(),,所以需要包含头文件,cmath,。当然也可以使用早期的头文件,math.h,,但提倡使用新式的头文件,cmath,。,知识讲解,在顺序结构的程序中语句是顺序执行的,这种结构的程序最简单。但是在很多情况下,程序并不是按照语句出现的顺序执行的。本案例的程序并不够完善,应该对条件b2-4ac0进行判断,如果满足该条件,则执行计算一元二次方程根的语句,否则不应该执行,。,3.2,选择控制语句,Add your text in here,Click to add Text,将,3,个数从小到大排序,案例引入,从键盘输入,3,个整数,使用,if,语句,将它们从小到大排序并输出,。,3.2.1 if语句,3.2.1 if,语句,#include stdafx.h,#include,int main(int argc,char*argv),int a,b,c,temp;,cout,请输入,3,个整数:,abc;,if(ab),temp=a;/,交换,a,和,b,a=b;,b=temp;,if(ac),temp=a;/,交换,a,和,c,a=c;,c=temp;,if(bc),temp=b;/,交换,b,和,c,b=c;,c=temp;,cout,这,3,个数从小到大为:,a b cendl;,return 0;,源代码展示,3.2.1 if,语句,运行结果,程序分析,上述程序使用了,if,形式的选择语句,在对,3,个数进行两两比较时,如果前者大于后者,将它们进行交换,将小的数交换到前面。进行,3,次比较后,这,3,个数就按照从小到大顺序排好序了。,知识讲解,if(,表达式,),语句,1;,简单,if,语句流程图,知识讲解,if(,表达式,),语句,1;,else,语句,2;,ifelse,语句流程图,知识讲解,if(,表达式,1),语句,1;,else if(,表达式,2),语句,2;,else if(,表达式,k),语句,k;,else,语句,n;,ifelse if,语句流程图,3.2.2,嵌套,if,语句,Add your text in here,Click to add Text,计算票价优惠率,案例引入,某旅行社根据旅游淡季、旺季及是否是团体进行订票,使用嵌套,if,语句确定旅游票价的折扣率。具体规定如下:人数在,20,人以上的属于团体,,20,人以下的是散客;每年的,4,5,月、,7,8,月和,10,月为旅游旺季,其余月份为旅游淡季;旅游旺季,团体票优惠,5,,散客不优惠;旅游淡季,团体票优惠,30,,散客优惠,20,。,3.2.2,嵌套,if,语句,#include stdafx.h,#include,int main(int argc,char*argv),int month,num;,double discount=1;/,优惠率,cout,请输入购票月份和订票张数:,monthnum;,if(month=4&month=7&month20),discount*=0.05;/,团体,else,discount=0;/,散客,else,/,旅游淡季,if(num20),discount*=0.3;/,团体,else,discount*=0.2;/,散客,cout,票价优惠率为:,discountendl;,return 0;,源代码展示,3.2.2,嵌套,if,语句,运行结果,程序分析,上述程序使用了,if,嵌套语句,首先判断是否为旅游旺季,如果是,则继续判断是否为团体,是团体,则输出票价优惠率,0.05,,否则输出,0,;如果不是旅游旺季(即旅游淡季),则判断是否为团体,是团体,则输出票价优惠率,0.3,,否则输出,0.2,。,知识讲解,if(,表达式,1),if(,表达式,2),语句,1;,else,语句,2;,else,if(,表达式,3),语句,3;,else,语句,4;,嵌套,if,语句流程图,3.2.3 switch,语句,Add your text in here,Click to add Text,简单的计计算器程序,案例引入,从键盘输入两个数和运算符,使用,switch,语句根据运算符进行相应的计算,并输出运算结果。,3.2.3 switch,语句,#include stdafx.h,#include,int main(int argc,char*argv),float a,b;,char optr;,cout,请输入两个数和运算符:,aboptr;,switch(optr)/,根据运算符,判断执行相应的运算,case+:,cout,两个数之和为:,a+bendl;,break;,case-:,cout,两个数之差为:,a-bendl;,break;,case*:,cout,两个数之积为:,a*bendl;,break;,case/:,cout,两个数之商为:,a/bendl;,break;,default:,cout,简易计算器不能完成该计算功能,endl;,return 0;,源代码展示,3.2.3 switch,语句,运行结果,程序分析,上述程序根据输入的运算符,optr,对,5,种不同的情况进行判断,输出相应的运算结果。,知识讲解,switch,语句又称情况语句,是一种多分支语句,用于实现多重条件的程序流程。其语法格式如下:,switch(,表达式,),case,常量,1:,语句,1;,break;,case,常量,2:,语句,2;,break;,default:,default,语句,;,3.3,循环控制语句,Add your text in here,Click to add Text,使用,while,循环语句求,n,的阶乘,案例引入,从键盘输入一个整数,n,,使用,while,循环语句计算并输出,n,的阶乘,。,3,.,3,.1,while,循环语句,3.3.1 while循环语句,源代码展示,#include stdafx.h,#include,int main(int argc,char*argv),int i,n,m;,i=1;,m=1;,cout,请输入一个整数:,n;,while(i=n),m*=i;,i+;,cout,该整数的阶乘为:,mendl;,return 0;,3.3.1 while循环语句,运行结果,程序分析,上述程序定义了变量,i,,其值从,1,开始,每次加,1,,当该值大于从键盘输入的整数,n,时,循环结束。每次循环都不断地进行累乘。,知识讲解,while(,条件表达式,),循环体语句,;,while,语句流程图,3.3.2 do-while,循环语句,Add your text in here,Click to add Text,使用,do-while,循环语句求,n,的阶乘,案例引入,从键盘输入一个整数,n,,使用,do-while,循环语句计算并输出,n,的阶乘。,#include stdafx.h,#include,int main(int argc,char*argv),int i,n,m;,i=1;,m=1;,cout,请输入一个整数:,n;,do,m*=i;,i+;/,循环变量递增,while(i=n);,cout,该整数的阶乘为:,mendl;,return 0;,3.3.2 do-while,循环语句,源代码展示,3.3.2 do-while,循环语句,运行结果,程序分析,上述程序定义了变量,i,,其值从,1,开始,每次加,1,,当该值大于从键盘输入的整数,n,时,循环结束。每次循环都不断地进行累乘。,知识讲解,do,循环体语句,;,while(,条件表达式,),do-while,循环流程图,3.3.3 for,循环语句,Add your text in here,Click to add Text,求,1,100,的和,案例引入,使用,for,循环语句,计算,1,100,的和。,3.3.3 for,循环语句,源代码展示,#include stdafx.h,#include,int main(int argc,char*argv),int i,sum=0;,for(i=1;i=100;i+),sum+=i;,cout1,到,100,的和为:,sumendl;,return 0;,3.3.3 for,循环语句,运行结果,程序分析,上述程序定义了用于控制循环的变量,i,和用于保存结果的变量,sum,,并对变量,sum,进行了初始化。当程序执行到,for,语句后,先为循环变量,i,赋初始值,再执行条件判断,如果满足条件,则执行循环体语句;然后再返回到,for,语句中,执行,i+,语句,如果满足条件,再次执行循环体语句;重复执行上述过程直到变量,i,的值大于,100,,退出循环,输出结果,sum,。,知识讲解,在,C+,中,,for,循环用于循环次数确定的情况,也可用于循环次数不确定但给出循环结束条件的情况。其语法格式如下:,for(,表达式,1;,表达式,2;,表达式,3),for,循环的执行流程是:首先计算表达式,1,的值,然后计算表达式,2,的值,如果为真,则执行循环体语句;执行结束后,计算表达式,3,,然后再计算表达式,2,的值是否为真,如果为真,就继续执行循环体语句,若为假,则终止循环。,3.4 break,语句和,continue,语句,Add your text in here,Click to add Text,求出,1,50,的所有素数,案例引入,使用,for,循环语句和,break,语句,求出,1,50,的所有素数,。,3.4.1 break语句,3.4.1 break语句,#include stdafx.h,#include,int main(int argc,char*argv),int i,j;,for(i=2;i=50;i+)/,外循环,bool flag=true;/flag,为,true,表示该数为素数,for(j=2;ji;j+)/,内循环,if(i%j=0),flag=false;/i,不是素数,退出内循环,break;,if(flag),couti;/,输出素数,i,coutendl;,return 0;,源代码展示,3.4.1 break语句,运行结果,程序分析,素数是指大于,2,且只能被,1,或其本身整除的整数。对于一个大于,2,的整数,i,,如果它能够被从,2,到,i-1,中的任何一个数整除,则,i,不是素数。上述程序中使用了两重,for,循环:外循环变量,i,的取值为,2,50,;内循环用于判断变量,i,是否为素数,如果是素数,则跳出内循环并输出该素数,同时将
展开阅读全文