第3章 选择结构程序设计
C语言程序设计第3章选择结构程序设计
![C语言程序设计第3章选择结构程序设计](https://img.taocdn.com/s3/m/cb920d2e89eb172dec63b7a7.png)
√
!注意 if 与 else 的配对关
系,else总是与它上面最近 的未配对的 if 配对,若if与 else 的数目不一致,可以加 { }来确定配对关系。
整理课件
例:有一函数
y=
-1 0
(x<0) 输入X值,输出Y值。 (x=0)
1 (x>0)
main( ) { int x, y; scanf("%d",&x);
if (x<0) y= -1; else if (x= =0) y=0;
if(x<=0)
else y=1;
if (x= =0) y=0; y= -1;
else y=-1;
if (x>=0)
eplrsientfy(="1x;=%d,y=%d\n{"i,xf ,(yx)>;0) y=1; }
}
else y=0;
整理课件
程序设计基本步骤
定义变量 产生数据 数据处理、计算 输出结果
整理课件
√
程序举例
编程1:判断某一年是否闰年。 能被4整除但不能被100整除的是闰年; 能被400整除的是闰年。
main( ) { int y; scanf("%d",&y);
if ((y%4==0&&y%100!=0)||(y%400==0)) printf("yes\n",y);
}
15 x 30 30 x 100 100 x 200 其它
整理课件
读程序段
m,n,x,y,z均为整型变量,求执行完该段 程序后各变量的值。
m=10;n=5;
x=(--m==n++)?--m:++n;
第3章-选择结构程序设计(new)PPT课件
![第3章-选择结构程序设计(new)PPT课件](https://img.taocdn.com/s3/m/80b67b3b172ded630a1cb647.png)
b
!a !b a&&b a||b
0
0
1
1
0
0
0
1
1
0
0
1
1
0
0
1
0
1
1
1001源自1.9.
10
二、逻辑表达式
➢逻辑表达式:用逻辑运算符将关系表达式或任意
类型的数据连接起来。
5&&3 a>b || x<=y
!'a'
算术表达式 关系表达式
➢C语言中a,运算b量: !a0表示“!b假”a&, &0b
0
0
1非0表示1“真”0,1
第三章 选择结构
§3.1 选择结构概述 §3.2 关系运算符和关系表达式 §3.3 逻辑运算符和逻辑表达式 §3.4 if 语句 §3.5 条件运算符和条件表达式 §3.6 switch语句 §3.7程序举例
.
1
华北电力大学计算机系
3.1 选择结构概述
【例3-1】输入x的值,求分段函数y=f(x)的值, 函数表示如下:
.
7
§3.3逻辑运算符和逻辑表达式
一.逻辑运算符及其优先次序
1. 逻辑运算符
&&
逻辑与 二目运算符
¦¦
逻辑或
!
逻辑非 单目运算符
2. 优先级和结合性
! (2)
高 右结合
&& (11)
左结合
|| (12)
低 左结合
.
!(非) 算术运算符 高 关系运算符
&&
¦¦ 低
赋值运算符 8
3.逻辑运算真值表
C语言程序设计第3章 选择结构流程和应用
![C语言程序设计第3章 选择结构流程和应用](https://img.taocdn.com/s3/m/94c5fc010722192e4536f6fc.png)
2 单分支和双分支选择结构程序设计
简单if语句 if-else语句 条件运算符与条件表达式
简单if语句
学一学 简单if语句的形式为: if ( 条件表达式 ) 语句
其流程图如图3-1所示。语句的执 行过程是先计算“条件表达式”, 若值为“真”,则执行“语句”; 否则什么也不做。此处的“语句” 可以是简单语句,也可以是用一对 大括号“{ }”括起来的复合语句。
本章内容中我们将学习 1 选择结构判定条件的构成 2 单分支与双分支选择结构程序设计 3 多分支选择结构程序设计
1 选择结构判定条件的构成
关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符,其 运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符,如 表3-1所示。
条件
Y
N
语句
试一试
问题3.4 从键盘输入一个数,输出其绝对值。 解题步骤 1.定义变量二个int变量iX,iY,其中iX用来接收 用户从键盘输入的数据,iY用来存放iX的绝对值。 2.从键盘输入一个整数放iX; 3.把iX放iY; 4.正数的绝对值是正数本身,负数的绝对值是其 相反数。所以,如果iX<0,则iY= -iX,否则不 需要做什么; 5.输出iX和iY。
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印一 张饮酒卷,使的能饮酒的同学可以获取饮 酒卷。
if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;
[Python语言程序设计][刘卫国]第3章 选择结构 配源代码
![[Python语言程序设计][刘卫国]第3章 选择结构 配源代码](https://img.taocdn.com/s3/m/6f6600551711cc7931b71699.png)
例 硅谷公司员工的工资计算方法如下: (1)工作时数超过 120小时者,超过部分加发 15%。 (2)工作时数低于60小时者,扣发 700元。 (3)其余按每小时84元计发。 输入员工的工号和该员工的工作时数,计算应发 工资。
分析:为了计算应发工资,首先分两种情况,即 工时数小于等于120小时和大于120小时。工时数超过 120小时时,实发工资有规定的计算方法。而工时数 小于等于120小时时,又分为大于60和小于等于60两 种情况,分别有不同的计算方法。所以程序分为3个 分支,即工时数>120、60<工时数≤120和工时数≤60, 可以用多分支if结构实现,也可以用if的嵌套实现。
例 写出下列条件。 (1)判断年份year是否为闰年。 (2)判断ch是否为小写字母。 (3)判断m能否被n整除。 (4)判断ch既不是字母也不是数字字符。 条件1:(year%4==0 and year%100!=0) or year%400==0 条件2:ch>='a' and ch<='z' 条件3:m%n==0或m-m/n*n==0 条件4: not((ch>='A' and ch<='Z') or (ch>='a' and ch<='z') or (ch>='0' and ch<='9'))
单分支if语句的执行过程
注意: (1)在if语句的表达式后面必须加冒号。 (2)因为Python把非0当作真,0当作假, 所以表示条件的表达式不一定必须是结果为 True或False的关系表达式或逻辑表达式,可 以是任意表达式。 (3)if语句中的语句块必须向右缩进,语 句块可以是单个语句,也可以是多个语句。 当包含两个或两个以上的语句时,语句必须 缩进一致,即语句块中的语句必须上下对齐。 (4)如果语句块中只有一条语句,if语句 也可以写在同一行上。例如:
第三章选择结构程序设计
![第三章选择结构程序设计](https://img.taocdn.com/s3/m/bb9a832a3169a4517723a3c2.png)
语句格式
<测试表达式 测试表达式> SELECT CASE <测试表达式> 表达式表>可是: <表达式表>可是 <表达式表 表达式表1> CASE <表达式表1> 表达式>[ >[, ① <表达式>[,<表达式 [<语句组 语句组1>] [<语句组1>] >]… >] <表达式表 表达式表2> CASE <表达式表2> 如: CASE 20,30,40 [<语句组 语句组2>] "a","b","c” [<语句组2>] CASE "a","b","c <表达式表 表达式表3> CASE <表达式表3> 表达式> <表达式 表达式> ② <表达式> TO <表达式> 小值 TO 大值 [<语句组 语句组3>] [<语句组3>] 如: CASE 70 TO 79 … CASE "a" TO ”d ” d [CASE ELSE IS关系运算表达式 ③ IS关系运算表达式 [<语句组 语句组n+1>] [<语句组n+1>] ] 如: SELECT CASE CJ END SELECT
IF w<=50 THEN x=0.65*w ELSE x=50*0.65+(w - 50)*1.10
.
练习:编程求y的值。 练习:编程求y的值。 x2+1 (x>=0) y= x 2- 1 (x<0) INPUT “x=“;x IF x>=0 THEN y=x*x+1 ELSE y=x*x-1 END IF PRINT “y=“;y
第3章 选择结构程序设计[66页]
![第3章 选择结构程序设计[66页]](https://img.taocdn.com/s3/m/492a473702d276a200292eca.png)
编程练习
练习3.1:a=1,b=20,c=10,x=a>b,y=a<b<c,思考x、y的值为多少。请编程验证x和y的值。
第一节 选择结构条件判定
11
知识讲解
3.1.2 逻辑运算符和逻辑表达式
1.逻辑运算符 C语言中有三种逻辑运算符,分别是: &&(逻辑与):当“&&”两边操作数同时为真时,表达式值为1,否则为0; ||(逻辑或):当“||”两边只要有一个为真时,表达式值为1,否则为0; !(逻辑非):操作数为0时,结果为1,否则,结果为0。 前两个为双目运算符,左结合性,如分数区间是80到90之间的,我们描述为(x>80)&&( x<90),
第一节 选择结构条件判定
7
案例分析
题目描述: 例3.1阅读下面的程序,分析三次输出a、b、c的结果,并说明其原因。
第一节 选择结构条件判定
8
案例分析
程序代码:
#include <stdio.h> int main() {
int a,b,c; a=b=c=10; printf("a=%d,b=%d,c=%d\n",a,b,c); a=b==c; printf("a=%d,b=%d,c=%d\n",a,b,c); a=b>c>=10; printf("a=%d,b=%d,c=%d\n",a,b,c); return 0; }
(x==0)如果写成!x==0,就变成关系表达式(!x)==0了。
第一节 选择结构条件判定
12
知识讲解
2.逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。[1]逻辑表达式的值为
第3章选择结构程序设计PPT课件
![第3章选择结构程序设计PPT课件](https://img.taocdn.com/s3/m/04c48c852af90242a995e576.png)
4
• 输入a、b、 c三个整数, 输出其中的 最大值
流程图:
开始
输入a, b, c
a>b? Y
m=a
m>c? N
m=c
输出m
结束
N
m=b Y
5
程序1: #include<stdio.h> main() { int a,b,c,m; scanf("%d%d%d",&a,&b,&c); m=(a>b)?a:b; m=(m>c)?m:c; printf("最大值为%d",m); }
N-S结构图
表达式非0
T
F
语句1 语句2
如:① if (x>0) m++; else m--;
② if ( ch>= 'a' && ch<= 'z' ) { ch=ch-32 ; printf(" %c\n",ch); }
else printf(" %c\n",ch) ; 17
[例1] 编程:输入a、b、c三个整数,输出其中的最大值。
• 思路 –输入:用 getchar 或 scnaf 函数 –判断ch是否为大写字母: ch>='A' && ch<='Z' (或 ch>=65 && ch <= 90) –大写字母转换为小写字母: ch=ch+32 –输出:用 putchar 或 printf 函数
13
程序:
#include "stdio.h" main( ) { char ch; ch=getchar( ); if (ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch ); }
第3章_基本程序设计-1(周)
![第3章_基本程序设计-1(周)](https://img.taocdn.com/s3/m/fc5685c4bb4cf7ec4afed060.png)
18
25 27
if (t < 18) printf("t=%f\tLower weight!\n", t); else if (t < 25) printf("t=%f\tStandard weight!\n", t); else if (t < 27) printf("t=%f\tHigher weight!\n", t); else printf("t=%f\tToo fat!\n", t); }
23
(4)for 语句的循环体还可为另一个循环语句
例如: for(i=1;i<=2;i++) for(j=1;j<=2;j++) { printf(“%3d”,i+j); printf(“\n”); } output: 2 3 3 4
24
do-while语句
do{
语句; } while(表达式); 功能:先执行循环体,然后计算表达式值, 其值若为真(非0)则继续执行循环体,直 到表达式为假时为止。
循环嵌套结构规划
外循环 入口
内循环
内循环出口
交叉循环
外循环出口
内循环出口
外循环
循环嵌套
1 2 3 4 5 6 7 8 9 -------------------------------------1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81
scanf("%d",&i);
C语言程序设计 第3章 选择结构 -
![C语言程序设计 第3章 选择结构 -](https://img.taocdn.com/s3/m/f2234fc0846a561252d380eb6294dd88d0d23d7f.png)
如果条件满足了,就执行{}里的语句, 如果条件不满足,直接越过{}里的语句。
3.2 关系运算符与关系表达式
关系运算符
< (小于) <= (小于或等于) > (大于) >= (大于或等于) == (等于) != (不等于)
3.2 关系运算符与关系表达式
关系表达式: 用关系运算符将两个表达式连接起来的式子
case 常量表达式2:语句2; ... default:语句n+’键向上运动,‘s’键向下运动, ‘a’键向左运动,‘d’键向右运动。
char ch = getch(); // 获得按键按下的值
switch(ch){ case 'w' : row = row - 1; case 's': row = row + 1; case 'a' : col = col - 1;
a > 60 x == 1 关系表达式的值是一个逻辑值,即“真”或“假”。
3.2 关系运算符与关系表达式
C语言中, 1表示“真”,0 表示“假”
例: 5 > 3 为真,值为1。 2 == 3 为假,值为0。 (2 > 3) == (3 > 5) 为真,值为1,
3.2 关系运算符与关系表达式
例:当按下‘w’键,方块向上运动
3.3 逻辑运算符与表达式
逻辑运算符
&& (逻辑与) || (逻辑或) ! (逻辑非) 运算规则: a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假。
3.3 逻辑运算符与表达式
逻辑表达式: 用逻辑运算符将关系表达式连接起来的 式子
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 选择结构程序设计3.1 C语句概述3.2 程序的三种基本结构3.4 条件运算符和条件表达式3.6 选择结构程序举例3.1 C语句概述3.1.1 概述3.1.4 空语句3.1.1 C语句概述3.1.2 简单语句1. 表达式语句表达式;分号(;)是语句结束的标志分号(;)是语句结束的标志2.函数调用语句(1)如数学函数,为了得到函数的返回值。
这类函数的调用一般出现在表达式中,作为表达式语句的一部分。
在表达式中调用函数,实际上是转去执行一段预先设计好的程序,求出结果后返回调用点。
所以函数的值又叫函数的返回值。
3.1.3 复合语句大括号{ }注意:3.1.4 空语句3.2 程序的三种基本结构3.2.1 概 述3.2.2 顺序结构3.2.3 选择结构3.2.4 循环结构3.2.5 顺序结构举例3.2.1 概 述3.2.2 顺序结构AB…k=k2k ≠k1…kkk=kkk=k1kA1A2BAk 图 3-4 多分支选择结构真(非0)假(0)AB条件图 3-3 双分支选择结构3.2.3 选择结构1.当型循环结构假(0)真(非0)A条件3.2.4 循环结构2.直到型循环结构真(0)假(0)A条件例3-1:输入一个华氏温度,输出对应的摄氏温度。
输出取2位小数。
转换公式为 5c (F 32)9=−3.2.5 顺序程序设计举例例3-2:输入两个整数a、b,将它们交换,例如a为3,b为5,交换后a为5,b为3。
例3-3:从键盘输入圆半径,求圆的面积和周长,结果保留两位小数。
例3-4:输入三角形的三边长,求三角形面积。
输出:a=3.00, b=4.00, c=6.00, s=6.50ares=5.33ares=5.33例3-5:从键盘输入一个大写字母,要求改用小写字母输出。
例 3-6:求ax +bx+c=0方程的根,a,b,c由键盘输入,设b -4ac>0 。
223.3 if 语句3.3.1 if语句的三种形式3.3.2 if语句的嵌套3.3.1 if 语句的三种形式1、单分支选择if if 语句if (表达式)语句;注意:非零值2、双分支选择if if 语句【例3-7】输入两个整数, 输出其中较大的数。
注意:if(a > b){a ++;b ++;}else{a = 0;b = 10;}3、多分支选择 if 语句if (if (表达式1)语句1; else if (else if (表达式2) 语句2; else if (else if (表达式3) 语句3;………… else if (表达式n) 语句n ;【例3-8】计算分段函数。
假输入xX<=1?真X>10?y=3/(x-10)y=2xy=x+5假真5x x 12y x 1x 103x 10x 10⎧⎪+≤⎪<=<⎨⎪⎪>−⎩0<if ( 表达式1)if (if ( 表达式2)语句1; if ( 表达式1)if (if ( 表达式2)语句1;elseelse语句2;3.3.2 if 语句的嵌套if ~ else 配对原则::例: if (a==b) if(b==c)printf(printf(““a ==b==c ==b==c””); elseprintf(printf(printf(““a !=b !=b””);修改: if (a==b){ if(b==c) printf(printf(““a ==b==c ==b==c””); } elseprintf(printf(““a !=b !=b””);【例3-9】计算分段函数。
3.4 条件运算符和条件表达式?、:,它与三个操作数组<表达式1><表达式2><表达式3>3.5 switch 语句指语句的最后一条是否为break简单语句或复合语句breakbreak 有无break有无有计算表达式常量1常量2常量n =语句1…===语句2语句n其它=语句n+1无值case语句出现的次序并不影响执行结果。
运行结果:3↙Wednesday Thursday Friday Saturday errorvoid main(){int int int n; n; scanf("scanf("scanf("%d %d %d",",",&n &n &n);); switch(n) {case 0: case 0: printf("Sunday\n printf("Sunday\n "); case 1: case 1: printf("Monday\n printf("Monday\n "); case 2: case 2: printf("Tuesday\n printf("Tuesday\n printf("Tuesday\n");"); case 3: case 3: printf("Wednesday\n printf("Wednesday\n printf("Wednesday\n");"); case 4: case 4: printf("Thursday\n printf("Thursday\n printf("Thursday\n");"); case 5: case 5: printf("Friday\n printf("Friday\n printf("Friday\n");"); case 6: case 6: printf("Saturday\nprintf("Saturday\n "); default: printf("Error printf("Error");"); }}break语句,其功能是可以跳出它所在的switch语句。
运行结果:3↙Wednesday#include "include "stdio.h stdio.h stdio.h""void main(void main(void void void)){int int int n; n; scanf("scanf("scanf("%d %d %d", ", ", &n &n &n);); switch(n) {case 0: case 0: printf("Sunday\nprintf("Sunday\n "); break; case 1: case 1: printf("Monday\n printf("Monday\n printf("Monday\n"); break;"); break; case 2: case 2: printf("Tuesday\n printf("Tuesday\n printf("Tuesday\n"); break;"); break; case 3: case 3: printf("Wednesday\n printf("Wednesday\n printf("Wednesday\n"); break;"); break; case 4: case 4: printf("Thursday\n printf("Thursday\n printf("Thursday\n"); break;"); break; case 5: case 5: printf("Friday\n printf("Friday\n printf("Friday\n"); break;"); break; case 6: case 6: printf("Saturday\nprintf("Saturday\n "); break; default: printf("Error printf("Error");"); }}switch(grade){case 'A': case 'B':case 'C': case 'C': printf("grade printf("grade printf("grade>=60\n"); break;>=60\n"); break; default: default: printf("grade printf("grade printf("grade<60");<60");}10%1012%102014%204016%406018%6010020%100×≤⎧⎪×<≤⎪⎪×<≤⎪=⎨×<≤⎪⎪×<≤⎪×>⎪⎩利润利润万利润利润万利润利润万奖金利润利润万利润利润万利润利润万利润x x<=1010<x≤20 20<x≤40 40<x≤60 60<x≤100 100<x(int )x/10常量0,11,22,3,44,5,66,7,8,9,1010以上使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。
void main(void){float x, y; int int int n;n; scanf("%f",&x scanf("%f",&x scanf("%f",&x);); n = (int)x/10;if ((int)x%10 == 0) n--; swtch(n swtch(n swtch(n)) {case 0:y=x y=x**0.1; break; case 1:y=x y=x**0.12; break;case 2: case 3:y=x y=x**0.14; break; case 4: case 5: y=x y=x**0.16; break; case 6: case 7: case 8: case 9:y=x y=x**0.18; break; default: y=x y=x**0.2; }printf("y printf("y =%.2f\n", y);}#include "include "stdio.h stdio.h stdio.h""void main( ){int int int x, y, z, t; x, y, z, t; scanf("%d,%d,%d scanf("%d,%d,%d scanf("%d,%d,%d", &x, &y, &z);", &x, &y, &z); if(x<y) { t=x; x=y; y=t; } /*交换x, y 的值*/ if(x<z) { t=x; x=z; z=t; } /*交换x, z 的值*/ if(y<z) { t=y; y=z; z=t; } /*交换y, z 的值*/printf("%d printf("%d printf("%d, %d, %d\n", x, y, z);, %d, %d\n", x, y, z);}3.6 3.6 选择结构程序举例选择结构程序举例选择结构程序举例#include "include "stdio.h stdio.h stdio.h""void main( ){ int int int year; year; scanf("scanf("scanf("%%d ", ", &&year); if(year if(year%%400==0 | |(year 400==0 | |(year%%4==04==0&&&&&&year year year%%100!=0)) printf("printf("printf("%%d is a leap year\n", year); else printf("printf("printf("%%d is not a leap year\n", year);}。