《4(1分支结构).ppt》由会员分享,可在线阅读,更多相关《4(1分支结构).ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Lifang 20082.1C程序设计 if-else if-else 分支语句分支语句 if if 分支语句分支语句 条件分支的嵌套条件分支的嵌套 if-else if if-else if 分支语句分支语句 switchswitch开关分支语句开关分支语句3.2 选择(分支)结构程序设计选择(分支)结构程序设计根据不同的条件,选择不同的程序块进行处理。根据不同的条件,选择不同的程序块进行处理。主要有主要有if if 语句和语句和 switch switch 语句语句Lifang 20082.2C程序设计关系运算关系运算 P91 名名 称称 运算符运算符 小于小于 小于等于小于等于 大于等于
2、大于等于 =等于等于 =不等于不等于 !=关系表达式的值关系表达式的值为逻辑值,即真为逻辑值,即真(非非0)0)和假和假(0)(0),分别用,分别用1 1和和0 0表示。表示。关系满足为真,结果为关系满足为真,结果为1 1。关系不满足为假,结果为关系不满足为假,结果为0 0。优先次序:优先次序:前四种高于后两种;前四种高于后两种;且关系运算符低于算术且关系运算符低于算术运算符,高于赋值运算符;运算符,高于赋值运算符;Lifang 20082.3C程序设计对逻辑值的运算对逻辑值的运算,即即:对真和假两种状态的运算。对真和假两种状态的运算。在在C C语言编译系统中,用数值语言编译系统中,用数值1
3、1代表真,数值代表真,数值0 0代表假。代表假。并且并且 逻辑运算表达式的值仍为逻辑值。逻辑运算表达式的值仍为逻辑值。名名 称称 运算符运算符 逻辑非逻辑非!逻辑与逻辑与&逻辑或逻辑或|例例:a&b、c|d判断一个量是否为真的原则:判断一个量是否为真的原则:若值为若值为0,则代表假,非,则代表假,非0则代表真(不管类型如何)。则代表真(不管类型如何)。逻辑运算逻辑运算 P92优优先先级级Lifang 20082.4C程序设计逻辑运算的真值表逻辑运算的真值表ab!a!ba&ba|b真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假ab!a!ba&ba
4、|b非非0非非00011非非0001010非非01001001100规律规律:(1)a&b&c:若若a为为0,则值为,则值为0;(2)a|b|c:若:若a为为1,则值为,则值为1。Lifang 20082.5C程序设计功能功能:e e 的结果为真的结果为真(非非0),0),则执行则执行 S1S1。e e 的结果为假的结果为假 (0),(0),则执行则执行 S2S2。e eS1S1S2S2真真 非非0 0假假 0 01.if else 分支语句分支语句 if(e)S1;else S2;格式格式:e是表达式是表达式,S1、S2是一个语句或复合语句。是一个语句或复合语句。Lifang 20082.6
5、C程序设计#include main()例例1:1:输入两个整数输入两个整数,将较大的数输出。将较大的数输出。int a,b;printf(“n Please input a,b:”);scanf(“%d,%d”,&a,&b);if(ab)printf(“max=%d”,a);else printf(“max=%d”,b);若题目改为若题目改为“输入两个整数输入两个整数,将较大的数输出。并输出该将较大的数输出。并输出该较大的数约为较小数的几倍较大的数约为较小数的几倍,程序应该怎样改程序应该怎样改?”(注意:当有多条语句时的使用)(注意:当有多条语句时的使用)Lifang 20082.7C程序设
6、计e eS S真真 非非0 0假假 0 0真真 非非0 0假假 0 0e eS S if(e)if(e)S;S;if(!(e)if(!(e)S;S;e e 的结果为真的结果为真(非非0),0),则则继续继续执行执行f f后面的语句。后面的语句。e e 的结果为假的结果为假 (0),(0),则执行则执行S S。e e 的结果为真的结果为真(非非0),0),则执行则执行 S S。e e 的结果为假的结果为假 (0),(0),则则继续继续执行执行ifif后面的语句。后面的语句。格式格式:功能功能:e e 是表达式是表达式,S,S是一个语句或复合语句是一个语句或复合语句 。2.if 分支语句分支语句
7、if(e)if(e)S;S;else else ;Lifang 20082.8C程序设计#includemain()例例:2:2 若输入一个整数是非零数若输入一个整数是非零数,则显示则显示“OKOK!”。否则什么也否则什么也不显示。不显示。int a;printf(“n Please input a:”);scanf(“%d”,&a);if(a)printf(“OK!”);可以是任何数值类型的常量或变量可以是任何数值类型的常量或变量若改成判断输入的数据是否介于若改成判断输入的数据是否介于0 和和100 之间。之间。如果该数不在此范围内,输出如果该数不在此范围内,输出“Error score!”
8、。如果该数在此范围内,不输出如果该数在此范围内,不输出注意:关系、逻辑表达式的使用注意:关系、逻辑表达式的使用Lifang 20082.9C程序设计if(e1)if(e1)if(e2)if(e2)S1;S1;else else S2;S2;else else if(e3)if(e3)S3;S3;else else S4;S4;if(e1)if(e1)S1;S1;elseelse S2;S2;入入口口 出出口口 出出口口s2s2假假真真e1e1e2e2e3e3s1s1s3s3s4s4假假假假真真真真3.条件分支的嵌套条件分支的嵌套入入口口 出出口口 出出口口 出出口口 出出口口Lifang 20
9、082.10C程序设计一句话例例:4 :4 任意输入三个整数,求其中最大的数。任意输入三个整数,求其中最大的数。#includemain()int x,y,z,max;printf(“n Please input x,y,z:”);scanf(“%d%d%d”,&x,&y,&z);if(x=y)if(xz)max=x;else max=z;else if(yz)max=y;else max=z;printf(“n max=%d”,max);注意:本程序中注意:本程序中if else后面的后面的 加不加都可以加不加都可以.Lifang 20082.11C程序设计if(e1)if(e2)s1;el
10、se if (e3)s2;else s3;例如例如:出出口口 出出口口 出出口口 出出口口入入口口注意注意:if 与与 else 配对关系:配对关系:vif 和和 else 的配对关系。一个的配对关系。一个 else 总是与它上面距它最近的,并且没有总是与它上面距它最近的,并且没有其它其它 else 与其配对的与其配对的 if 相配对。相配对。必须有必须有Lifang 20082.12C程序设计if(e1)s1;else if(e2)s2;else if(e3)s3;.else if(en)sn;else sn+1;if(e1)s1;else if(e2)s2;else if(e3)s3;.e
11、lse if(en)sn;else sn+1;if-else if if-else if 结构是条件分支嵌套常用的一种形式结构是条件分支嵌套常用的一种形式,其一般形式为:其一般形式为:4.if-else if 分支语句分支语句 Lifang 20082.13C程序设计例例5:5:学生成绩分学生成绩分A A、B B、C C、D D、E E 五等。任给一个成绩,五等。任给一个成绩,判断它属于哪一等,用判断它属于哪一等,用 if-else if if-else if 分支语句编程。分支语句编程。#includemain()float score;printf(nEnter a score:);sca
12、nf(%f,&score);if(score100)printf(Error Data!);else if(score=90)printf(A n);else if(score=80)printf(B n);else if(score=70)printf(C n);else if(score=60)printf(D n);else if(score=0)printf(E n);else printf(Error Data!);/嵌套if排他算法A=90,A.(90-100)。B=80,B.(80-89)。C=70,C.(70-79)。D=60,D.(60-69)。E=0,E.(0-59)。Li
13、fang 20082.14C程序设计并列并列ifif语句:语句:#includemain()float score;printf(nEnter a score:);scanf(%f,&score);if(score100)printf(Error Data!);if(score=90)printf(A n);if(score=80)printf(B n);if(score=70)printf(C n);if(score=60)printf(D n);if(score=0)printf(E n);else printf(Error Data!);/并列并列if,无法排他,故必,无法排他,故必须通
14、过条件加强来解决须通过条件加强来解决Lifang 20082.15C程序设计条件运算符条件运算符 P102规律:规律:当当if的两个分支都给同一个变量赋值的两个分支都给同一个变量赋值,可用条件表达式代可用条件表达式代替替main()char ch;scanf(“%c”,&ch);ch=(ch=A&chb)?a:b 相当于相当于:if(ab)max=a;else max=b;Lifang 20082.16C程序设计#includemain()int x=10,y=7;int a,b,c;a=(-x=y+)?x:+y;b=x+;c=y;printf(%d%d%d,a,b,c);例:求出下列程序中例
15、:求出下列程序中x,y,a,b,cx,y,a,b,c的值的值x=10,y=9,a=9,b=9,c=9Lifang 20082.17C程序设计上机安排上机安排信息0706-08 3-15周 周四5、6节北一机房信息0709-10 3-15周 周四7、8 节 北四机房Lifang 20082.18C程序设计1、完成、完成P111 5.4,5.5,5.7的调试的调试2、练习其他顺序结构和分支结构程序设计。、练习其他顺序结构和分支结构程序设计。上上 机机(第(第3周)周)课下作业:完成每章其他课后题。(如:课下作业:完成每章其他课后题。(如:5.3等)等)并在上机过程中进行验证。并在上机过程中进行验证。上机要求上机要求:提前做好准备,将要调试的程序事先写在作业:提前做好准备,将要调试的程序事先写在作业纸上带到机房!上机过程中进行调试修改。纸上带到机房!上机过程中进行调试修改。抽查抽查
限制150内