顺序结构程序+运算符
逻辑运算中的注意点:
短路特性:逻辑表达式求解时,并非所有的逻辑运算符 都被执行,只是在必须执行下一个逻辑运算符才能求 出表达式的解时,才执行该运算符。
a&&b&&c 值 a||b||c
//只在a为真时,才判别b的值; 只在a、b都为真时,才判别 c的
//只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的 若 a=1;b=2;c=3;d=4;m=1;n=1; 值 //结果m=0,n=1 则 (m=a>b)&&(n=c>d)
< <= > >=
(小于) (小于等于) 优先级6(高) (大于) (大于等于)
优先级7(低)
算术运算符 关系运算符 赋值运算符
高
低
= = (等于) ! = (不等于) < >
c>a+b a>b!=c a==b<c a=b>c
// // // //
c>(a+b) (a>b)!=c a==(b<c) a=(b>c)
优先级: 13 结合方向:自右向左 表达式1?表达式2:表达式3 类型可以不同,表达式 x?„a‟:„b‟ //x=0, 表达式值为‘ b‟; x≠0, 表达式值为‘a‟ 值取表达式 2和表达式 3中较高的类型 max=(a>b)? a:b; //max=a>b? a:b; a>b?a:c>d?c:d a>b?a:(c> d?c:d)
<
>
(16) 设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是
A. 10<a<15 C. a>10 && a<15 B. a= =11|| a= =12 || a= =13 || a= =14 D. !(a<=10) && !(a>=15)
。
当然是选 A 啊,C 语言中怎么可能直 接出现10<a<15这 样数学化的式子
非0表示“真”, 1表示 例 a=4;b=5; “真 ”, 值为0 !a 值为1 a&&b 值为1 a||b 值为1 值为1 !a||b //(5>3)&&2||(8<(4-(!0))) 值为1 4&&0||2 值为1 5>3&&2||8<4-!0 > „c‟&&„d‟
<
C语言程序设计
第五章 选择结构程序设计
“&&”和“ ||”是双目运算符 “!”是单目运算符
<
>
C语言程序设计
第五章 选择结构程序设计
逻辑运算真值表
a 真 真 假 假 b 真 假 真 假 !a 假 假 真 真 !b 假 真 假 真 a&&b 真 假 假 假
a||b 真 真 真 假
逻辑运算符的优先次序 !(非) , &&(与),
优先次序:高(2) (11) 结合方向:从右向左 从左向右 例:优先次序
C语言程序设计
第四章 顺序程序设计
§4.6 顺序结构程序举例
例4.10 输入三角形边长,求面积 文件包含预处理命令 #include <math.h> #include <stdio.h> void main() 变量定义 输入数据 { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); 输出数据 area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s); 输入:3,4,6 < printf("area=%7.2f\n",area); > 输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50
输出:a
<
>
C语言程序设计
第五章 选择结构程序设计
关系运算符和关系表达式
“关系运算”即“比较运算,是对两个值进行 比较,比较的结果是得到真假两种值。
关系运算符
A>3
关系表达式 < >
C语言程序设计
第五章 选择结构程序设计
关系运算符及其优先次序
C语言提供6种关系运算符
种类:< <= == >= > 结合方向:自左向右 优先级别: !=
C语言程序设计
第五章 选择结构程序设计
§5.2 逻辑运算符和逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起 来的式子就是逻辑表达式。
逻辑运算符: 含义 名称 示例 C语言提供3种逻辑运算符 运算符 && 逻辑与 a && b 若a 、 b同时为真,则a && b为真 逻辑或 a || b 若a 、 b之一为真,则a || b为真 || 逻辑非 ! a ! 若a为真,则!a为假;a为假,则!a为真
8.能正确表示x和y同时为正或同时为负的逻辑表达式是( ) A.(x>=0||y>=0)&&(x<0||y<0) B.(x>=0&&y>=0)&&(x<0&&y<0) C.(x+y>0)&&(x+y<=0) D.x*y>0
6.设x和y都是int型变量,则执行表达式x=(y=2,z=4,k=8)后,x的值为( ) A.2 B.4 C.8 D.14 7.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)|| (n=c>d)后n的值为() A.1 B.2 C.3 D.0 9.若有语句 int I=5; I++; 此处表达式I++的值为() A.7 B.6 C.5 D.4
||(或)
(12)低 从左向右
<
>
(a>b)&&(x>y) //写成 a>b&&x>y 写成 a==b||x==y (a==b)||(x==y) // //写成 !a||a>b (!a)||(a>b)
C语言程序设计
第五章 选择结构程序设计
逻辑表达式
C语言中, 运算量: “假 ”, 0表示“假”,运算结果: 0表示
复习巩固
10.以下程序的输出结果是() #include <stdio.h> main() { int x=10,y=10; printf("%d%d\n",x--,--y); } A.10 10 B.99 C.9 10 D.10 9
C语言程序设计
第五章 选择结构程序设计
条件运算符
if语句中,当表达式为“真”和“假”时,都只执行一 个赋值语句给同一个变量赋值时,可以用条件运算符处理。
x>y?1:1.5 //x>y ,值为1.0; x<y ,值为1.5
<
>
嵌套:x>0?1:(x<0?-1:0)
设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为 A. 4 B. 3 C. 2 D. 1
设x=1,y=2,z=3,w=4,则表达式x<y?x:z<w:x:w的结果为( ) A.4 B.3 C.2 D.1
if (a>b) max=a; else max=b;
max=(a>b)? a:b;
表达式1 ? 表达式2 : 表达式3
非0
表达式1
=0 表达式3值
条件运算符是 C 语言中唯一的 三目运算符 < >
表达式2值
C语言程序设计
第五章 选择结构程序设计
条件运算符练习 例求 a+|b| (a==b)?‟Y‟:‟N‟ printf(“a+|b|=%d (x%2==1)?1:0 \n”,b>0?a+b:a-b); (x>=0)?x:-x (c>=„a‟ && c<=„z‟)?c-‟a‟+‟A‟:c 条件运算符几点说明: 条件运算符可嵌套 嵌套:x>0?1:(x<0?-1:0)
//表达式值1 //表达式值1 //表达式值0 //d=1 //f=0
C语言程序设计
第五ቤተ መጻሕፍቲ ባይዱ 选择结构程序设计
关系运算几点注意:
例 5>2>7>8在C中是允许的, 值为 0 例 int i=1, j=7,a; a=i+(j%4!=0); 则a= 2 例 ‘a‟>0 结果为 1 ‘A‟>100 结果为0
例2:已知三角形两边及其夹角,求第三边及面积 #include <stdio.h> #include <math.h> #define PI 3.14159265 void main() { float a,b,jc,c,area; printf("a="); scanf("%f",&a); printf("b="); 角度=弧度除以π再乘以180 scanf("%f",&b); printf("jc="); 弧度=角度乘以π后再除以180 scanf("%f",&jc); c=sqrt(a*a+b*b-2*a*b*cos(PI*jc/180)); 面积=1/2a*b*sina area=1.0/2*sin(jc/180*PI)*a*b; printf("c=%f\n",c); printf("area=%f\n",area); }