




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章选择结构程序设计计算中心1第四章选择结构程序设计一、关系运算符和关系表达式二、逻辑运算符和逻辑表达式三、使用if语句实现的选择结构四、条件运算符和条件表达式五、switch语句六、选择结构程序举例主要内容2关系运算符<<=>>===!=(6种)第四章选择结构程序设计优先级赋值
<关系(后2<前4)<算术关系表达式用关系运算符将两个表达式连接起来的式子.算术、关系、逻辑、赋值、字符。值真(1)假(0)5>3一、关系运算符和关系表达式3
a>b比较两个变量的大小
5<4比较两个常量的大小
a>=5比较变量和常量的大小
a+b==c*d比较表达式的值的大小
a>b>c比较表达式的值的大小
a!=b<c比较表达式的值的大小举例4举例已知a=5,b=4,c=3,d=7
求下列表达式的值a+b==c*da>b>ca!=b<c由于算术运算符的优先级高于关系运算符,这里先计算a+b的值为9,c*d的值为21,再判断运算符两边的值是否相等,表达式值为0首先按从左到右的顺序先计算表达式a>b的值,结果为1,再计算1>c的值,表达式值为0。注意:此表达式经常被误当作是判断b的值是否在a与c之间,使用关系表达式连写的时候要特别小心。由于“!=”的优先级低于“<”的优先级,先计算b<c的值为0,再比较a和0的值是否满足不等关系,由于5不等于0条件满足,该表达式值为1。5逻辑运算符
!(逻辑非)
&&(逻辑与)
||(逻辑或)运算规则优先次序赋值
<||<&&<关系
<
算术
<!第四章选择结构程序设计(1)!:取逻辑值的相反值。(2)&&:参加运算的两个逻辑值都为真时,结果为真(1)。(3)||:参加运算的两个逻辑值都为假时,结果为假(0)。逻辑表达式用逻辑运算符将关系表达式和逻辑量连接起来的式子。举例已知:(a=1b=0)1a||b&&0!a&&(5>3)||b0双目单目二、逻辑运算符和逻辑表达式6第四章选择结构程序设计举例5>3&&8<4-!00(5>3)&&(8<(4-!0))4&&5>3||21注意逻辑运算符两侧的运算对象不但可以是0和1,也可以是0或非0的整数,也可是任何类型的数据。系统判定标准:0为假;非0为真。二、逻辑运算符和逻辑表达式7例4.2已知:a=1,b=0,求逻辑表达式!a&&(5>3)||b的值。因为a=1,所以a为“真”,那么!a就为“假”;由于!a为“假”,所以不再求解表达式“5>3”,此时表达式“!a&&(5>3)”的运算结果为“假”,其值为0;又b=0,所以逻辑表达式!a&&(5>3)||b的运算结果为“假”,其值为0。例4.3求逻辑表达式4&&5>3||2的值。
因为4非0,为“真”,所以继续求解表达式“5>3”;又因为5大于3,所以关系表达式5>3成立,运算结果为“真”,其值为1,因此4&&5>3为“真”,其值为1;由于“||”运算符的左边为“真”,所以逻辑表达式4&&5>3||2的运算结果为“真”,其值为1。8选择结构单分支双分支if(表达式)语句多分支if(表达式)语句1else语句2if(表达式1)语句1elseif(表达式2)语句2……else语句nif语句的嵌套switch语句第四章选择结构程序设计选择结构的总类9格式流程图第四章选择结构程序设计if(表达式)语句三、if语句实现选择结构–单分支不成立(假、0)表达式语句块成立(真、1)if(x>y)printf(“%d”,x);举例语句可以是单语句或复合语句10举例第四章选择结构程序设计#include"stdio.h"intmain(){intnum1,num2,max;printf("inputtwonumbers:\n");scanf("%d%d",&num1,&num2);max=num1;if(max<num2)max=num2;printf("max=%d\n",max);return0;}5641
max=56三、if语句实现选择结构–单分支11举例if(x>y)printf(“%d”,x);第四章选择结构程序设计#include<stdio.h>intmain(){floata,b,t=0;
scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f\n”,a,b);return0;}3,43.00,4.00……if(a>b)t=a;a=b;b=t;…………if(a>b)t=a;a=b;b=t;……3,44.00,0.00当某些语句作为一个整体出现的时候,必须是复合语句的形式。三、if语句实现选择结构–单分支12格式if(x>y)printf(“%d”,x);elseprintf(“%d”,y);第四章选择结构程序设计if(表达式)语句1else语句2三、if语句实现选择结构–双分支举例流程图13第四章选择结构程序设计#include<stdio.h>#include<math.h>intmain(){floata,b,c,p,s;
scanf(“%f,%f,%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)
{
p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“s=%7.2f\n”,s);
}else
printf(“Notatriangle!\n”);return0;}例:输入三角形的三边,求三角形的面积。3,4,5s=6.003,4,8Notatriangle!三、if语句实现选择结构–双分支14格式举例第四章选择结构程序设计if(cost>3000)cash=500;elseif(cost>2000)cash=300;elseif(cost>1500)cash=200;elseif(cost>1000)cash=100;elsecash=0;if(表达式1)语句1elseif(表达式2)语句2……else语句n注意语句本身含分号;语句可以是复合语句三、if语句实现选择结构–多分支(一)15if语句的嵌套第四章选择结构程序设计在if语句中又包含一个或多个if语句。被嵌套的条件语句和嵌套进去的条件语句既可是单分支,也可是双分支。if(表达式1)
if(表达式2)语句1
[else语句2][else
if(表达式3)语句3
[else语句4]]注意if与else的配对原则:else总是与它上面的最近的未配对的if配对。分析方法1、主句是单分支还是双分支的。2、嵌套进来的子句是双分支还是单分支的,嵌套在if后面还是else后面。(三)、if多分支(二)16举例第四章选择结构程序设计已知a=3b=4c=5d=0,d=?if(a>b)d=a;elseif(c>b)d=c;elsed=b;if(a>b)if(c>b)d=c;elsed=b;if(a>b){if(c>b)d=c;}elsed=b;if(a>b)if(c>b)d=c;elsed=b;elsed=a;d=5d=3d=0d=4(三)、if多分支(三)17例4.11
编程实现分段函数。y=0x≤01.0/x0<x≤105x-1x>202x+110<x≤20问题分析:(1)判断条件x≤0.0是否成立,如果成立y=0.0(2)判断条件x≤10.0是否成立,如果成立y=1.0/x;(3)判断条件x≤20.0是否成立,如果成立y=2*x+1;(4)以上条件都不成立y=5*x-1;18#include"stdio.h"intmain(){floatx,y;
scanf("%f",&x);
if(x<=0.0)y=0.0;elseif(x<=10.0)y=1.0/x; elseif(x<=20.0)y=2*x+1;
elsey=5*x-1;printf("x=%.2f,y=%.2f\n",x,y);return0;}第一次运行:用户输入:5并回车程序输出:x=5.00,y=0.20..第二次运行:用户输入:15并回车程序输出:x=15.00,y=31.00第三次运行:输入:21.67并回车输出:x=21.67,y=107.3519使用if语句中应注意的问题在if关键字之后的括弧内为表达式,该表达式通常是逻辑表达式或关系表达式,但也可以是其它任何合法的C表达式条件判断表达式必须用括弧括起来,在语句之后必须加分号。如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句
20条件运算符条件表达式举例if(a>b)max=a;elsemax=b;第四章选择结构程序设计表达式1?表达式2:表达式3max=(a>b)?a:b;说明条件运算符的使用条件若if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值,则可以用简单的条件运算符来处理。取值表达式1为真,则取值为表达式2的值;表达式1为假,则取值为表达式3的值。四、条件运算符和条件表达式21例4.14使用条件表达式求两个数的较大值。#include<stdio.h>intmain(){floatnum1,num2,max=0;scanf("%f,%f",&num1,&num2);max=(num1>num2)?num1:num2;printf("%5.2f\n",max);return0;}程序运行情况:第一次运行:用户输入:3.2,4并回车程序输出:4.00第二次运行:用户输入:4,3.2并回车程序输出:4.0022开关语句第四章选择结构程序设计switch(表达式){case常量表达式1:语句1case常量表达式2:语句2case常量表达式3:语句3……case常量表达式n:语句ndefault:语句n+1}当分支较多时,使用嵌套的if语句层数多,程序冗长而且可读性降低。此时可以考虑使用switch语句(开关语句)来处理多分支。五、switch语句实现多分支23举例#include<stdio.h>voidmain(){chargrade;
printf(“请输入考试等级A~D:”);
scanf(“%c”,&grade);switch(grade){case‘A’:printf(“80~100\n”);case‘B’:printf(“70~79\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“error\n”);}}B70~7960~69<60Error根据输入的考试成绩等级打印出百分制分数段。A:80~100B:70~79C:60~69D:<60说明:应在每一个printf后加break语句第四章选择结构程序设计
(五)、switch多分支(二)24举例#include<stdio.h>voidmain(){chargrade;
printf(“请输入考试等级A~D:”);
scanf(“%c”,&grade)switch(grade){case‘A’:printf(“80~100\n”);break;case‘B’:printf(“70~79\n”);break;case‘C’:printf(“60~69\n”);break;case‘D’:printf(“<60\n”);break;default:printf(“error\n”);}}B70~79根据输入的考试成绩等级打印出百分制分数段。A:80~100B:70~79C:60~69D:<60最后一行的break可以省略。第四章选择结构程序设计(五)、switch多分支(三)25思考#include<stdio.h>voidmain(){
intscore;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);if(score>100)
printf(“请输入0~100之间的整数\n”);elseif(score>=80)
printf(“A\n”);elseif(score>=70)
printf(“B\n”);elseif(score>=60)
printf(“C\n”);else
printf(“D\n”);}根据输入的考试成绩(百分制整数)打印出等级水平。(使用if~else语句实现)A:80~100B:70~79C:60~69D:<60思考:使用switch语句如何实现?程序第四章选择结构程序设计(五)、switch多分支(四)26思考#include<stdio.h>voidmain(){
intscore;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);switch(score){case80~100:printf(“A\n”);break;case70~79:printf(“B\n”);break;case60~69:printf(“C\n”);break;case<60:printf(“D\n”);break;default:printf(“请输入0~100之间的整数\n”);}}根据输入的考试成绩(百分制整数)打印出等级水平。(使用switch语句实现)A:80~100B:70~79C:60~69D:<60思考:本程序有问题么?程序第四章选择结构程序设计(五)、switch多分支(五)27#include<stdio.h>voidmain(){
intscore,p;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);p=score/10;switch(p){case0:printf(“D\n”);break;case1:printf(“D\n”);break;case2:printf(“D\n”);break;case3:printf(“D\n”);break;case4:printf(“D\n”);break;case5:printf(“D\n”);break;case6:printf(“C\n”);break;case7:printf(“B\n”);break;case8:printf(“A\n”);break;case9:printf(“A\n”);break;case10:printf(“A\n”);break;default:printf(“请输入0~100之间的整数\n”);}}改进程序111种情况思考:不同case值时执行相同的操作,是否可以合并?第四章选择结构程序设计28#include<stdio.h>voidmain(){
intscore,p;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);p=score/10;switch(p){
case0:case1:case2:case3:case4:case5:printf(“D\n”);break;case6:printf(“C\n”);break;case7:printf(“B\n”);break;
case8:case9:case10:printf(“A\n”);break;default:printf(“请输入0~100之间的整数\n”);}}改进程序2注意:多个case共用一组执行语句时,共用的执行语句写在最后一个case的后面。第四章选择结构程序设计29第四章选择结构程序设计例2求方程ax2+bx+c=0的解.(各种形式)真a=0真假输出“非二次方程”b2-4ac=0真输出两个实根:x1,x2输出两个相等实根:假b2-4ac>0假计算复根的实部和虚部:实部虚部输出两个复根:p+qi,p-qi六、选择结构程序设计举例(一)30第四章选择结构程序设计#include<stdio.h>#include<math.h>voidmain(){
floata,b,c,disc,x1,x2,realpart,imagpart;
scanf("%f,%f,%f",&a,&b,&c);
printf("Theequation");if(a==0)
printf("isnotaquadratic");else
{disc=b*b-4*a*c;
if
(disc==0)
printf("hastwoequalroots:%8.4f\n",-b/(2*a));
else
if(disc>0)
{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);
printf("hasdistinctrealroots:%8.4fand%8.4f\n",x1,x2);}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省肥东县二中2025年高考物理试题二模试题及参考答案含解析
- 武汉城市学院《影视服装赏析》2023-2024学年第一学期期末试卷
- 烟台职业学院《建筑师执业知识与设计管理》2023-2024学年第二学期期末试卷
- 工地5S现场管理
- 外墙的施工方案
- 安全环保培训
- 培训调研报告怎用
- 分级护理课件
- 幼教培训课件:《幼儿园卫生保健工作管理》
- 2025年ASQ-CMQ-OE质量经理认证考前通关必练(中文版)考试题库-含答案
- 《第3单元 角的度量:角的度量》课件
- 微塑料污染完整版本
- 四年级劳动练习试题及答案
- 户口未婚改已婚委托书
- 2024年中国物流招聘笔试参考题库附带答案详解
- 2024年中国饰品行业发展状况与消费行为洞察报告-艾媒咨询
- 二甲双胍恩格列净片(Ⅲ)-临床用药解读
- 2024带病体保险创新研究报告
- 余华小说第七天阅读分享
- 3.28百万农奴解放纪念日演讲稿1500字2篇
- 员工节能环保培训课件
评论
0/150
提交评论