资源预览内容
第1页 / 共101页
第2页 / 共101页
第3页 / 共101页
第4页 / 共101页
第5页 / 共101页
第6页 / 共101页
第7页 / 共101页
第8页 / 共101页
第9页 / 共101页
第10页 / 共101页
亲,该文档总共101页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4章 选择结构程序设计4.1 4.1 选择结构和条件判断选择结构和条件判断在现实生活中,需要进行判断和选择的 情况是很多的u如果你在家,我去拜访你u如果考试不及格,要补考u如果遇到红灯,要停车等待u周末我们去郊游u70岁以上的老年人,入公园免票例如:输入三角形的三边a,b,c,判断是否能构成三角形,若能构成三角形,则求出三角形的周长和面积。处理这些问题,关键在于进行条件判断。这类问题必须让计算机按给定的条件进行分析、比较和判断,并按判断后的不同情况进行不同的处理,这种情况属于选择结构程序设计。4.1 4.1 选择结构和条件判断选择结构和条件判断C语言有两种选择语句:(1)if语句,实现两个分支的选择结构(2)switch语句,实现多分支的选择结构4.1 4.1 选择结构和条件判断选择结构和条件判断例4.1 在例3.5的基础上对程序进行改 进。题目要求是求ax2+bx+c=0方程的根 。由键盘输入a,b,c。假设a,b,c的值任意 ,并不保证 。需要在程序中进 行判别,如果 ,就计算并输出 方程的两个实根,否则就输出“方程无实根 ”的信息。 解题思路: 输入a,b,c计算discdisc#include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(“%lf%lf%lf“,disc=b*b-4*a*c; 计算b2-4ac,disc的值变为-15if (disc#include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(“%lf%lf%lf“,disc=b*b-4*a*c; 计算b2-4ac,disc的值变为8if (disc int main() float a,b,t;scanf(“%f,%f“,if(ab) t=a;a=b;b=t;printf(“%5.2f,%5.2fn“,a,b);return 0; 将a和b的值互换如果ab#include int main() float a,b,t;scanf(“%f,%f“,if(ab) t=a;a=b;b=t;printf(“%5.2f,%5.2fn“,a,b);return 0; 选择结构,用if语句实现的例4.3 输入3个数a,b,c,要求按由小 到大的顺序输出。解题思路:可以先用伪代码写出算法:uif ab,a和b对换 (a是a、b中的小者)uif ac,a和c对换 (a是三者中最小者)uif bc,b和c对换 (b是三者中次小者)u顺序输出a,b,c#include int main() float a,b,c,t;scanf(“%f,%f,%f“,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(“%5.2f,%5.2f,%5.2fn“,a,b,c); return 0; 如果 ab,将a和b对换 a是a、b中的小者#include int main() float a,b,c,t;scanf(“%f,%f,%f“,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(“%5.2f,%5.2f,%5.2fn“,a,b,c); return 0; 如果 ac,将a和c对换 a是三者中的小者#include int main() float a,b,c,t;scanf(“%f,%f,%f“,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(“%5.2f,%5.2f,%5.2fn“,a,b,c); return 0; 如果 bc,将b和c对换 b是三者中的次小者4.2.2 if4.2.2 if语句的一般形式语句的一般形式if (表达式) 语句1 else 语句2 关系表达式 逻辑表达式 数值表达式方括号内的部分为可选的4.2.2 if4.2.2 if语句的一般形式语句的一般形式if (表达式) 语句1 else 语句2 简单的语句 复合语句 另一个if语句等最常用的3种if语句形式: 1. if (表达式) 语句1 (没有else子句)main() int a,b,x;scanf(“a=%d,b=%d“,if (ay) printf(“%d“,x);else printf(“%d“,y);main() int num1,num2,num3,max;printf(“Please input three numbers:“);scanf(“%d,%d,%d“,if (num1num2)max=num1;elsemax=num2;if (num3max)max=num3;printf(“The three numbers are:%d,%d,%dn“,num1,num2,num3);printf(“max=%dn“,max); 输入任意三个整数num1、num2、num3,求三个数中的最大值。if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else if (表达式n) 语句n; else 语句 n+1;3第三种格式:图 if语句第三种格式流程图if (score89) grade=5; else if(score 74) grade=4; else if(score 59) grade=3; else grade=2;例如:图 if语句第三种格式N-S图if(number 500) cost = 0.15; else if (number 300) cost = 0.10; else if (number 100) cost = 0.075; else if (number 50) cost = 0.05; else cost=0;说明: (1)整个if语句可写在多行上,也可写在一行上但都是一个整体,属于同一个语句 (2)“语句1”“语句n”是if中的内嵌语句内嵌语句也可以是一个if语句 (3)“语句1”“语句n”可以是简单的语句,也 可以是复合语句4.34.3关系运算符和关系表达式关系运算符和关系表达式4.3.1关系运算符及其优先次序4.3.2 关系表达式4.3.14.3.1关系运算符及其优先次序关系运算符及其优先次序关系运算符:用来对两个数值进行比较的比较运算符语言提供种关系运算符: (小于) = (小于或等于) (大于) = (大于或等于) = (等于) != (不等于) 优先级相同 (高)优先级相同 (低)4.3.14.3.1关系运算符及其优先次序关系运算符及其优先次序关系、算术、赋值运算符的优先级算术运算符 (高)赋值运算符 (低)关系运算符 4.3.14.3.1关系运算符及其优先次序关系运算符及其优先次序ca+b 等效于 c(a+b)ab=c 等效于 (ab)=ca=bc 等效于 a=(bc)4.3.2 4.3.2 关系表达式关系表达式关系表达式u用关系运算符将两个数值或数值表达式连 接起来的式子u关系表达式的值是一个逻辑值,即“真” 或“假”u在C的逻辑运算中,以“”代表“真”,以 “”代表“假”4.4 4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.4.1 逻辑运算符及其优先次序4.4.2 逻辑表达式4.4.3 逻辑型变量4.4.1 4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序3种逻辑运算符:scanf(“%f”,_Bool a,b;a=score=60;b=scoreb)max=a;else max=b;max = (a b) ? a : b;条件运算符4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式有一种if语句,当被判别的表达式的值 为“真”或“假” 时,都执行一个赋值语句 且向同一个变量赋值 如:if (ab)max=a;else max=b;max = (a b) ? a : b;条件表达式4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式条件表达式的一般形式为表达式?表达式: 表达式4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式条件运算符的执行顺序:u求解表达式1u若为非0(真)则求解表达式2,此时表达 式2的值就作为整个条件表达式的值u若表达式1的值为0(假),则求解表达式 3,表达式3的值就是整个条件表达式的值4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式条件运算符优先于赋值运算符条件运算符的结合方向为“自右至左”以下为合法的使用方法:uab ? (max=a):(max=b);uab ? printf(“%d”,a): printf(“%d”,b);4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式例4.4 输入一个字符,判别它是否大写 字母,如果是,将它转换成小写字母; 如果不是,不转换。然后输出最后得到 的字符。4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式解题思路:用条件表达式来处理,当字 母是大写时,转换成小写字母,否则不 转换4.5 4.5 条件运算符和条件表达式条件运算符和条件表达式#include int main() char ch;scanf(“%c“,ch=(ch=A if(x0) y = 1; printf(“x=%d,y=%dn“,x,y);4.6 4.6 选择结构的嵌套选择结构的嵌套解题思路:方法2(2) 用一个嵌套的if语句处理:输入x若x =0)if (x0) y=1;else y=0; else y=-1; printf(“x=%d,y=%dn“,x,y);提倡内嵌if放在else中4.7 4.7 用用switchswitch语句实现多分支选择结构语句实现多分支选择结构switch语句用来实现多分支选择结构u学生成绩分类85分以上为A等7084分为B等6069分为C等u人口统计分类按年龄分为老、中、青、少、儿童4.7 4.7 用用switchswitch语句实现多分支选择结构语句实现多分支选择结构例4.6 要求按照考试成绩的等级输出百 分制分数段,A等为85分以上,B等为 7084分,C等为6069分 ,D等为 60分以下 。成绩的等级由键盘输入。4.7 4.7 用用switchswitch语句实现多分支选择结构语句实现多分支选择结构解题思路:u判断出这是一个多分支选择问题u根据百分制分数将学生成绩分为4个等级u如果用if语句,至少要用3层嵌套的if,进行 3次检查判断u用switch语句进行一次检查即可得到结果#include int m
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号