Presentation is loading. Please wait.

Presentation is loading. Please wait.

目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计

Similar presentations


Presentation on theme: "目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计"— Presentation transcript:

1 目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计
4.5用switch语句实现选择结构程序 4.6选择结构程序设计举例 1

2 4.1 选择结构程序设计概述 1.从键盘输入一个数,如果它是正数,把它打印出来;否则不打印。 2

3 4.1 选择结构程序设计概述 2.判断一个正整数的奇偶性。 3

4 4.1 选择结构程序设计概述 3.比较三个数的大小,输出大者。 4

5 4.1 选择结构程序设计概述 4.要计算机输出y的值(不使用符号函数sgn) 5

6 4.2 关系运算符和表达式 1.关系运算符 1)关系运算符 2)关系运算符的值
4.2 关系运算符和表达式 1.关系运算符 1)关系运算符 <小于;<=小于或等于;>大于;>=大于或等于;==等于;!=不等于。 2)关系运算符的值 关系运算的值有真和假两种,如果满足运算符的定义,则结果为真,否则结果为假。虽然C编译在给出关系运算值时,以1代表真,0代表假。但反过来在判断一个量是为真还是为假时,以0代表假,而以非0的数值作为真。例如: 5>0的值为真,即为1。 (a=3)>(b=5)由于3>5不成立,故其值为假,即为0。 6

7 4.2 关系运算符和表达式 1.关系运算符 3)关系运算符的求值规则 4)关系运算符的优先级 5)关系运算符的结合性
4.2 关系运算符和表达式 1.关系运算符 3)关系运算符的求值规则 (1)在对两个数值表达式进行关系运算时,是比较两个数值的大小。如:3>5的结果为假。 (2)对于字符型数据的比较,直接比较单个字符的ASCII码的大小。如’a’>’b’的结果为假。不可以直接比较两个字符串。 4)关系运算符的优先级 关系运算符的优先级低于算术运算符,高于赋值运算符。其中,“<、<=、>、>=”的优先级相同,高于“==”和“!=”,“==”和“!=”的优先级相同。 5)关系运算符的结合性 关系运算符都是双目运算符,其结合性均为左结合。 7

8 4.2 关系运算符和表达式 2.关系表达式 1)关系表达式 2)关系表达式的格式 3)关系表达式使用说明
4.2 关系运算符和表达式 2.关系表达式 1)关系表达式 用关系运算符将表达式连接起来构成的有意义的式子。 2)关系表达式的格式 表达式 关系运算符 表达式 例如:a+b>c-d 3)关系表达式使用说明 (1)赋值运算符“=”和等于运算符“==”的不同。“==”两侧的运算量可以互换;而“=”两侧的运算量不可以互换。 (2)由于表达式也可以又是关系表达式。因此也允许出现嵌套的情况。例如:a>(b>c) 8

9 4.2 关系运算符和表达式 2.关系表达式 【例4_1】关系表达式求值。 #include<stdio.h>
4.2 关系运算符和表达式 2.关系表达式 【例4_1】关系表达式求值。 #include<stdio.h> void main() { char c='k'; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf("%d,%d\n",’a’+5<c,-i-2*j>=k+1); printf("%d,%d\n",1<j<5,x-5.25<=x+y); printf("%d,%d\n",i+j+k==-2*j,k==j==i+5); } 9

10 4.3 逻辑运算符和表达式 1.逻辑运算符 1)逻辑运算符 2)逻辑运算的值 逻辑运算的值也为真和假两种,分别用1和0来表示。 10

11 4.3 逻辑运算符和表达式 1.逻辑运算符 3)逻辑运算求值规则 (1)与运算&&:参与运算的两个量都为真时,结果才为真,否则为假。例如:
4.3 逻辑运算符和表达式 1.逻辑运算符 3)逻辑运算求值规则 (1)与运算&&:参与运算的两个量都为真时,结果才为真,否则为假。例如: 5>0&&4>2结果也为真。 (2)或运算||:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。例如: 5>0||5>8结果也就为真。 (3)非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如: !(5>0)的结果为假。 11

12 4.3 逻辑运算符和表达式 1.逻辑运算符 4)逻辑运算符优先级 5)逻辑运算符的结合性
4.3 逻辑运算符和表达式 1.逻辑运算符 4)逻辑运算符优先级 逻辑运算符和其它运算符优先级的关系由高到低可表示如下: (1)!—>&&—>|| (2)关系运算符!—>算术运算符—>关系运算符&&和||—>赋值运算符 按照运算符的优先顺序可以得出: a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b) 5)逻辑运算符的结合性 逻辑运算符左结合 12

