第5章 选择结构程序设计(一)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

复习1.标准字符输出函数?2.标准字符输入函数?3.格式输出函数?4.格式输入函数?putchar(变量)getchar()printf(格式控制,输出表列)scanf(格式控制,地址表列)%d,%f,%ld,%c,%s,%8.2f,%4d%d,%ld,%f,%lf,%c引入:上节讲了当一元二次方程△=0的求解,当△0时应如何处理?第5章选择结构程序设计关系运算符和关系表达式逻辑运算符和逻辑表达式if语句switch语句选择结构程序举例5.1关系运算关系运算,也称为比较运算,即将两个值进行比较,如:a=3。一.关系运算符====!=大于,小于,大于等于,小于等于,等于,不等于二.关系表达式用关系运算符将两个表达式连接起来的式子。关系表达式的值为:逻辑值“真”,“假”。5.1关系运算若a=5,a=3的值为“真”。若a=2,a=3的值为“假”。C语言中没有逻辑型数据,因此以“1”代表真,以“0”代表假。系统给出运算结果时,以“1”代表“真”,“0”代表假,即若真赋“1”,假赋“0”。判断一个量是否为真时,以非0代表“真”,以0代表“假”。5.1关系运算三.优先级关系运算:,=,,=同级高==,!=同级低如:a=1,b=2,c=3;ab!=c,相当于(ab)!=c其结果:ab0,0!=c(真:1)各种运算:(由低到高)赋值运算关系运算算术运算如a=1,b=2,c=3;ca+b相当于c(a+b)结果:问:a=2*bc+2?d=a+1bc?0(假)a+1b为0,0c为1,d=1(从左至右结合)0(假)5.2逻辑运算一、逻辑运算符三种:(1)逻辑与:&&(AND)并且(2)逻辑或:||(OR)或者(3)逻辑非:!(NOT)不是二、逻辑表达式将关系表达式或逻辑量用逻辑运算符连接的表达式。逻辑表达式的值为逻辑值:真(1),假(0)1.&&:两个同时为真,才为真如:(a==0)&&(bc);a=1,b=2,c=32.||:只有一个为真即为真,(a=1,b=2,c=3)(a==0)||(bc),结果为?3.!:非真即假,非假即真!(ab)结果为“与”和“或”为双目运算,有两个操作数,“非”为单目运算。10&&100逻辑运算符的两边也可以是数值或字符,该值非0为真,0为假。如:a=1,b=2,c=3;a&&b值为?(5&&0)||2值为?其值不是0,就是1再如:‘m’&&!(ac)结果为?非0为1,非1为01105.2逻辑运算5.2逻辑运算三、逻辑运算符的优先级1.逻辑运算符的优先级:高→低!→&&→||2.各种运算:低→高赋值→||和&&→关系运算符→算术运算符→!例如(a==0)&&(bc+1)可写为a==0&&bc+15.2逻辑运算例1:a=1,b=2,c=3(m=b-c)a&&b=a+c(m=-1)1&&1例2:(ab-1)&&(c=b+2c)求表达式的值和c的值。0&&1→0*注意:在实际操作中,系统先作&&左边。若能确定其值就不会继续运算。如上例计算出左边为假,就不继续向右计算。0,3为弄清各逻辑运算符的值,列出真值表:ab!a!ba&&ba||bT(1)T(1)T(1)F(0)F(0)T(1)F(0)F(0)F(0)F(0)T(1)T(1)F(0)T(1)F(0)T(1)T(1)F(0)F(0)T(1)T(1)T(1)F(0)F(0)真值表5.2逻辑运算*5.3if语句一、if语句的三种形式形式1:if(表达式)语句功能:判断表达式是否为真(非0),是则执行“语句”,再往下执行。不是,则不执行“语句”,往下执行。如:if(cj=60)printf(“及格”);说明:表达式一般为关系表达式或逻辑表达式,表达式值非0,则为真,0为假。例2输入两个实数,按代数值,由小到大输出。voidmain(){;printf(“输入两个数a,b:”);scanf;if/*满足条件为1*/{t=a;a=b;b=t;}/*复合语句*/printf(“%6.2f,%6.2f”,);}分析:1。定义:2。输入两个实数3。条件:ab则:交换a,b4。输出:a,b问:若输入三个数,按由小到大输出?floata,b,t(“%f,%f”,&a,&b)(ab)a,batb2010形式2:if(表达式)语句1else语句2功能:先判断表达式的值,若为真(非0),执行语句1;否则为假(0),执行语句2。if(cj=60)printf(“及格”);elseprintf(“不及格”);*5.3if语句表达式语句1语句2假(0)真(非0)例3:输入两数,输出两数中大者。voidmain(){floata,b,m;printf(“输入两数a,b:”);scanf(“%f,%f”,&a,&b);____________________printf(“max=%5.2f”,m);}if(ab)m=a;elsem=b;运行:输入两个数a,b:23.4,87.5↙max=87.50注意:if和else是配对使用的练习:编程求y的值x2+1(x=0)y=x2-1(x0)#includestdio.hvoidmain(){intx,y;scanf(“%d”,&x);if(x=0)y=x*x+1;elsey=x*x-1;printf(“y=%d”,y);}例5:写一程序,判断某一年是否为闰年分析:满足以下条件之一为闰年:(1)能被4整除,但不能被100整除;(2)或者能被4整除且能被400整除。其逻辑表达式:year?(year%4==0&&year%100!=0)||(year%400==0)括号可否省去?①定义year;②输入year;③判断条件;④输出。可以!因&&比||优先级高#includestdio.hvoidmain(){intyear,l;printf(“输入年份year:”);scanf(“%d”,&year);if(year%4==0&&year%100!=0||year%400==0)l=1;elsel=0;if(l)printf(“%d年是闰年”,year);elseprintf(“%d年不是闰年”,year);}说明:if中的表达式可以是关系式,逻辑表达式,也可以是任意类型的数据。能否写成l=1?形式3:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3┊┊elseif(表达式n)语句nelse语句n+1形式3多用于有多个条件需要判断得出不同值的情况。*5.3if语句表达式1表达式2表达式3表达式n语句1语句2语句3语句n假假假真真真真假形式3的流程图例6编一个程序输入某人工资,若工资2000元以上增加5%,1500~1999元增加8%,1000~1499元之间的增加10%,500~999元之间的增加12%,499元以下的增加15%给出增加后的工资数。分析:①定义gz,额度i;②输入gz;③判断工资,求增加额度i:0.05,0.08,0.10,0.12,0.15,并计算工资gz=gz*(1+i)④输出gz值voidmain(){floatgz,i;printf(“Inputgz:”);scanf(“%f”,&gz);if(gz=2000)i=0.05;elseifi=0.08;elseifi=0.10;elseifi=0.12;else;gz=gz*(1+i);printf(“xgz=%7.2f”,gz);}(gz=1500)(gz=1000)(gz=500)i=0.15编程:求ax2+bx+c=0的实根if(d=0){q=sqrt(d)/(2*a);x1=p+q;x2=p-q;printf(“x1=%f,x2=%f”,x1,x2);}elseprintf(“isnoaquadratic”);复合语句#include“stdio.h”#include“math.h”voidmain(){floata,b,c,d,x1,x2,p,q;printf(“Inputa,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);d=b*b-4*a*c;p=-b/(2*a);if(d=0){q=sqrt(d)/(2*a);x1=p+q;x2=p-q;printf(“x1=%f,x2=%f”,x1,x2);}elseprintf(“isnoaquadratic”);}小结关系运算符和关系表达式====!=运算结果:逻辑值“真”、“假”逻辑运算符和逻辑表达式与&&或||非!运算结果:逻辑值“真”、“假”if语句(3种格式)if(表达式)语句if(表达式)语句1else语句2作业《上机指导书》实验四:1、2(用if语句实现)文件名:sy4-1.csy4-2(if).c答疑:每周三13-14节地点:10304

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功