![选择机构程序设计_第1页](http://file4.renrendoc.com/view14/M09/01/1B/wKhkGWcs8aqAZ2SAAADQXIdABQY482.jpg)
![选择机构程序设计_第2页](http://file4.renrendoc.com/view14/M09/01/1B/wKhkGWcs8aqAZ2SAAADQXIdABQY4822.jpg)
![选择机构程序设计_第3页](http://file4.renrendoc.com/view14/M09/01/1B/wKhkGWcs8aqAZ2SAAADQXIdABQY4823.jpg)
![选择机构程序设计_第4页](http://file4.renrendoc.com/view14/M09/01/1B/wKhkGWcs8aqAZ2SAAADQXIdABQY4824.jpg)
![选择机构程序设计_第5页](http://file4.renrendoc.com/view14/M09/01/1B/wKhkGWcs8aqAZ2SAAADQXIdABQY4825.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章
为择给胸程序设计
河南化工取业学院
本章要点
■关系表达式
・逻辑表达式
.选择结构程序设计
河南化工取业学院
4.1关系运算符和关系表达式
河南化工取业学院2011-11-15
4.1关系运算符和关系表达式
“关系运算”实际上是“比较运算”,其中操作
数可以是变量、常量或表达式。
关系表达式的
计算结果=逻辑值(真或假)
在C语言中,用“0”表示“假”,用“1”表示
河南化工取业学院2011-11-15
4.1关系运算符和关系表达式
例如:假设num1=3,num2=4,num3=4,则:
(1)num1>num2的值
(2)(num1>num2)!=num3的值
(3)numlvnum2vnum3的值
思考:任意改变num1或num2的值,会影响整个
表达式的值吗?
(4)(num1<num2)+num3
河南化工取业学院2011-11-15
4.2逻辑运算符和逻辑表达式
•逻辑运算符用于连接一个或多个条件,判
断这些条件是否成立
■逻辑运算符有:
I运算运算符表达式
逻辑“与”&&操作数1&&操作数2
逻辑“或”II操作数1||操作数2
逻辑“非”1■!操作数
河南化工取业学院2011-11-15
逻辑表达式
在实际问题上,对于一些复杂的条件,还需要用几个关系表
达式组合起来才能表示。例如,条件2VXV9就需要用2Vx和
XV9这两个关系式来表示。将多个关系式用逻辑运算符连接起来
的式子称为逻辑表达式
逻辑运算符有:
Not(非):取操作数相反的值。即当操作数为False时,
结果为True;当操作数为True时,结果为False;
And(与):当两个操作数都为True时,结果才为True;
Or(或):当两个操作数都为False时,结果才为False。
河南化工取业学院2011-11-15
4.2逻辑运算符和逻辑表达式
般的搦则
&&:当且仅当两个运算量的值都为“真”时,运算结果
为
“真”,否则为“假”。
II:当且仅当两个运算量的值都为“假”时,运算结果
为
“假「否则为“真”。
I_坐二L笛县的/古小“吉”口.运算结果为“假”;当
」例如:假定x=4,贝I」~~~~
(x>=0)&&(XV10)的值
吉果为“真”。
(XV」)||(x>4)的值
河南化工取业学院2011-11-15
4.2逻辑运算符和逻辑表达式
逻辑运算符的优先级
•逻辑非的优先级最高,逻辑与次之,逻辑或最低即:
!(非)一&&(与)—II(或)
与其它种类运算符的优先关系
!一算术运算符一关系运算符一&&一||一赋值运算符
河南化工取业学院2011-11-15
请你判断下列表达式的值:
(1)not(3>7)
(2)(3<8)and(5<10)
(3)(0<5)or(3<1)
(4)not(1>4)or(2<1)and(1<2)
逻辑表达式的运算顺序
(1)当条件中只有逻辑运算符时,运算的顺序为not、and、or。
(2)当条件中既有算术运算符,又有关系到运算符和逻辑运算符
时,运算顺序是:
算术运算一〉关系运算”〉逻辑运算
请你判断下列表达式的运算顺序:
a+b>c+dandw-ornotc0ord0
河南化工取业学院2011-11-15
4.2逻辑运算符和逻辑表达式
邃辑表达式的值
-c语言中,运算量:1r0表示“假",、
\非。表示“真”,:
运算结果:[0表示“假”,-、
、1表示“真”,,
例如:14&&2.8!146a5&&6b9!0
例如,假设num=12,则:
num>=l&&mjmv=31的值1
num||mjm>31的值1。
河南化工取业学院2011-11-15
4.2逻辑运算符和逻辑表达式
说明
在计算逻辑表达式时,并不是所有的表达式都
被求解,只有在必须执行下一个逻辑运算符才
能求出表达式的解时,才执行该运算符。
河南化工取业学院2011-11-15
4.2逻辑运算符和逻辑表达式
例:要判断某一年year是否是闰年。闰年的条件是
符合二者之一:①能被4整除,但不能被100整
除。②能被4整除,又能被400整除。
(year%4==0)&&(year%100!=0)||(year%400==0)
例:判断某一个字符ch是否是字母,而不是数字或
其他的符号。
(ch>=5aJ&&ch<=5zJ)||(ch>=5A5&&ch<=5z5)
河南化工取业学院2011-11-15
选择结构一IF语句
星期六班委会准备组织全班同学春游,
如果下雨,活动就推迟到下一周,如果天
气好就如期进行,这时出现两种选择。
这种需要某个前提成立与否而做出选
择的问题需要通过选择结构来解决
河南化工取业学院2011-11-15
商场为了对苹果进行促销,根据顾客购买的数量调整苹果销
售的价格。如顾客一次购买5斤以下按原价3元出售,一次5斤以
上(含5斤)时则可以在原价的基础上打8折。
(1)分析问题:
weight表示苹果重量,amount表示应付金额;
5斤以下:amount=weight*3;5斤以上:amount=weight*3*0.8
(2)设计算法
①输入苹果重量weight的值;
②判断weight>=5的值是true还是Hase
③计算应付金额amount,如果weight>=5的值是true,贝ij
amount=weight*3*0.8;否贝ij为amount=weight*3
④输出应付金额amount
(3)编写程序
根据设计好的算法,可以写出此问题的代码如下:
河南化工取业学院2011-11-15
CoBBandl▼]Click
PrivateSubCommandl_C1ick()
DimweightjamountAsSingle
weight=InputBox”请输入聿果的重量、"买苹果")
Ifweight>=5Then
amount=weight*3*0.8
Else^
amount=weight*3
EndIf
Print"应付金额是:";amount;"元"
EndSub
河南化工取业学院2011-11-15
4.3if语句(三种形式)
用if语句可以构成分支结构。它对给定的条件进行判断,
根据判断的结果(真或假)来决定执行某个分支程序段。
•1.单分支(基本形式):其语义是:
如果表达式的值为真,则执行其后的语
句,否则不执行该语句。
♦:♦格式:if(表达式)
语句
♦:♦执行过程:
例:if(x>y)printf(“%d”,x);
河南化工取业学院2011-11-15
例4」:输入两个实数,按由大到小的咽序独出。
----------------------------------------------------------------------------------------------------------------------------------------------------1内存
#include<stdio.h>
main()
floata,b,t;
scanf(H%f,%f",&a,&b);
if(a<b)
{t=a;
a=b;
b=t;}
printf("%4.2f,%4.2f\n",a,b);
)
河南化工取业学院2011-11-15
・2.双分支(if©se形式):
其语义是:如果表达式的值为真,则
执行语句1,否则执行语句2。
♦:♦格式:if(表达式)
语句1
else
语句2
♦:♦执行过程:
例:if(x>y)printf(n%dn,x);
elseprintf(n%dn,y);
河南化工取业学院2011-11-15
修改上例
#include<stdio.h>
main()
(
inta,b;
scanf(H%d%dH,&a,&b);
if(a>b)
pnntfC%d,%d\nu,a,b);
else
printf("%d,%d\n\b,a);
}河南化工取业学院
2011-11-15
•main()
(
inta,b;
printf("inputtwonumbers:");
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%d\n",a);
else
printf("max=%d\n",b);
}
输入两个整数,输出其中的大数。改用if・else语句
判别a,b的大小,若a夫,则输出a,否则输由b。
河南化工取业学院2011-11-15
•3.if©se・if形式:要处理多重条件判断的情
况,需要使用多重条件结构多重if结构是if©se
的另一种形式,这种形式也称为阶梯式if-else-if
河南化工取业学院2011-11-15
•前二种形式的if语句一般都用于两个分支的情况。当有多
个分支选择时,可采用if・else・if语句,其语义是:依次判断
表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳
到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行
语句n。然后继续执行后续程序。其一般形式为:
if(超现二)
/吾句1;
elseif(类乒可、
,吾句子,
elseif(程亘)
4句3;
■
■
else
语句n;
河南化工取业学院2011-11-15
4.3if语句
__iW
——p-
河南化工取业学院2011-11-15
■[例44]输入两个实数,按代数值由小到
.大输出这两个数。
main()
{floata,b,t;
scanf(H%f,%fH,&a,&b);
if(a>b)
{t=a;a=b;b=t;}
printf(H%5.2f,%5.2fn,a,b);
)
•运行示例、
3.6,-3.2/-323.6
河南化工取业学院2011-11-15
■[例4.2]输入三个数,按由大到小输出。
main()
{floata,b,c,t;
scanf(“%f,%f,%f',&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf(”%5・2f,%5.2f,%5.2f'ab,c);
)
河南化工取业学院2011-11-15
★在使用if语句中还应注意以下问题
•♦《)在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常
是谡辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,
甚至也可以是一个变量。(if后面的表达式类型任意)
例如:if(a=5)语句;if(b)语句;都是允许的。只要表达式的值为非0,
即为“真”。如在if(a=5)…;中表达式的值永远为非0,所以其后的语句
总是要执行的,当然这神情况在程序中不一定会出现,但在语法上是合
的°
文如,有程序段:if(a=b)
printf("%d',,a);
else
printf(”a=0");本语句的语义是,把b值赋予a,如为非0则输出该值,否
则输出“a=0”字符串。这种用法在程序中是经常出现的。
如:if(a==b&&x==y)printfV'a=b,x=y'');
intx=3,y;if(x=4)y=3;
if(3)printf("OK”);
iffa9)printf(“%d",'a');
河南化工取业学院2011-11-15
♦(2)在if语句中,条件判断表达式必须用括号括起来,注意语句应以分
号结束。例:
if(x>0)print。%f”,x);elseprintf("%f\"x);
♦(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足
条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复
合语句。例:
if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-
a)*(s-b)*(s-c));printf("area=%6.2f",area);}elseprintf("itisnota
trilateral");
★注意:大括号{}本身是一个完整的复合语句,不需要分号。即在}之后
不能再加分号。例如:
if(a>b){
a++;
b++;
)
else{a=0;
b=10;
)
♦(4)else不能作为语句单独,它必须与if配对使用
河南化工取业学院2011-11-15
4.3if语句
#include<stdio.h>
main()
floatgrade;
printf("\n请输入期末考试成绩:”)
scanf("%f,&grade);
if(grade>=90)A
printf("\n优)
elseif(grade>=80)-
printf("\n良)
elseif(grade>=60)■
printf("\n中,');
else
请输入期末考试成绩:
printf("\n•');49
差
printf("\n");■
}15
4.4if语句的嵌套
在if语句中又包含一个或多个if语句o
一般形式:
if(表达式1)
if(表达式2)语句1
else语句2
else
if(表达式3)语句3
else语句4
河南化工取业学院2011-11-15
if(x>0)
{if(y>1)
z=1;}。
else/*这个else部分属于哪个if?*1]
z=2;
C语言规定,每个else部分总属于前面最近的那
个缺少对应的else部分的if语句。从最内层开始,
else总是与它上面最接近的(未曾配对的)if配对。
避免if与else配对错位的最佳办法是加大括号,同时,为了便于阅
读,使用适当的缩进,(只有大括号能保证H和else不错位配对,缩
进仅便于阅读)
提倡使用大括号括起来以避免看起来有二义性。
河南化工取业学院2011-11-15
一般格式如下:
if()
或
if()语句11if()
else语句2J内队”if()语句1
elseelse
,^内嵌ifif()语句2,氐
else语句3,内歌比
else语句,
或if()
»耳)语句1}(内嵌if)
else
_______________________________语句2_____________
else与if的匹配原则是:一个else应与其之前距
离最近且没有与其它else配对的if配对。
河南化工取业学院2011-11-15
例如:
f—1x<0
已知编一个程序—输入
1x>0
X的值,输出y值。
程序为:
main()
{intx,y;
scanf(“%d\&x);
if(x<0)y=-l;
elseif(x==0)y=0;
elsey=l;
printf("x=%d,y=%d\n”,x,y);
河南化工取业学院2011-11-15
或者
if(x>=0)
if(x>0)y=1;
内嵌
elsey=0;if
elsey=-1;
-if(X>=0)
若程序写成:「或者
y=-l
if(x!=O)if(x>=0)
if(x>0)y=l;if(x>0)y=1;
else产0;
正确吗?如何修改?elsey=-1;
正确吗?如何修改?
2011-11-15
#include<stdio.h>if(x>=0)
main()if(x>0)y=1;
{intx,y;elsey=0;
,i,i
scanf(%dJ&x);elsey=-1;
if(x<0)
y=-1;
elsey=-1;
if(x==O)y=0;if(x!=O)
elsey=1;{if(x>0)y=1;}
printf(l,y=%d\ni,,y);elsey=0;
)
河南化工取业学院2011-11-15
例求一个数的绝对值
/*ch4_Lc*/
#include<stdio.h>
main()
{intx,y;
printf(nEnteraninteger:n);
scanf(n%df\&x);
y=x;
if(y<o)
y=-y;
printf(n\ninteger:%d—>absolutevalue:%d\n11,x,y);
运彳丁:Enteraninteger:-12J
integer:-12->absolutevalue:12
2011-11-15
例输入两个数并判断两数相等否
/*ch4_2.c*/
#include<stdio.h>
main()
{inta,b;右彳丁:Enterintegera:12J
printf(nEnterintegera:nEnterintegerb:12J
scanf(n%d!\&a);a==b
prmtf(uEnterintegerb:n
nn贬彳丁:Enterintegera:12」
scanf(%d5&b);
if(a==b)Enterintegerb:9J
printf(na==b\nn);a!=b
else
printf(na!=b\nn);
河南化工取业学院2011-11-15
例判断输入字符种类
/*ch4_3.c*/
#include<stdio.h>
main()
{charc;
printff'Enteracharacter:");
c=getchar();
if(c<0x20)printf(nThecharacterisacontrolcharacter\nn);
elseif(c>-01&&c<-91)printff'Thecharacterisadigit\nn);
elseif(c>='A'&&cv='Z')printf(nThecharacterisacapitalletter\nn);
elseif(c>='a'&&cv='z')printf(nThecharacterisalowerletter\nn);
elseprintf(nThecharacterisothercharacter\nn);
:::运行:Enteracharacter:FlJ
Thecharacterisothercharacter'
IIIIU
河南化工取业学院2011-11-15
例输入两数并判断其大小关系
/*ch4_4.c*/
#include<stdio.h>
main()
{intx,y;运行1:Enterintegerx,y:12,23J
printf(uEnterintegerx,y:fX<Y
scanf(n%d,%d!\&x,&y);Enterintegerx,y:12,6J
X>Y
if(x!=y)Enterintegerx,y:12,12J
nH
if(x>y)printf(X>Y\n)X==Y
elseprintf(uX<Y\nH);
else
printf(nX==Y\nn);
}
河南化工取业学院2011-11-15
例if(a==b)
x^4f(b==c)
(printf("a==b==c^);
else
printf("a!=b”);
修改:if(a==b)
{if(b==c)
printf(^a==b==c^);
}
else
printf(“a!=b”);
if〜else酉己对原贝U:缺省{}时,else总是和它上面离
它最近的未配对的ifi已对
实现if〜else等罪需兹鲁加{}
2011-11-15
例考虑下面程序输出结果:
main()
{intx=1009a=105b=20;
intvl=5,v2=0;
if(a<b)
if(b!=15)
结果:
if(!vl)-1
x=l;
else
if(v2)x=10;
x=-l;
printf(“%d”,x);
河南化工取业学院2011-11-15
条件运算符
河南化工取业学院2011-11-15
条件运算符
value=tn,;
)
河南化工取业学院2011-11-15
条件运算符
•优先级:13
•条件运算符可嵌套
如x>0?1:(x<0?-1:0)
•结合方向:自右向左
如a>b?a:c>d?c:d<=>a>b?a:(c>d?c:d)
•各表达式类型可以不同
例x?七Tb,〃x*0,表达式值为表达式值为7b]
x>y?1:1.4//x>y,值为1.0;x<y,值为1・4
a>b?(a+=b):(b=200)
河南化工取业学院2011-11-15
条件运算符示例
例:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级道德与法治上册第二单元 友谊的天空第四课友谊与成长同行第2框深深浅浅话友谊听课评课记录(新人教版)
- 湘教版数学九年级上册《小结练习》听评课记录
- 小学二年级上册数学口算检测试卷
- 五年级下学期班主任班级工作总结
- 苏教版小学四年级上册数学口算题
- 苏教版五年级数学上册期末复习口算练习题一
- 云南省食用菌产品买卖合同范本
- 湘教版数学七年级上册第3章小结与复习听评课记录
- 店长聘用协议书范本
- 深圳房地产出租合同范本
- 《榜样9》观后感心得体会二
- 《西安交通大学》课件
- 天津市部分区2024-2025学年九年级(上)期末物理试卷(含答案)
- 小学二年级数学计算题共4165题
- 一氧化碳中毒培训
- 初二上册好的数学试卷
- 保洁服务质量与服务意识的培训
- 广东省潮州市2024-2025学年九年级上学期期末道德与法治试卷(含答案)
- 突发公共卫生事件卫生应急
- 部编版2024-2025学年三年级上册语文期末测试卷(含答案)
- 《景观设计》课件
评论
0/150
提交评论