13 4.3 逻辑运算符和表达式 2.逻辑表达式 1)逻辑表达式 2)逻辑表达式格式 3)逻辑表达式的值
4.3 逻辑运算符和表达式 2.逻辑表达式 1)逻辑表达式 用逻辑运算符将表达式连接起来构成的有意义的式子。 2)逻辑表达式格式 表达式 逻辑运算符 表达式 其中的表达式可以又是逻辑表达式,从而组成嵌套。例如: (a||b)&&c 3)逻辑表达式的值 逻辑表达式的值是式中各种逻辑运算的最后值,以1和0分别代表真和假。 13

14 4.3 逻辑运算符和表达式 2.逻辑表达式 【例4_2】逻辑表达式求值。 #include<stdio.h>
4.3 逻辑运算符和表达式 2.逻辑表达式 【例4_2】逻辑表达式求值。 #include<stdio.h> void main() { char c='k'; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf("%d,%d\n",!x*!y,!!!x); printf("%d,%d\n",x||i&&j-3,i<j&&x<y); printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k); } 14

15 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 1)第一种形式为基本形式:if (1)第一种if语句格式 if(表达式)
语句; 或写成:if(表达式) 语句; (2)第一种if语句功能 如果表达式的值为真,则执行其后的语句,否则不执行该语句。其执行过程可表示为图4_7。 15

16 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 1)第一种形式为基本形式:if
【例4_3】从键盘输入一个数,如果它是正数,把它打印出来;否则不打印。 #include<stdio.h> void main() { int a; printf("输入a:"); scanf("%d",&a); if(a>0) printf("a=%d",a); } 16

17 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 1)第一种形式为基本形式:if 【例4_4】比较三个数的大小,输出大者。
#include"stdio.h" void main() { int x,y,z,max; printf("input x,y,z: "); scanf("%d,%d,%d",&x,&y,&z); max=x; if(y>max) max=y; if(z>max) max=z; printf("max=%d\n",max); } 17

18 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 2)第二种形式为基本形式:if-else (1)第二种if语句格式
语句1; else 语句2; 或写成: if(表达式) 语句1; else 语句2; if(表达式) 语句1;else 语句2; (2)第二种if语句功能 如果表达式的值为真,则执行语句1,否则执行语句2。 18

19 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 2)第二种形式为基本形式:if-else 【例4_5】判断一个正整数的奇偶性。
#include<stdio.h> void main() { int a; printf("输入a:"); scanf("%d",&a); if(a%2==0) printf("%d是偶数\n",a); else printf("%d是奇数\n",a); } 19

20 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 3)第三种形式为基本形式:if-else-if (1)第三种if语句格式
语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式n) 语句n; else 语句n+1; 20

21 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 3)第三种形式为基本形式:if-else-if (1)第三种if语句格式
else if(表达式n) 语句n; else 语句n+1; 21

22 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 3)第三种形式为基本形式:if-else-if (2)第三种if语句功能
依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行该if语句的后续程序。 【例4_6】要计算机输出y的值(不使用符号函数sgn) 22

23 4.4 用if语句实现选择结构程序设计 1.If语句三种形式 3)第三种形式为基本形式:if-else-if
#include"stdio.h" void main() { int x,y; printf("input x: "); scanf("%d",&x); if(x>0) y=1; else if(x<0) y=-1; else y=0; printf("x=%d,y=%d\n",x,y); } 23

24 4.4 用if语句实现选择结构程序设计 2.If语句的嵌套 1)if语句嵌套的定义 if语句中的执行语句又是if语句。
或者为: else 24

25 4.4 用if语句实现选择结构程序设计 2.If语句的嵌套 3)if语句嵌套的配对原则
为了避免二义性,else总是与它前面离它最近的未被配对的if配对;也可以将内层if语句用{}括起来,使得层次清晰,避免二义性。例如: if(表达式1) { if(表达式2) 语句1; else 语句2; } 25

26 4.4 用if语句实现选择结构程序设计 2.If语句的嵌套 3)if语句嵌套的配对原则 【例4_7】if语句嵌套举例。
#include<stdio.h> void main() { int a,b; printf("please input a,b: "); scanf("%d,%d",&a,&b); if(a!=b) if(a>b) printf("a>b\n"); else printf("a<b\n"); else printf("a=b\n"); } 26

