当前位置:文档之家› 第5章 选择结构程序设计1

第5章 选择结构程序设计1

则: !n1 n2>=1 && n2<=31 n2|| n1>31 n1&&-3 的值=0 的值=0 的值=1 的值=1
(4)说明 1 )逻辑运算符两侧的操作数,除可以是0和非0的整数 外,也可以是其它任何类型的数据,如实型、字符型等。 „a‟&&‟b‟ 2)在计算逻辑表达式时,只有在必须执行下一个表达式才 能求解时,才求解该表达式。
练习
5.3 if语句
if语句的三种形式
形式一:
格式:if (表达式)
表达式
=0
非0
语句
语句 执行过程:
例:if (x>y) 程序举例: printf(“%d”,x); 例:判断一个数是否是偶数,若是偶数则输出。
main() {int num1; printf(" Enter num1:"); scanf("%d",&num1); if (num1%2==0) printf("The %d is a event \n",num1); }
对于&&运算,如果第一个操作数被判定为“假”,系统不再判
定或求解第二操作数。 例:设 int n1=1,n2=2,n3=3,n4=4,x=1,y=1; 对于||运算,如果第一个操作数被判定为“真”,系统不再判 定或求解第二操作数。 (x=n1>n2)&&(y=n3>n4)执行后: (x=n2>n1)&&(y=n3>n4)
例如,假设int n1=3,n2=4,n3=5;则: (1)n1>n2 0 (2)(n1>n2)!=n3 1 (3)n1<n2<n3 1 (4)(n1<n2)+n3 6 再次强调: C 语言用整数“ 1” 表示“逻辑真”,用整 数“0”表示“逻辑假”。 关系表达式的值,还可以参与其它种类的运算.
5.2 逻辑运算及其表达式
运算规则 1)&&:当且仅当两个运算量的值都为“真”时,运算结果为 “真”,否则为“假”。 2) || :当且仅当两个运算量的值都为“假”时,运算结果为 “假”,否则为“真”。 3) ! :当运算量的值为“真”时,运算结果为“假”;当运 算量的值为“假”时,运算结果为“真”。 例: int x=5;
P89
a||b
例如,下面的表达式都是逻辑表达式:
真 真 假 假 真 真 (x>=0) && (x<10) ,(x<1) || (x>5) ,! (x= =0), 真 假 假 真 假 真 (year%4==0)&&(year%100!=0)||(year%400==0) 假 真 真 假 假 真 假 假 真 真 假 假
设计选择结构程序,要考虑两个方面的问题:一是
在C语言中如何来表示条件,二是在C语言中实现选择结
构用什么语句。 在C语言中表示条件,一般用关系表达式或逻辑表达 式,实现选择结构用if语句或switch语句。
本章内容:
5.1 关系运算及其表达式
5.2 逻辑运算及其表达式
5.3 if语句
5.4 switch语句 5.5 选择结构程序举例
形式三: 格式:
if (表达式1 )
else if (表达式2 ) else if (表达式3 )
语句1
语句2 语句3
执行过程:
=0
…...
[ else
语句n
]
例:if (salary>1000) tax=0.04; 非 0 if (salary>800) =0 tax=0.03; else 表达式2 else if (salary>600) tax=0.02; =0 非0 表达式3 else if (salary>400) tax=0.01; else 非0 tax=0;
2. 逻辑表达式 (1)逻辑表达式的概念 用逻辑运算符将1个或多个表达式连接起来,进行逻辑运 算的式子。用逻辑表达式表示多个条件的组合。 (year%4==0)&&(year%100!=0)||(year%400==0) (2)逻辑表达式的值 :逻辑值(非“真”即“假”)。 (3)逻辑量的真假判定──0和非0 !((year%4==0)&&(year%100!=0)||(year%400==0)) 用整数“1”表示“逻辑真”、用“0”表示“逻辑 假”。但在判断一个数据的“真”或“假”时,却以0 和非0为根据:如果为0,则判定为“逻辑假”;如果 为非0,则判定为“逻辑真”。 例: int n1=12,n2=-4;
}
例 判断输入字符种类 #include <stdio.h> main() { char c; printf("Enter a character:"); 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"); 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 aa character : 运行: Enter : D 运行: 运行: Enter Enter a character acharacter : 8 : h 运行: Enter acharacter character : F1
关系表达式只能描述单一条件,例如“x>=0”。如果 需要描述“x>=0并且x<10”,就要借助于逻辑表达式。
1. 逻辑运算及其优先次序 (1)逻辑运算符及其运算规则 三种逻辑运算符: ! 逻辑非(相当于“否定” ) && 逻辑与(相当于“并且”) || 逻辑或(相当于“或者”)
逻辑 运算 真值表
a b !a !b a&&b
请动手操作: 输入任意三个整数num1、num2、num3,求三 个数中的最大值。
main() {int n1,n2,n3,max; printf(“Please input three numbers:”); scanf (“%d,%d,%d”,&n1,&n2,&n3); if (n1>n2) max=n1; else max=n2; if (n3>max) max=n3; printf("The three numbers :%d,%d,%d\n", n1, n2, n3); printf("max=%d\n",max); }

x x=0, = 1, y y = =1 0 例:设 int n1=1,n2=2,n3=3,n4=4,x=1,y=1; (x=n1>n2)||(y=n3>n4)执行后: x=0,y=1
表达式小结:
1.正确使用表达式 当描述单一条件时可使用关系表达式;如果要描述复合条 件,就要使用逻辑表达式。 2.关系表达式和逻辑表达式的值都是逻辑值。 3.逻辑值的表示 “1”表示“逻辑真”、“0”表示“逻辑假”。 4.逻辑值的判断 如果为0,则判定为“逻辑假”;如果为非0,则判 定为“逻辑真”。 5.运算符的优先关系 !→ 算术运算 → 关系运算 → &&→ || → 赋值运算
例 求分段函数的值
y=
1 0 -1
x>0 x=0 x<0
#include <stdio.h> main() #include <stdio.h> { int x,y; main() printf("Enter an integer:"); { scanf("%d",&x); int x,y; printf("Enter an integer:"); if(x<0) y=-1; scanf("%d",&x); else if (x==0)y= 0; if(x<0) else y=-1; y=1; printf("\ninteger:%d---> value:%d\n",x,y); if (x==0)y= 0; } else y=1; 运行: Enter an integer:-12 printf("\ninteger:%d---> value:%d\n",x,y); integer:-12---> value :-1
语句1 语句2 语句3 语句n
表达式1
说明: if后面的表达式类型任意 if(x) if(x!=0) if(!x) if(x==0) 语句可以是复合语句 如: 例 考虑下面程序的输出结果 if(a==b&&x==y) printf(“a=b,x=y”); : #include if(3) <stdio.h> printf(“OK”); main() if(„a‟) printf(“%d”,‟a‟); { 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); }
相关主题