第3章控制语句ppt课件.ppt
《第3章控制语句ppt课件.ppt》由会员分享,可在线阅读,更多相关《第3章控制语句ppt课件.ppt(112页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在此输入您的封面副标题第3章 控制语句Virus中国水利水电出版社中国水利水电出版社第4章控制语句 4.4循环语句循环语句4.3 选择结构程序设计选择结构程序设计4.2 顺序结构程序设计顺序结构程序设计4.1 控制语句概述控制语句概述教学要求:理解:常用的控制语句实例。掌握:控制语句的概念和常用的几种控制语句,特别是选择语句、循环语句。4.1 控制语句概述高级语言源程序的基本组成单位是语句。语句按照功能可以分为两类:一类用于描述计算机执行的操作运算,称为操作运算语句,比如表达式语句;另一类是控制操作运算语句的执行顺序或者说控制程序流程,称为控制语句,比如选择语句。C语言提供了相应的语句,如表达
2、式语句、块语句、选择语句和循环语句等,实现了结构化程序设计所需要的三种基本控制结构:顺序结构、选择结构和循环结构,如图4-1所示。4.1 控制语句概述图4-1 三种基本结构4.2 顺序结构程序设计顺序结构程序是由顺序执行语句组成的程序,程序运行是按照语句物理位置的先后次序顺序进行的,不发生控制转移,所以它是三种基本结构中最简单的一种。顺序结构程序一般包括以下几个部分:1. 程序开头的编译预处理命令#include等。在程序中引用库函数时,必须实用编译预处理命令#include,将库函数所在的头文件包含进来。4.2 顺序结构程序设计2. 顺序结构程序的函数体中,是完成具体功能的各个语句,主要包括
3、:(1)变量定义语句。(2)数据输入语句。(3)数据处理语句。(4)数据输出语句。4.2 顺序结构程序设计下面来看一个顺序结构程序的例子。例 4-1 输入任意两个整数,求它们的和、平均值及和的平方根。/Ch04_01.c#include #include void main() int x1 , x2, sum ; float aver , root; printf(Please input two integers: ); scanf(“%d,%d”,&x1,&x2);4.2 顺序结构程序设计 sum=x1+x2 ; aver=sum/2.0; root=sqrt(sum); printf(
4、“x1=%d, x2=%d n”,x1,x2); printf(“sum =%f, average =%f, root=%f n”, sum, average, root); 程序运行结果为: Please input two integers: 1 2 x1=1, x2=2sum=3, average=1.5, root=1.73205 4.3 选择结构程序设计选择结构是用来判断所给定的条件是否满足,并根据判定的结果(真或假)决定哪些语句被执行。C中构成选择结构的语句有条件语句(if语句及if-else语句)和开关语句(switch语句)。4.3.1 if语句if语句是用来实现选择结构的语句
5、。它首先判断给定的条件是否成立,根据判断的结果(真或假)决定某个分支是否执行。4.3 选择结构程序设计其语法形式为:if () 执行时首先计算表达式的值,若表达式值为true,则执行语句1;否则不执行语句1。直接执行下一条语句。例如: if (xy) max=x;4.3 选择结构程序设计例 4-2 输入任意三个整数,求三个数中的最大值。/Ch04_02.c#include void main() int num1,num2,num3,max ; printf(“Please input three numbers:”); scanf(“%d,%d,%d”,&num1,&num2,&num3);
6、 max=num1; if(num2max) max=num2; if(num3max) max=num3; printf(“The three numbers are:%d,%d,%dn”,num1,num2,num3); printf(“The max of three numbers is: %dn”,max);4.3 选择结构程序设计程序运行结果为: Please input three numbers: 10,25,19The three numbers are:10,25,19The max of three numbers is:254.3 选择结构程序设计4.3.2 if-el
7、se语句If-else语句是用来实现选择结构的语句,它是if语句的双分支结构。If-else语句首先判断给定的条件是否成立,根据判断的结果(真或假)决定执行两个分支中的一个。其语法形式为:if () else 执行时首先计算表达式的值,若表达式值为true,则执行语句1;否则执行语句2。4.3 选择结构程序设计下面来看一个if-else语句构成的选择结构程序实例。例 4-3 输入一个整数,判断它是否既是3的倍数又是5的倍数。/Ch04_03.c#include void main()int num; printf(“Please input an integer:”); scanf(“%d”,
8、&num); if(num%3= =0& num%5= =0) printf(“It is the multiple of 3 and 5!n”); else printf(“It isnt the multiple of 3 and 5!n”);4.3 选择结构程序设计程序运行结果为: Please input an integer: 15It is the multiple of 3 and 5!4.3 选择结构程序设计4.3.3 if语句嵌套处理多分支的情况时,if语句允许嵌套。所谓嵌套是指在if 或 if else 中的语句1或语句2部分中再使用if或 if else语句。if语句的嵌
9、套中,else部分总是与前面最近的、可见的、还没有配对的if配对。为避免匹配错误,最好将内嵌的if语句,一律用大括号括起来,增加程序的可读性。下面来看两个if语句嵌套的实例。4.3 选择结构程序设计例 4-4 比较两个整数的大小。/Ch04_04.c#include void main()int x,y;printf(Enter x and y: );scanf(“%d,%d”,&x,&y);if(x!=y)if(xy)printf(“xyn”);elseprintf(“xyn”);elseprintf(“x=yn”);4.3 选择结构程序设计执行该程序,运行结果1:Enter x and y
10、: 4 6 xy运行结果3:Enter x and y: 7 7 x=y4.3 选择结构程序设计例 4-5 求分段函数y=f(x)的值,f(x)的表达式如下: x2 1 (x1)4.3 选择结构程序设计/Ch04_5.c#include void main()float x,y;printf(Enter x: );scanf(“%f “,&x);if(x=-1&x=1)y=x*x;else y=x*x+1;printf(f(x)=%fn,y);4.3 选择结构程序设计执行该程序,运行结果1:Enter x: 3 f(x)=8运行结果2:Enter x: 1 f(x)=1运行结果3:Enter
11、x: 2 f(x)=54.3 选择结构程序设计switch语句if语句的嵌套,适用于多种情况的选择判断,这种实现多分支处理的程序结构,也称为多分支选择结构。若用if语句处理多分支结构则可能使嵌套太多,影响程序的可读性。C语言提供了直接实现多分支选择结构的语句:switch语句,也叫开关语句。switch语句的语法形式如下:switch () case :语句1;break; case :语句2;break; . case :语句n;break; default:语句 n+1;break; 4.3 选择结构程序设计switch语句的执行顺序是:首先计算switch语句中表达式的值,当某个case
12、后面的常量表达式的值与switch后面表达式的值相同时,就执行该case后面的语句;当执行到break语句时,跳出switch语句,转向执行switch语句的下一条;如果没有任何一个case后面的常量表达式的值,与switch后面表达式的值相同时,则执行default 后面的语句。 4.3 选择结构程序设计使用switch语句需要注意的地方:1. switch后面的表达式可以是整型、字符型或枚举型表达式,case后面的常量表达式的类型必须与其匹配。2. 每个case后面常量表达式的值必须各不相同,各case及default子句的先后次序不影响程序执行结果。3. 每个case分支可以有多条语句,
13、但不必用 。4. case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,所以必须加上break语句,以便结束switch语句,否则会从入口点开始一直执行到switch结构的结束点。5. 当若干分支需要执行相同操作时,可以使多个case分支共用一组语句。4.3 选择结构程序设计 下面 来看两switch语句应用的实例。例 4-6 用switch语句完成一个简单的计算器,能实现两个浮点数的加减乘除运算。/Ch04_06.c#include void main()float x,y; /运算数char oper; /运算符printf(Enter x,
14、oper,y: );scanf(“%f,%c,%f ”,&x,&oper,&y);switch(oper)case +: printf(x+y=%fn,x+y); break;4.3 选择结构程序设计case -: printf(x-y=%fn,x-y); break;case *:printf(x*y=%fn,x*y); break;case /: if(y=0) printf(divisor is zero!n); break; printf(x/y=%fn,x/y); break;default: printf(operator has no effect!n );4.3 选择结构程序设
15、计执行该程序,运行结果1:Enter x,oper,y: 5+5 x+y=10运行结果2:Enter x,oper,y: 9/0 divisor is zero!运行结果3:Enter x,oper,y: 26 operator has no effect!4.3 选择结构程序设计例 4-7 用switch语句完成一个分制转换程序。用户随机输入一个分数,如果分数在100-90之间,则输出优异;如果在89-80之间,则输出优秀;如果在70-79之间,则输出良好;如果在60-69之间,则输出合格;否则输出不及格。 4.3 选择结构程序设计/Ch04_06.c#include void main()
16、float y; /运算数 int m;printf(Enter a gread(0-100): );scanf(“%f ”, &y); m=(int)y; switch(m/10)case 10: case 9: printf(“优异n); break;case 8:printf(优秀n); break;case 7: printf(良好n); break;case 6: printf(合格n); break;default: printf(不及格!n );4.3 选择结构程序设计执行该程序,运行结果1:Enter a gread(0-100): 100 优异运行结果2:Enter a gr
17、ead(0-100): 87 优秀运行结果3:Enter a gread(0-100): 78 良好运行结果4:Enter a gread(0-100): 65 合格运行结果5:Enter a gread(0-100): 55 不及格4.3 选择结构程序设计4.3.5 选择结构程序设计举例例 4-8 输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上。先将x与y进行比较,如果xy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。接下来比较y和z的大小,按照从小到大的顺序输出即可。参考程序源代码:4.3 选择结构
18、程序设计/Ch04_08.c#include void main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy)t=x;x=y;y=t; /*交换x,y的值*/if(xz)t=z;z=x;x=t;/*交换x,z的值*/if(yz)t=y;y=z;z=t;/*交换z,y的值*/printf(small to big: %d %d %dn,x,y,z);4.3 选择结构程序设计例 4-9 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7
19、.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数。4.3 选择结构程序设计程序分析:可以利用数轴来分界,定位。注意定义时需把奖金定义成长整型。参考程序源代码如下:/Ch04_09.c#include void main()long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,&i);bonus1=1000
20、00*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;4.3 选择结构程序设计if(i=100000)bonus=i*0.1;else if(i=200000)bonus=bonus1+(i-100000)*0.075;else if(i=400000)bonus=bonus2+(i-200000)*0.05;else if(i=600000)bonus=bonus4+(i-400000)*0.03;else if(i=10000
21、00)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(bonus=%d,bonus); 4.3 选择结构程序设计例 4-10 输入某年某月某日,判断这一天是这一年的第几天。程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。参考程序源代码如下:/Ch04_10.c#include void main()4.3 选择结构程序设计int day,month,year,sum,leap;printf(nplease input
22、year,month,dayn);scanf(%d,%d,%d,&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;4.3 选择结构程序设计case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;c
23、ase 11:sum=304;break;case 12:sum=334;break;default:printf(data error);break;4.3 选择结构程序设计sum=sum+day; /*再加上某天的天数*/if(year%400=0|(year%4=0&year%100!=0)/*判断是不是闰年*/leap=1;elseleap=0;if(leap=1&month2)/*如果是闰年且月份大于2,总天数应该加一天*/sum+;printf(It is the %dth day.,sum);4.4循环语句在很多实际问题的处理过程当中,经常会遇到一些具有规律性的重复运算,需要程序
24、中设计某些语句重复执行。循环是计算机解决实际问题的一个重要特性。一组重复执行的语句称作循环体,每一次重复都必须做出继续重复执行还是停止执行的决定,这些决定的条件成为重复的终止条件。循环就是由循环体和终止条件两部分组成。C语言中的循环语句有三种类型: while循环语句、for循环语句和do-while循环语句,另外还可以使用控制语句实现循环的控制。下面给出各种循环语句的语法格式和使用方法。4.4循环语句4.4.1 while循环语句while语句的一般格式如下:while(条件表达式) 循环体其中,while是语句的关键字,在执行while语句时,先对条件表达式进行判断,如果其值为真(非0),
25、则执行循环体中的语句,然后再判断条件表达式的值,重复以上过程,直到条件表达式的值为0时,结束循环,执行结构后面的语句。while的执行流程如图4-2所示:4.4循环语句图4-2while循环4.4循环语句例例4.1编写一个程序计算1到100的和。#include void main() int i=1,sum=0; / 循环变量i赋初值1 ,作控制循环次数 /s赋初值0 (用作累加和) while(i=100) / 循环条件:当i值小于等于100时执行 sum+=i; /累加求和 i+; / 为下一次循环作准备:改变i的值 printf(“%dn”,sum);/输出结果4.4循环语句这个程序的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 控制语句ppt课件 控制 语句 ppt 课件
限制150内