27 4.4 用if语句实现选择结构程序设计 2.If语句的嵌套 4)if语句嵌套的使用原则
【例4_8】用if-else-if语句代替if语句嵌套。 #include<stdio.h> void main() { int a,b; printf("please input a,b: "); scanf("%d,%d",&a,&b); if(a==b) printf("a=b\n"); else if(a>b) printf("a>b\n"); else printf("a<b\n"); } 27

28 4.4 用if语句实现选择结构程序设计 2.If语句的嵌套 4)if语句嵌套的使用原则
【例4_8】用if-else-if语句代替if语句嵌套。 #include<stdio.h> void main() { int a,b; printf("please input a,b: "); scanf("%d,%d",&a,&b); if(a==b) printf("a=b\n"); else if(a>b) printf("a>b\n"); else printf("a<b\n"); } 28

29 4.4 用if语句实现选择结构程序设计 2.If语句的嵌套 4)if语句嵌套的使用原则 【例4_9】用条件表达式,输出两个数中的大数。
#include<stdio.h> void main() { int a,b,max; printf("input two numbers:"); scanf("%d,%d",&a,&b); printf("max=%d\n",a>b?a:b); } 29

30 4.4 用if语句实现选择结构程序设计 3.条件运算符和条件表达式 1)条件运算符 条件运算符为“?:”,它是一个三目运算符。
2)条件表达式 表达式1?表达式2:表达式3 3)条件表达式求值规则 如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为条件表达式值。 4)条件表达式应用场合 条件表达式通常用于赋值语句之中 max=(a>b)?a:b; 执行该语句的语义是:如a>b为真,则把a赋给max,否则把b赋给max。 30

31 4.4 用if语句实现选择结构程序设计 3.条件运算符和条件表达式 5)使用条件表达式注意事项
(1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值运算符。如: max=(a>b)?a:b 可以去掉括号而写为: max=a>b?a:b (2)条件运算符?和:是一对运算符,不能单独使用。 (3)条件运算符的结合方向是自右至左。例如: a>b?a:c>d?c:d 应理解为 a>b?a:(c>d?c:d) 31

32 4.5 用switch语句实现选择结构程序设计 1.switch语句格式 2.switch语句功能 switch(表达式)
{ case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式n:语句n; default :语句n+1; } 2.switch语句功能 计算表达式的值,并逐个与其后的常量表达式值相比较, 当表达式的值与某个常量表达式的值相等时,即执行其后 的语句,然后不再进行判断,继续执行后面所有case后的 语句。如表达式的值与所有case后的常量表达式均不相同 时,则执行default后的语句。 32

33 4.5 用switch语句实现选择结构程序设计 【例4_10】输入一个数字,输出一个单词。 #include<stdio.h>
void main() { int a; printf("input integer number: "); scanf("%d",&a); switch (a) { case 1:printf("monday\n"); case 2:printf("tuesday\n"); case 3:printf("wednesday\n"); case 4:printf("thursday\n"); case 5:printf("friday\n"); case 6:printf("saturday\n"); case 7:printf("sunday\n"); default:printf("error\n"); } 33

34 4.5 用switch语句实现选择结构程序设计 3.使用break语句跳出switch语句 【例4_11】对例4_10的改正程序。
#include<stdio.h> void main() { int a; printf("input integer number:"); scanf("%d",&a); switch (a) {case 1:printf("monday\n");break; case 2:printf("tuesday\n"); break; case 3:printf("wednesday\n");break; case 4:printf("thursday\n");break; case 5:printf("friday\n");break; case 6:printf("saturday\n");break; case 7:printf("sunday\n");break; default:printf("error\n"); } } 34

35 4.5 用switch语句实现选择结构程序设计 3.使用break语句跳出switch语句
【例4_12】商店售货,按购买货物的金额多少分别给予不同优惠折扣如下:购货不足250元的,没有折扣;购货满250元(含250元,下同)不足500的,减价5%;购货满500元,不足1000元的,减价7.5%;购货满1000元,不足2000元的,减价10%;购货满2000元的,减价15%。设购货款为m,折扣为d,可表示如下: 35

36 4.5 用switch语句实现选择结构程序设计 3.使用break语句跳出switch语句 #include<stdio.h>
void main() { float m,d,s; printf("输入货款: "); scanf("%f",&m); switch((int)(m/250)) { case 0:d=0; break; case 1:d=5; break; case 2: case 3:d=7.5; break; case 4: case 5: case 6: case 7:d=10; break; default:d=15; } s=s*m*(100-d)/100; printf(“m=%f,s=%f”,m,s); } 36

37 4.5 用switch语句实现选择结构程序设计 4.使用switch语句的注意事项
1)在case后的各常量表达式的值不能相同,否则会出现错误; 2)在case后,允许有多个语句,可以不用{}括起来; 3)default子句可以省略。 37

