《逻辑表达与流程控制精选文档.ppt》由会员分享,可在线阅读,更多相关《逻辑表达与流程控制精选文档.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、逻辑表达与流程控制本讲稿第一页,共四十七页1本章学习要点本章学习要点 关系运算关系运算逻辑运算逻辑运算if语句及语句及if语句的嵌套语句的嵌套switch语句语句 本讲稿第二页,共四十七页5.1 关系运算关系运算x=15比较比较 x 和和 15 的大小的大小比较的结果:比较的结果:真真 假假当当 x 取值取值9.5时,时,x=15的结果是:?的结果是:?当当 x 取值取值21.3时,时,x=15的结果是:?的结果是:?关系运算符关系运算符x y x y x=y x!=y关系表达式:关系表达式:用用关系运算符关系运算符将将2个个表达式表达式连接起来的式子。连接起来的式子。如:如:x=1区分区分=
2、和和=本讲稿第三页,共四十七页运用关系表达式运用关系表达式表示比较的数学式表示比较的数学式 C关系表达式关系表达式x10 x10 x10 x=10 x=10 x!=10 x=10用关系表达式描述条件用关系表达式描述条件判断判断 x 是否为负数是否为负数 x 0判断判断 x 是否不为零是否不为零 x!=0 本讲稿第四页,共四十七页5.2 逻辑运算逻辑运算x=1 关系运算关系运算-1=x=-1 并且并且 x=-1&x 1)&(y1)(x1)|(y1)(x1)!(x1)即即 x=a)&(ch=a&ch=A&ch=Z)判断判断ch 是否为英文字母是否为英文字母 本讲稿第九页,共四十七页条件的表示条件的
3、表示例例1 写出满足下列条件的写出满足下列条件的C表达式。表达式。ch 是空格或者回车。是空格或者回车。ch=|ch=nnumber是偶数。是偶数。number%2=0year 是闰年,即是闰年,即 year 能被能被 4 整除但不能被整除但不能被 100 整除,或整除,或 year 能被能被 400 整除。整除。(year%4=0&year%100!=0)|(year%400=0)本讲稿第十页,共四十七页5.3 选择控制结构选择控制结构if语句语句 1 if语句的简单形式语句的简单形式 if(表达式表达式)语句语句 本讲稿第十一页,共四十七页例例 2 打印出不及格的成绩打印出不及格的成绩 本
4、讲稿第十二页,共四十七页例例3 输入一个整数,输出它的绝对值输入一个整数,输出它的绝对值分析:分析:当当number=0时,时,?本讲稿第十三页,共四十七页#include int main(void)int number;printf(Enter a number:);scanf(%d,&number);if(number 0)number=-number;printf(The absolute value is%d.n,number);return 0;运行结果:运行结果:Enter a number:10 The absolute value is 10.运行结果:运行结果:Enter
5、a number:-300 The absolute value is 300.本讲稿第十四页,共四十七页2.ifelse结构结构 if(表达式表达式)语句语句1else 语句语句2 本讲稿第十五页,共四十七页解解 我们可以使用两种方法编程:我们可以使用两种方法编程:方法一:方法一:用两个简单的用两个简单的if语句实现:语句实现:main()float score;scanf(%f,&score);if(score=60.0)printf(score=%5.1f-Passn,score);例例 4 打印成绩打印成绩60分为分为“Pass”,否则为否则为“Fail”。本讲稿第十六页,共四十七页方
6、法二:方法二:用用ifelse语句实现:语句实现:main()float score;scanf(%f,&score);if(score9)y=100;else y=200;用条件运算符改写程序段:用条件运算符改写程序段:x=10;y=x9?100:200;本讲稿第十九页,共四十七页例例5 输入输入x的值,的值,当当x0时调用时调用sqrt(x),否,否则则调用调用fabs(x)。#include#include main()float x,y;scanf(%f,&x);y=x0?sqrt(x):fabs(x);printf(x=%f,y=%fn,x,y);本讲稿第二十页,共四十七页3 多分支
7、结构与嵌套的多分支结构与嵌套的 if 语句和语句和switch语句语句多分支结构有多种形式多分支结构有多种形式实现方法实现方法:n嵌套的嵌套的 if 语句语句 else if 语句语句嵌套的嵌套的 if-else语句语句nswitch语句语句 本讲稿第二十一页,共四十七页(1)嵌套的)嵌套的 if 语句语句if(表达式表达式)语句语句1else 语句语句2 if 语句语句 if 语句语句o else if 语句语句o 嵌套的嵌套的 if-else语句语句 本讲稿第二十二页,共四十七页if(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2else if(表达式表达式n-1)语
8、句语句n-1else 语句语句n假假表表达达式式1表表达达式式2语句语句1语句语句2语句语句n-1语句语句n真 表达式表达式n-1假假真真 假假假假真 本讲稿第二十三页,共四十七页嵌套的嵌套的 if else 语句语句if(表达式表达式1)if(表达式表达式2)语句语句1else 语句语句2 elseif(表达式表达式3)语句语句3 else 语句语句4 表达式表达式1表达式表达式3语句语句4真真 假假表达式表达式2语句语句3语句语句1语句语句2真真 真真 假假假假 本讲稿第二十四页,共四十七页if(x 1)y=x+1;else if(x 2)y=x+2;else y=x+3;if(x 2)i
9、f(x 1)y=x+1;else y=x+2;else y=x+3;x2 x1y=x+1y=x+2真真 假假真真 y=x+3假假假假 x1 x=90)printf(Very Goodn);else if(score=80)printf(Goodn);else if(score=60)printf(Passn);else printf(Failn);本讲稿第二十九页,共四十七页main()float score;scanf(%f,&score);if(score=80)if(score=90)printf(Very Goodn);else printf(Goodn);else if(score=
10、60)printf(Passn);else printf(Failn);方法二:方法二:if嵌套结构来实现嵌套结构来实现 本讲稿第三十页,共四十七页 main()float score;scanf(%f,&score);if(score=60)printf(Passn);else if(score=80)printf(Goodn);else printf(Very Goodn);分析改写成以下形式:分析改写成以下形式:本讲稿第三十一页,共四十七页(2)switch语句语句 处理多分支选择问题,处理多分支选择问题,3种情况种情况1)在在switch语句的每个语句段中都使用语句的每个语句段中都使用
11、break语句语句switch(表达式表达式)case 常量表达式常量表达式1:语句段:语句段1;break;case 常量表达式常量表达式2:语句段:语句段2;break;.case 常量表达式常量表达式n:语句段:语句段n;break;default:语句段语句段n+1;break;本讲稿第三十二页,共四十七页 假假设设自自动动售售货货机机出出售售4 4种种商商品品,薯薯片片(crisps)(crisps)、爆爆米米花花(popcorn)(popcorn)、巧巧克克力力(chocolate)(chocolate)和和可可乐乐(cola)(cola),售售价价分分别别是是每每份份3.03.0
12、、2.52.5、4.04.0和和3.53.5元元。在在屏屏幕幕上上显显示示以以下下菜菜单单,用用户户可可以以连连续续查查询询商商品品的的价价格格,当当查查询询次次数数超超过过5 5次次时时,自自动动退退出出查查询询;不不到到5 5次次时时,用用户户可可以以选选择择退退出出。当当用用户户输输入入编编号号1-4,1-4,显显示示相相应应商商品品的的价价格格;输输入入0 0,退退出出查查询询;输输入入其其他编号,显示价格为他编号,显示价格为0 0。1 Select crisps1 Select crisps2 Select popcorn 2 Select popcorn 3 Select choc
13、olate3 Select chocolate4 Select cola 4 Select cola 0 Exit0 Exit例例7 查询自动售货机中商品的价格查询自动售货机中商品的价格 本讲稿第三十三页,共四十七页表达式的值表达式的值=常量表达式常量表达式 2 的值的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式的值表达式的值=常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他breakbreakbreakbreakswitch(choice)case 1:price=3.0;break;case 2:pric
14、e=2.5;break;case 3:price=4.0;break;case 4:price=3.5;break;default:price=0.0;break;本讲稿第三十四页,共四十七页#include int main(void)int choice,i;double price;for(i=1;i=5;i+)printf(1 Select crisps n);printf(2 Select popcorn n);printf(3 Select chocolate n);printf(4 Select cola n);printf(0 exit n);printf(Enter choi
15、ce:);scanf(%d,&choice);if(choice=0)break;switch(choice)case 1:price=3.0;break;case 2:price=2.5;break;case 3:price=4.0;break;case 4:price=3.5;break;default:price=0.0;break;printf(price=%0.1fn,price);printf(Thanks n);1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice:1p
16、rice=3.01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice:7price=0.01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice:0Thanks 本讲稿第三十五页,共四十七页 2)在switch中不使用breakswitch(表达式表达式)case 常量表达式常量表达式1:语句段:语句段1;case 常量表达式常量表达式2:语句段:语句段2;.case 常量表
17、达式常量表达式n:语句段:语句段n;default:语语句句段段n+1;本讲稿第三十六页,共四十七页switch(choice)case 1:price=3.0;case 2:price=2.5;case 3:price=4.0;case 4:price=3.5;default:price=0.0;表达式的值表达式的值=常量表达式常量表达式 2 的值的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式表达式的值的值=常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他 本讲稿第三十七页,共四十七页3)在在switch的
18、某些语句段中使用的某些语句段中使用breakswitch(choice)case 1:price=3.0;break;case 2:price=2.5;case 3:price=4.0;break;case 4:price=3.5;default:price=0.0;本讲稿第三十八页,共四十七页 用用switch语语句句输输出出学学生生的的分分数数等等级级。设设分分数数大大于于等等于于90分分者者为为A等等,70分分90分分为为B等等(含含70),60分分70分分为为C等等(含含60),60分以下为分以下为D等,分数为浮点数。等,分数为浮点数。编程思路:编程思路:switch后后的的表表达达式
19、式必必须须是是有有类类型型而而且且求求出出的的结结果果应应当当是是一一个个个个离离散散的的值值,而而不不是是一一个个数数值值范范围围。应应该该想想办办法法把把一一个个范范围围转转换换成成一一个个确确定定的的值值,这这是是使使用用switch语句的关键。语句的关键。我我们们可可以以把把分分数数除除以以10再再取取整整,即即可可变变成成离离散散的的数数值值,就可以用就可以用switch语句解决了。语句解决了。例例8 设计下面程序设计下面程序 本讲稿第三十九页,共四十七页#include main()int i;float score;printf(Input a score:);scanf(%f,
20、&score);i=score/10;switch(i)case 10:case 9:printf(A);break;case 8:case 7:printf(B);break;case 6:printf(C);break;default:printf(D);return 0;本讲稿第四十页,共四十七页例例9:输入两个整数:输入两个整数a和和b,按从小到大的顺,按从小到大的顺序输出。序输出。算法设计:算法设计:scanf(“%d%d”,&a,&b);如果如果ab,则,则a和和b交换值;交换值;printf(“%d%d”,a,b);5.3 程序举例程序举例 本讲稿第四十一页,共四十七页#incl
21、udemain()int a,b,t;printf(请输入两个整数:请输入两个整数:);scanf(%d%d,&a,&b);if(ab)t=a;a=b;b=t;printf(%d%d,a,b);本讲稿第四十二页,共四十七页例例10:输入三个整数:输入三个整数a,b,c,按从小到大的顺,按从小到大的顺序输出。序输出。算法设计:算法设计:scanf(“%d%d%d”,&a,&b,&c);如果如果ab,则,则a和和b交换值;交换值;如果如果ac,则,则a和和c交换值;交换值;如果如果bc,则,则b和和c交换值;交换值;printf(“%d%d%d”,a,b,c);本讲稿第四十三页,共四十七页#inc
22、ludemain()int a,b,c,t;printf(请输入三个整数:请输入三个整数:);scanf(%d%d%d,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%d%d%d,a,b,c);本讲稿第四十四页,共四十七页 例例11 编编写写一一个个可可由由用用户户键键入入简简单单表表达达式式的的程序,形式如下:程序,形式如下:number operator number 要要求求:该该程程序序要要计计算算该该表表达达式式并并以以两两位位小小数数显显示示结结果果。识识别别的的运运算算符符operat
23、or为为加加、减减、乘乘、除。除。例如:例如:输入:输入:3.1+4.8 输出:输出:7.9 本讲稿第四十五页,共四十七页#include int main(void)char oper;double value1,value2;printf(Type in an expression:);scanf(%lf%c%lf,&value1,&oper,&value2);switch(oper)case +:printf(=%.2fn,value1+value2);break;case -:printf(=%.2fn,value1-value2);break;case *:printf(=%.2fn,value1*value2);break;case /:printf(=%.2fn,value1/value2);break;default:printf(Unknown operatorn);break;return 0;本讲稿第四十六页,共四十七页作业 p111页:页:3-7题题 本讲稿第四十七页,共四十七页