Download presentation
Presentation is loading. Please wait.
1
程序设计基础
2
第五章 选择结构程序设计 关系运算符和关系表达式 逻辑运算符逻辑表达式 if语句 switch语句 程序举例
程序设计基础 第五章 选择结构程序设计 第五章 选择结构程序设计 关系运算符和关系表达式 逻辑运算符逻辑表达式 if语句 switch语句 程序举例
3
5.1 关系运算符和关系表达式 关系运算符及其优先次序 关系表达式 一般形式 表达式 关系运算符 表达式 a+b>c-d
程序设计基础 第五章 选择结构程序设计 5.1 关系运算符和关系表达式 关系运算符及其优先次序 关系表达式 一般形式 表达式 关系运算符 表达式 a+b>c-d x>3/2 ‘a’+1<c 返回主菜单
4
关系运算符及其优先次序 < 小于 <= 小于或等于 > 大于 优先级相同 (高) >= 大于或等于 == 等于
< 小于 <= 小于或等于 > 大于 >= 大于或等于 == 等于 != 不等于 低 高 赋值运算符 关系运算符 算术运算符 优先级相同 (高) 优先级相同(低)
5
程序设计基础 第五章 选择结构程序设计 5.2 逻辑运算符和逻辑表达式 逻辑运算符及其优先次序 逻辑表达式 返回主菜单
6
逻辑运算符及其优先次序 && 逻辑与 | | 逻辑或 ! 逻辑非 !(非) 算术运算符 关系运算符 &&和 || 赋值运算符 低 高
7
逻辑表达式的值是“真”或“假”,以“1”和“0”代表
一般形式 表达式 逻辑运算符 表达式 求值规则: 1)与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。 2)或运算||:参与运算的两个量只要有一个为真,结果就为真。 3)非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。 逻辑表达式的值是“真”或“假”,以“1”和“0”代表 例如: 若a=4,则!a为 若a=4,b=5,则a&&b为 1 0||2的值为 1
8
程序设计基础 第五章 选择结构程序设计 5.3 if 语句 if语句的三种形式 if语句的嵌套 条件运算符 返回主菜单
9
if(x>y) printf(“%d”,x)
流程图 if(x>y) printf(“%d”,x)
10
if(x>y) printf(“%d”,x);
语句1; else 语句2; 流程图 if(x>y) printf(“%d”,x); else printf(“%d”,y);
11
if 语句的第三种形式 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; …
else if(表达式m) 语句m else 语句n; 说明 流程图
12
if 语句的说明 1)在三种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。 2)在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。 3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。 例5.1 例5.2
13
例5.1 输入两个实数,按代数值由小到大的次序输出这两个数
程序设计基础 第五章 选择结构程序设计 例5.1 输入两个实数,按代数值由小到大的次序输出这两个数 main() { float a,b,t; scanf("%f,%f",&a,&b); if(a>b) {t=a;a=b;b=t;} printf("%5.2f,%5.2f\n",a,b); } 输出: 3.6 ,-3.2↙ -3.20,3.60 运行程序
14
例5.2 输入3个数a,b,c,要求按由小到大的顺序输出
程序设计基础 第五章 选择结构程序设计 例5.2 输入3个数a,b,c,要求按由小到大的顺序输出 main() {float a,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\n”,a,b,c); } 输出: 3,7,1↙ 1.00,3.00,7.00 运行程序
15
if 语句的嵌套 一般形式 if ( ) if ( ) 语句1 else 语句2 else if ( ) 语句3 else 语句4 内嵌if
例5.3
16
例5.3 比较两个数的大小关系 main() { int a,b; printf("please input A,B: ");
程序设计基础 第五章 选择结构程序设计 例5.3 比较两个数的大小关系 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"); } 输出: please input A,B:3,5↙ A<B 运行程序
17
条件运算符与条件表达式 条件运算符 ? : 条件表达式 表达式1? 表达式2: 表达式3 说明:
条件运算符 ? : 条件表达式 表达式1? 表达式2: 表达式3 max=(a>b)?a:b max=a>b?a:b 说明: 1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。 2)条件运算符?和:是一对运算符,不能分开单独使用。 3)条件运算符的结合方向是自右至左。 a>b?a:c>d?c:d a>b?a:(c>d?c:d) 例5.4
18
例5.4 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
程序设计基础 第五章 选择结构程序设计 例5.4 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 main() {char ch; scanf(“%c”,&ch); ch=(ch>=‘A’&&ch<=‘z’)?(ch+32):ch; printf(“%c\n”,ch); } 输出: A↙ a 运行程序
19
5.4 switch语句 switch(表达式) { case常量表达式1: 语句1; case常量表达式2: 语句2; …
程序设计基础 第五章 选择结构程序设计 5.4 switch语句 一般形式 switch(表达式) { case常量表达式1: 语句1; case常量表达式2: 语句2; … case常量表达式n: 语句n; default : 语句n+1; } 若符合常量表达式2,会执行其后所有的语句 改进 返回主菜单
20
switch语句的改进 switch(表达式) { case常量表达式1: 语句1;break;
… case常量表达式n: 语句n;break; default : 语句n+1; } 1)在case后的各常量表达式的值不能相同,否则会出现错误。 2)在case后,允许有多个语句,可以不用{}括起来。 3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 4)default子句可以省略不用。 说明
21
程序设计基础 第五章 选择结构程序设计 5.5 程序举例 例5.5 例5.6 例5.7 例5.8 例5.9 返回主菜单
22
例5.5 写程序,判断某一年是否是闰年。 运行情况: 1989↙ is not a leap year. 2000↙
程序设计基础 第五章 选择结构程序设计 例5.5 写程序,判断某一年是否是闰年。 main() {int year,leap; scanf("%d",&year); if (year%4==0) {if (year%100==0) {if(year%400==0) leap=1; else leap=0;} else leap=1;} leap=0; if (leap) printf("%d is ",year); printf("%d is not ",year); printf("a leap year.\n"); } 运行情况: 1989↙ is not a leap year. 2000↙ 2000 is a leap year. 运行程序
23
例5.6 求 运行情况: 1,2,1↙ The equationhas two equal roots: -1.0000 1,2,2↙
程序设计基础 第五章 选择结构程序设计 例5.6 求 #include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); 运行情况: 1,2,1↙ The equationhas two equal roots: 1,2,2↙ 2,6,1↙ 运行程序
24
例5.7 计算运费 运行情况: 100,20,300↙ freght= 588000.0000 运行程序
程序设计基础 第五章 选择结构程序设计 例5.7 计算运费 main() { int c,s; float p,w,d,f; scanf("%f,%f,%d",&p,&w,&s); if(s>=3000)c=12; else c=s/250; switch(c) case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; } f=p*w*s*(1-d/100.0); printf("freght=%15.4f",f); 运行情况: 100,20,300↙ freght= 运行程序
25
例5.8 输入三个整数,输出最大数和最小数。 main(){ int a,b,c,max,min;
程序设计基础 第五章 选择结构程序设计 例5.8 输入三个整数,输出最大数和最小数。 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; if(min>c) min=c; printf("max=%d\nmin=%d",max,min); } 输出: ↙ max=35 min=10 运行程序
26
例5.9计算器程序。用户输入运算数和四则运算符,输出计算结果。
程序设计基础 第五章 选择结构程序设计 例5.9计算器程序。用户输入运算数和四则运算符,输出计算结果。 输出: ↙ 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"); } 运行程序
27
The end
Similar presentations