38 4.6 选择结构程序设计举例 【例4_13】求一元二次方程ax2+bx+c=0的根。 #include<math.h>
4.6 选择结构程序设计举例 【例4_13】求一元二次方程ax2+bx+c=0的根。 #include<math.h> #include<stdio.h> void main() { int a,b,c; double d,s1,s2,x1,x2; printf(“请输入a,b,c:”); scanf(“%d,%d,%d”,&a,&b,&c); if(a==0)printf("输入有误,a不应该为0"); d=b*b-4*a*c; s1=-b/(2*a); s2=sqrt(abs(d))/(2*a); if(d>=0) //两个实根 { x1=s1+s2; x2=s1-s2; printf(“两个实根:x1=%f,x2=%f”,x1,x2); } else //两个虚根 { printf(“一个虚根:x1=%f+%fi\n”,s1,s2); printf(“另一个虚根:x2=%f-%fi\n”,s1,s2); } } 38

39 4.6 选择结构程序设计举例 【例4_14】输入一个年份,要求判定它是否闰年。判别条件:能被4整除但不能被100整除的是闰年(如1992);能被4整除又能被400整除的是闰年(如2000);其它为非闰年(如2003)。 #include<stdio.h> void main() { int y; printf( “请输入年份:”); scanf(“%d”,&y); if(y%4==0&&(y%100!=0||y%400==0)) printf( "%d is a leap year!\n",y); else printf( "%d is not a leap year!\n",y); } 39

40 4.6 选择结构程序设计举例 【例4_15】有一个城市,规划要建设1个中心城和4个卫星城。中心城的边长20km,卫星城的边长5km,均为正方形。中心城的地价为每公顷10万元,卫星城的地价为每公顷5万元,其它地区的地价为每公顷1万元。编程序,当输入某一地点的坐标(x,y)后,计算机即输出每公顷地价。 卫星城的范围:20≤|x|≤25 and 20≤|y|≤25 中心城的范围:|x|≤10 and |y|≤10 40

41 4.6 选择结构程序设计举例 #include<math.h> #include<stdio.h>
4.6 选择结构程序设计举例 #include<math.h> #include<stdio.h> void main() { float x,y; int price; printf("请输入行坐标:"); scanf("%f",&x); printf ("请输入列坐标:"); scanf("%f",&y); if(fabs(x)<=10&&fabs(y)<=10) price=10; else if(fabs(x)>=20&&fabs(x)<=25&&fabs(y)>=20&&fabs(y)<=25) price=5; else price=1; printf("price=%d\n",price); } 41

42 4.6 选择结构程序设计举例 【例4_16】输入三整数,输出最大数和最小数。 #include<stdio.h>
4.6 选择结构程序设计举例 【例4_16】输入三整数,输出最大数和最小数。 #include<stdio.h> void main() { int a,b,c,max,min; printf("input three numbers: "); scanf("%d,%d,%d",&a,&b,&c); if(a>b) {max=a;min=b;} else {max=b;min=a;} if(max<c) max=c; else if(min>c) min=c; printf("max=%d\nmin=%d\n",max,min); } 42

43 4.6 选择结构程序设计举例 【例4_17】简单算术运算程序。用户输入运算数和四则运算符,输出计算结果。
4.6 选择结构程序设计举例 【例4_17】简单算术运算程序。用户输入运算数和四则运算符,输出计算结果。 #include<stdio.h> void main() { float a,b; char c; printf("input expression: a(+,-,*,/)b \n"); scanf("%f%c%f",&a,&c,&b); switch(c) { case '+': printf("%f\n",a+b);break; case '-': printf("%f\n",a-b);break; case '*': printf("%f\n",a*b);break; case '/': printf("%f\n",a/b);break; default: printf("input error\n"); } } 43


Download ppt "目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计"

Similar presentations


Ads by Google