c语言 第05章选择结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
运运运运行行运行行::行::EE:nEnEttneeEntrrentaerateraccrahhcaachrrchaaharccarttacereactrre:ct:ert:er8:r:DhF1
TTTThhTheheeheccechhchachaarhraaraaraccarcttaceetcterretrierissirissaaisaadcociolgtaonhipwteirrteoarcllhlcleaehtrtataerecrartcetrer
integer integer
a:12 b:12
scanf("%d",&a); /*键盘输运入行一:个E数n值te*r/ integer a:12
printf("Enter integer b:"); /*语句E提n示te*r/ integer b:9
scanf("%d",&b); /*键盘输入一个a数!=值b*/
‘c’&&‘d’ //值为1
第 五 章 选择结构程序设计
短路特性:逻辑表达式求解时,并非所有的逻辑运算符都 被执行,只是在必须执行下一个逻辑运算符才能求出表达 式的解时,才执行该运算符。
1.逻辑与运算符: && 如有逻辑表达式:
a && b && c 执行过程是:当a为0时,b和c不用再 判断了, 逻辑与运算符将不再执行, 结果为0,否则还要继续后边的运算。
第 五 章 选择结构程序设计
形式三:格式
if ( expr1 )
statement1;
else if (expr2 ) statement2;
else if (expr3 ) statement3;
…...
[ else
statementn; ]
第 五 章 选择结构程序设计
执行过程:
=0 expr1
0 非0(真) c
例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
0(假) 1(真)
//结果m=0,n=1
第 五 章 选择结构程序设计
§5.3 if语句
if语句的三种形式
• 形式一: » 格式:if (expression) statement; » 执行过程:
//表达式值1 //表达式值1 //表达式值0 //d=1 //f=0
关系运算符 赋值运算符 低
第 五 章 选择结构程序设计
关系运算注意:
例 若a=0; b=0.5; x=0.3; 则 a<=x<=b的值为 0
例 5>2>7>8在C中是允许的, 值为 0
例 int i=1, j=7,a; a=i+(j%4!=0); 则a= 2
第 五 章 选择结构程序设计
优先级: 结合方向:
! 算术运算符
高
关系运算符
&&和| | 赋值运算符
低
! :从右向左 && :从左向右 || :从左向右
<>
例 a=4;b=5;
!a
//值为0
a&&b //值为1 a||b //值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
a equal to b
第 五 章 选择结构程序设计
§5.2 逻辑运算符和表达式
• 逻辑运算符
– 种类: ! (非) &&(与) ||(或) – 逻辑运算真值表
a
bபைடு நூலகம்
!a
!b a&&b a||b
真
真
假
假
真
真
真
假
假
真
假
真
假
真
真
假
假
真
假
假
真
真
假
假
C语言中, 运算量: 运算结果:
0表示“假”, 非0表示“真”, 0表示“假”,
第 五 章 选择结构程序设计
if 语句嵌套: 一般形式
if (expr1)
if (expr2) statement1
else
statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
第 五 章 选择结构程序设计
例:输入两数并判断其大小关系
/*ch5_4.c*/
if(a==b)
printf("a==b\n");
else
printf("a!=b\n");
}
第 五 章 选择结构程序设计
/*ch5_3.c*/ #include <stdio.h>
例 判断输入字符种类
main()
{ char c;
/*变量定义*/
printf("Enter a character:");
例:if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else
非0
=0 expr2
非0
=0 expr3
非0
statemnt1 statemnt2 statemnt3 statemntn
index=0.4; index=0.3; index=0.2; index=0.1; index=0;
else…...
第 五 章 选择结构程序设计
例: if (a==b) if(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 正确配对方法:加{ }
第 五 章 选择结构程序设计
第五章 选择结构程序设计
关系运算符与关系表达式 逻辑运算符与逻辑表达式 if语句(条件运算符与条件表达式) switch语句 程序举例
第 五 章 选择结构程序设计
§5.1关系运算符和表达式
• 关系运算符
– 种类:< <= == >= > != – 结合方向:自左向右 – 优先级别:
X>Y Enter integer x,y:12 12 X==Y
else
printf("X==Y\n");
}
第 五 章 选择结构程序设计
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
例: 求一个数的绝对值
main()
{ int x,y;
/*变量定义*/
printf("Enter an integer:"); /*语句提示*/
scanf("%d",&x);
/*键盘输入一个数值*/
y=x;
if(y<0)
y= -y;
printf("\ninteger:%d absolute value:%d\n",x,y);
第 五 章 选择结构程序设计
说明:
if后面的表达式类型任意 语句可以是复合语句——用{ } 如:if(ifx()a==b&if(&xx!==0=)y) printf(“a=b,x=y”);
if(if!(x3)) priinf(tfx(=“=O0K)”);
例 考i虑f(‘下a’)面p程ri序ntf的(“%输d出”,结’a’果); :
=0 expr
非0 statement
例:if (x>y)
形式二:
printf(“%d”,x);
格式:if (expression)
非0
=0
expr
statement1;
else
statement2; 执行过程:
statement1
statement2
例:if (x>y) max=x; else max=y;
例 ‘a’>0 结果为1 ‘A’>100 结果为0
第 五 章 选择结构程序设计
关系运算注意:
fabs( )取绝对值函数
例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
例 注意区分“=”与“==” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);
1表示“真”,
第 五 章 选择结构程序设计 优先级:
结合方向:
! 算术运算符
高
关系运算符
&&和| | 赋值运算符 低
! :从右向左 && :从左向右 | | :从左向右
例 a<=x && x<=b a>b&&x>y a==b||x==y !a||a>b
// (a<=x) && (x<=b) //(a>b)&&(x>y) //(a==b)||(x==y) //(!a)||(a>b)
a 0(假)
1 b
0(假)
1 c
0(假)
1(真) 0(假)
<>
第 五 章 选择结构程序设计
优先级: 结合方向:
2.逻辑或运算符:| | 如有逻辑表达式: a||b||c
执行过程是:当a为非0时,b和c不用 再判断了,逻辑或运算符将不再执行, 其结果为1,否则继续执行后面的运算。
非0(真) a
0 非0(真) b
/*语句提示*/
c=getchar();
/*键盘输入一个字符*/
if(c<0x20) printf("The character is a control character\n");
else if(c>='0'&&c<='9') printf("The character is a digit\n");
#include <stdio.h>
main()
{ int x,y;
scanf(“%d,%d”,&x,&y);
if(x>y) x=y; y=x;
else
Compile Error! 编译出错
x++; y++;
printf(“%d,%d\n”,x,y);
}
第 五 章 选择结构程序设计
/*ch5_1.c*/ #include <stdio.h>
#include <stdio.h>
main()
{ int x,y;
运行:Enter integer x,y:12 23
printf("Enter integer x,y:");
X<Y
scanf(“%d %d”,x,y)%d,%d",&x,&Eyn)t;er integer x,y:12 6
if(x!=y) if(x>y) printf("X>Y\n"); else printf("X<Y\n");
else if(c>='A'&&c<='Z') printf("The character is a capital letter\n");
else if(c>='a'&&c<='z') printf("The character is a lower letter\n");
else printf("The character is other character\n");
}
运行:Enter an integer:-12 integer:-12 absolute value :12
第 五 章 选择结构程序设计
/*ch5_2.c*/ 例:输入两个数并判断两数相等否
#m{ianpiicnrnli(utn)datf,e(b"<;Esntdteior/.*ihn变>te量ge定r义a:*")/运; /*行语:句EaE提=nn示=tteeb*rr/
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
第 五 章 选择结构程序设计
if ~ else 配对原则:缺省{ }时,else总是和它 上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
第 五 章 选择结构程序设计
例: 考虑下面程序输出结果:
main()
{ int x=100,a=10,b=20;
int v1=5,v2=0;
if(a<b)
if(b!=15)
if(!v1)
x=1;
else
if(v2) x=10;
x=-1;
printf(“%d”,x);
}
结果:-1
返回
第 五 章 选择结构程序设计
条件运算符与表达式
• 一般形式: expr1 ? expr2 : expr3
• 执行过程
• 功能:相当于条件语句,但不能取代一般if语句 条优例例如例件先求(pi(((efax运级xcxrl(=>%>>isnaap=e==算:p0t>+2rfb0‘ri?(ab=|ni1)“)bn符1’)?=ta?3|tf&:’(f+1x(Y(“可&:x)|“%-b’?%:x<’|c1dN嵌=d0<:”%0’”?,=,a套-b‘d)z1);\’;:n)0?”,)cb->’a0’+?’aA+’:bc:a-b非p);r0in=tf(1“%dex”,par>1b?a:b=)0;
例 c>a+b //c>(a+b)
<
<= >
优先级6(高)
>=
== !=
优先级7(低)
a>b!=c //(a>b)!=c
关系表达a式==的b<值c ://是a=逻=(辑b<值c) “真”或“假”,用1和0
表例示 int aa==3b,>bc=2,c/=/a1=,d(b,f>;c)
算术运算符 高
a>b (a>b)==c b+c<a d=a>b f=a>b>c