C语言 选择分支结构程序设计35页PPT
合集下载
C语言第四章选择结构ppt课件

基本 if 语句的通常形式是:
表达式 假 真
if ( 表达式 ) if ( x > y ) /* 简单语句 */ 语句组
语句;
z=x ;
或语句
if ( 表达式 ) { 语句; 语句;
}
if ( x > y ) /* 复合语句 */ {
z=x; x=x+1; printf(“%d\n”,z); }
执行过程:
(1)当switch后面“表达式”的值,与某个case后面的 “常量表达式”的值相同时,就执行该case后面的语句;当 执行到break语句时,跳出switch语句。
(2)如果没有任何一个case后面的“常量表达式”的值, 与“表达式”的值匹配,则执行default分支后面的语句。
说明(1):
这就是 if ...... else 语句的功能。
简单的if 语句只能 表达“如果 ,那 么 ”的含义,而 if ...... else 语 句却能表达“如果
If ( x>=0) 语句1;
else 语句2;
那么 否则 ”
的含义。
ห้องสมุดไป่ตู้
真
语句1
表达式
假
语句2
注意:如果使用了复合语句,一定要用大括号把它们括起来。
/* 求 x 的绝对值并赋给 y */
printf(“|%f|=%f”,x,y); }
/* 输出 x 的绝对值 */
二、if ... else 语句
对这一句话“如果x>=0则y=x,如果x<0则y=-x”,可以写 出以下语句:
If ( x>=0) y=x;
if (x<0) y=-x;
能否把两条语句合成一句,更好地体现这种逻辑关系呢?
C语言程序设计第4章选择结构程序设计ppt课件

8
printf("grade is E" );
9 else if (score >=60 && score<70 )
10
printf( "grade is D");
11 else if (score >=70 && score<80 )
12
printf( "grade is C");
13 else if (score>=80 && score<90 )
printf("a,b="); scanf("%d,%d",&a,&b); if (a>b) max=a; else max=b; printf("max=%d\n",max); }
结束
8
3.if-else if-else语句
(1)语句格式:
if (表达式1) 语句1
else if (表达式2) 语句2
不再判断,顺序执 行下面的语句
21
4.2 switch语句
switch (表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n [default:语句n+1] }
注意:
1. <表达式>可以是整型或字 符型表达式; 2. case后面必须是常量表达 式,不能包含变量; 3. 每个常量表达式的值应互 不相同; 4. case语句先后顺序随意; 5.若从上至下没有找到与表 达式的值相匹配的case,含有 default子句时,执行语句n+1。
C语言之选择结构程序设计PPT课件

char grade;
printf("请输入学生成绩:"); scanf("%d",&score); temp=score/10;
第32页/共45页
switch(temp) { case 10: case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; case 6: grade='D'; break; case 5: case 4: case 3: case 2: case 1: case 0: grade='E'; }
else if (表达式3) 语句3
…
else 语句n
第22页/共45页
练习:判断由键盘输入的字符是数字、大写字母、小写字母、空格还是其他字符。
#include <stdio.h> void main() { char c; c=getchar();
第23页/共45页
if(c<='9'&&c>='0') printf("%c 是字符!\n",c);
第2页/共45页
5.1 关系运算符与关系表达式
1、关系运算符 假值用0表示,非0都为真; 关系运算符与优先级: < <= > >= (高) == != (低) 结合性:左到右
第3页/共45页
2、关系表达式
赋值运算 关系运算 算术运算(高) 例: c>a+b 等价于 c>(a+b)
a=b>c等价于 a=(b>c)
printf("请输入学生成绩:"); scanf("%d",&score); temp=score/10;
第32页/共45页
switch(temp) { case 10: case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; case 6: grade='D'; break; case 5: case 4: case 3: case 2: case 1: case 0: grade='E'; }
else if (表达式3) 语句3
…
else 语句n
第22页/共45页
练习:判断由键盘输入的字符是数字、大写字母、小写字母、空格还是其他字符。
#include <stdio.h> void main() { char c; c=getchar();
第23页/共45页
if(c<='9'&&c>='0') printf("%c 是字符!\n",c);
第2页/共45页
5.1 关系运算符与关系表达式
1、关系运算符 假值用0表示,非0都为真; 关系运算符与优先级: < <= > >= (高) == != (低) 结合性:左到右
第3页/共45页
2、关系表达式
赋值运算 关系运算 算术运算(高) 例: c>a+b 等价于 c>(a+b)
a=b>c等价于 a=(b>c)
第5章选择分支结构--C语言程序设计(谭浩强第三版)PPT课件

8<3逻辑值为0
1&&0逻辑值为0
(3)短路现象:一个逻辑表达式中的逻辑运算符并不一定全 部执行.
例如: a&&b&&c 当a=0(假)时, 当a=1,b=0,
例如: a ¦¦b ¦¦c 当a=1时,
b,c不需判断。 c不需判断。
b, c均不必判别。
例如: a=1,b=2,c=3,d=4,m=1,n=1
else if (表达式2) 语句2
else if (表达式3) 语句3
…
…
else if(表达式n) 语句n
else
语句n+1
#include <stdio.h>
例6:输入一个字符,请 判断是字母、数字还 是特殊字符。
main( )
{ char ch;
printf("Please input a character:\n");
! 逻辑非(条件为真,运算后为假,条件为假,运 算后为真)
“&&”,“||”是双目运算符,“!”是单目运算符。
例:a&&b a||b !a
若a,b为真,则a&&b为真。 若a,b之一为真,则a||b为真。 若a为真,则!a为假。
2021
7
(2)逻辑运算真值表
a
b
!a
真真 假
真假 假
假真 真 假假 真
!a
值为0
a&&b
值为1
a||b
值为1
!a||b 4&&0||2
值为1 值为1
5>3&&8<4-!0 (5>3)&&(8<(4-(!0))) 值为0
C语言程序设计基础分支结构程序设计PPT课件

if 语句 if 语句
例:计算符号函数
输入变量x, 计算符号函数:
1 当 x>0
y = 0 当 x=0
-1 当 x<0
非0
非0
if (x>=0)
x>0
if(x>0) y = 1;
else y = 0;
else y = -1;
y=1
x >= 0
0
y=0
0 y = -1
例4-9
非0
0
x <2
非0
0
x <1
非0
0
exp1
int n;
(n>0) ? 2.9 : 1
n = 10
2.9
n = -10
1.0
x+2 x>0 y=
x2 x<=0
if ( x>0 ) y=x+2;
else y=x*x;
y = (x>0) ? x+2 : x*x;
4.3 switch语句
switch(表达式) {
case 常量表达式1:语句段1 case 常量表达式2:语句段2
非0
0
表达式
if (exp)
statement_1
语句1
ch=getchar(); if(ch>='a'&&ch<='z')
ch=ch-'a'+'A'; putchar(ch);
ch=getchar(); if(ch>='a'&&ch<='z'){
C语言第5章 选择结构的程序设计PPT教学课件

开始
输入a,b,c
a<b?
F
T a与b交换
a<c?
F
T a与c交换
b<c?
F
T b与c交换
输出a,b,c
2020/12/10
结束
11
2.双分支if语句——if_else语句
格式:
if (<表达式>) 语句1
else
语句2
2020/12/10
12
2. if_else语句
功能:
T 语句1
表达式
F 语句2
2020/12/10
13
3. 多分支if语句
格式:
if (<表达式1>) 语句1 else if (<表达式2>) 语句2 else if (<表达式3>) 语句3
…... else if (<表达式n-1>) 语句n-1 else 语句n
2020/12/10
14
3. 多分支语句
功能: F 表达式1
(4)default一般出现在所有的case之后,也可以出现在 case之前或两个case语句之间。Default可以省略。
2020/12/10
23
5.2 switch语句
例1 用switch语句设计程序,实现输出学生成绩和 等级的功能。 分析:因为分数x为0~100分,则x/10的值为0,1,2, 3,4,5,6,7,8,9,10。
…… case <常量表达式n>:语句n default 语句n+1
}
2020/12/10
21
5.2 switch语句
功能:
首先计算<表达式>的值,然后依次与<常量表达式i> (i=1,2,…,n)比较,若表达式的值与<常量表达式j>相 等,则从<常量表达式j>处开始执行,这里就是执行的 入口,直到switch语句结束。若所有的<常量表达式i> (i=1,2,…,n)的值均不等于表达式的值,则从default处 开始执行。
C语言程序设计ppt课件-第3章-选择结构

1.表达式 2. if语句 3. switch语句 4. 选择结构的嵌套 5. 选择结构的应用
本章主要内容
1
选择结构
在解决大量的实际问题时,常常需要根据不同的 情况或条件,制定出不同的解决方案或对策。
选择结构是通过对条件 的判断来选择执行不同 的程序语句。
选择结构
一个程序若具有了判断和选择功 能,就具备了最基本的智能。
的完整的解题步骤。
void main() { int x,y,z,max;
printf("“\n Please input x,y,z: ");
➢将同影一响问到题算可法用乃不至同程算序法的解效决率,sifc(a。xm而n>afy(一一x)"=%x个个;d%算算d法法%d的的",&评质x价,量&y主优,&要z劣); 从时间复杂度和空间复杂度来els考e 虑。
max=y;
例从键盘输入三个不同的、无序if(mm的aaxx整<=zz)数; ,并分别存放 到变量x、y、z中,然后通过pr判int断f("输\n 出ma三x=%个d数\n"中,m的ax)最;
大数。要求将最大数存放在} 变量max中。
25
语法练习(单选题)
1.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中
switch语句的应用
关例键从语键句盘:上输入一个学生的总平均成 绩能用(i大f- e于ls0e且if来小替于换10吗0)? swi,tc按h(分(i数nt段)(评sc定or出e/成10绩.的0)相) 应等级,90以上为A级,80~
{89为caBs级e ,97:0~g7r9a为dCe=级'A,'6;0~br6e9a为k;D级,59以下为E级。 问题分ca析se:s8w:itchg语ra句de中='的B表';达b式re只ak能; 是整型或字符型,所 以可c用as成e 绩7的:高位gr数ad字e=来'C确';定b其re对a应k;的分数段,而每一个 分数c段as又e对6应:swigtrcha中de的='一D'路; 选br择ea。k;可用表达式“((int)(成 绩/1c0)a)s”e 计5算:出成绩的高位数字 ,其中,“(int)”的功能 是将c表as达e式的4:值强制转换成整数。
本章主要内容
1
选择结构
在解决大量的实际问题时,常常需要根据不同的 情况或条件,制定出不同的解决方案或对策。
选择结构是通过对条件 的判断来选择执行不同 的程序语句。
选择结构
一个程序若具有了判断和选择功 能,就具备了最基本的智能。
的完整的解题步骤。
void main() { int x,y,z,max;
printf("“\n Please input x,y,z: ");
➢将同影一响问到题算可法用乃不至同程算序法的解效决率,sifc(a。xm而n>afy(一一x)"=%x个个;d%算算d法法%d的的",&评质x价,量&y主优,&要z劣); 从时间复杂度和空间复杂度来els考e 虑。
max=y;
例从键盘输入三个不同的、无序if(mm的aaxx整<=zz)数; ,并分别存放 到变量x、y、z中,然后通过pr判int断f("输\n 出ma三x=%个d数\n"中,m的ax)最;
大数。要求将最大数存放在} 变量max中。
25
语法练习(单选题)
1.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中
switch语句的应用
关例键从语键句盘:上输入一个学生的总平均成 绩能用(i大f- e于ls0e且if来小替于换10吗0)? swi,tc按h(分(i数nt段)(评sc定or出e/成10绩.的0)相) 应等级,90以上为A级,80~
{89为caBs级e ,97:0~g7r9a为dCe=级'A,'6;0~br6e9a为k;D级,59以下为E级。 问题分ca析se:s8w:itchg语ra句de中='的B表';达b式re只ak能; 是整型或字符型,所 以可c用as成e 绩7的:高位gr数ad字e=来'C确';定b其re对a应k;的分数段,而每一个 分数c段as又e对6应:swigtrcha中de的='一D'路; 选br择ea。k;可用表达式“((int)(成 绩/1c0)a)s”e 计5算:出成绩的高位数字 ,其中,“(int)”的功能 是将c表as达e式的4:值强制转换成整数。
C语言程序设计PPT课件(第2版)第3章 选择结构程序设计

算法设计
开始
根据平均成绩的计算结果,将有两个大的分支: 分支一:平均成绩小于0,显示“数据错误!”; 分支二:平均成绩不小于0,进一步进行小分支处理。
输入数据
计算平均成绩ave
假 ave<0? 真 输出:数据错误
ave≥90? 真 输出:优等生
假
输出:加油!
结束
C语言程序设计-理论方法与实践(第2版)
含义 大于 大于等于
实例 ave>90 ave>=90
<
<= == !=
小于
小于等于 等于 不等于
ave<90
ave<=90 ave==90 ave!=90
C语言程序设计-理论方法与实践(第2版)
3.1.2关系表达式
2.关系表达式的值 • 关系表达式只有两个取值,或者是1,或者是0。 当关系表达式所表示的“关系”成立时,其值为1;否则, 其值为0。 例如: 示例程序中关系表达式,ave>=90 第一次执行程序时,变量ave的值为92,关系表达式 “ave>=90”成立,则其值为1; 第二次执行程序时,变量ave的值为81,关系表达式 “ave>=90”不成立,则其值为0。
C语言程序设计-理论方法与实践(第2版)
3.1.2关系表达式
4.关系运算的优先级 (1) 关系运算“>”、“>=”、“<”以及“<=”的优 先级相同,关系运算“==”和“!=”的优先级相同, 前面一组运算符的优先级高于后面一组运算符的优先 级。 (2)关系运算符的优先级低于算术运算的优先级。 (3)关系运算符的优先级高于赋值运算的优先级。 4.关系运算的结合性
C语言程序设计-理论方法与实践(第2版)
开始
根据平均成绩的计算结果,将有两个大的分支: 分支一:平均成绩小于0,显示“数据错误!”; 分支二:平均成绩不小于0,进一步进行小分支处理。
输入数据
计算平均成绩ave
假 ave<0? 真 输出:数据错误
ave≥90? 真 输出:优等生
假
输出:加油!
结束
C语言程序设计-理论方法与实践(第2版)
含义 大于 大于等于
实例 ave>90 ave>=90
<
<= == !=
小于
小于等于 等于 不等于
ave<90
ave<=90 ave==90 ave!=90
C语言程序设计-理论方法与实践(第2版)
3.1.2关系表达式
2.关系表达式的值 • 关系表达式只有两个取值,或者是1,或者是0。 当关系表达式所表示的“关系”成立时,其值为1;否则, 其值为0。 例如: 示例程序中关系表达式,ave>=90 第一次执行程序时,变量ave的值为92,关系表达式 “ave>=90”成立,则其值为1; 第二次执行程序时,变量ave的值为81,关系表达式 “ave>=90”不成立,则其值为0。
C语言程序设计-理论方法与实践(第2版)
3.1.2关系表达式
4.关系运算的优先级 (1) 关系运算“>”、“>=”、“<”以及“<=”的优 先级相同,关系运算“==”和“!=”的优先级相同, 前面一组运算符的优先级高于后面一组运算符的优先 级。 (2)关系运算符的优先级低于算术运算的优先级。 (3)关系运算符的优先级高于赋值运算的优先级。 4.关系运算的结合性
C语言程序设计-理论方法与实践(第2版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if 语句
例 if(x>y) max=x; else max=y; printf(”max=%d”,max);
2.if/else
语句形式: if (表达式) 语句1
else
语句2
执行流程: 如果表达式值非0,执行语句1;
否则,执行语句2; 无论执行了哪一路分支之后,都执行if的下一条语句。
#include<stdio.h>
!的运算级别高于关系运算符和算术运算符,
注意: !的结合方向是从右向左。
&&和||的结合方向是从左向右,
(3)不能确定的情况下,添加括号保证运算次序。
尽量避免复杂烦琐的逻辑表达式。
例:a=10;b=20;c=30;
a=1 b=19
a=(--b<=a)||(a+b!=c);
a=? b=?
(4)参加逻辑运算的运算对象可以是0(“假”)或
gueifs(sg=ureasnsd=()=;data) /*以上p面rin得t到f("的猜种对子了产!生~_0~~3,27正67确的数整数字*为/ %d !\n", data); 2)e1l~se5之间的随机数: 首先p用rirnatnf(d"(猜)函错数了产!0生_0的,随正机确数数,字然为后%对d5!求\n余", data); (} rand()%5),产生0~4之间的整数,然后再加1,
m{ ain(例) .判断给定的某一年是否是闰年。
int year,leap=0;
分析pr:int如f("果\n请某输年入能年被份4(整y除yy而y)不:"能); 被100整除, sc或an者f(能"%被d"4,&0y0e整ar除); ,那么该年就是闰年,
/*否判断则该就年是是平否年是。闰年*/
if(year%4==0&&year%100!=0||year%400==0)
if(yealre%ap4==1=; 0&&year%100!=0||year%400==0)
if(leap)
/*leap=1,即该年是闰年*/
printf("%d年是闰年.\n",year);
elseBiblioteka /*leap=0,即该年是平年*/
printf("%d年是平年.\n",year);
}
例.制作简单的猜数字游戏。程序运行时 自动产生1~5之间的随机数,接着等待 键盘输入猜的数字。如果猜对了,显示 “猜对了”相关信息;否则,如果猜错了, 则显示“猜错了”相关信息。
#include <stdio.h>
#include <stdlib.h>
#inclu分de析<:tim如e.何h>产生1~5之间的随机数?
main()
1{)i随nt机da数ta产, g生u:ess; C语s言ra提nd供((usrnasnigdn()e函d数)tim,e配(N合UrLaLn)d);()函数可产生介于 0~3d2a7ta6=7之ran间d的()%随5机+1数; (函数均包含在stdlib.h中)。 srapnrdin((tuf(n"s请ig输ne入d要)ti猜m的e(N数U字LL(限));1-5 ):"); /*以s做c随an机f(数"%产d生"器, &的g种u子es,s)t;ime()函数包含在time.h中 */
即rand()%5+1就产生1~5之间的整数。
main()
{ long x; int ge,shi,qian,wan;
print例f(":p一le个a5s位e 数in,pu判t断th它e是5不b是its回n文u数m,be即r1:\2n3"2);1 scanf("是%回ld文",数&,x)个; 位与万位相同,十位与千位相同。
1.简单的if语句 形式:
例: main() { int a,b,max; printf(”\n 请输入两个数: ”); scanf(”%d%d”,&a,&b); max=a; if (max<b) max=b; printf(”max=%d”,max); }
if (表达式) 语句
执行过程:
如果表达式值非0,执行该语句, 然后执行if的下一个语句; 否则直接执行if的下一个语句。
任何非0的数值(“真”);但运算后的结果和
关系运算的结果一样,只能是逻辑值0和1。
(5) 在逻辑表达式的求解中,并不是所有的逻辑运
算符都被执行,只有在必须执行下一个逻辑运 算符才能求出表达式的解时,才执行该运算符。
例: int x=-1; 执行了++x||++x||++x 后,x的值是?
x=1
if 语句
例: int i=3,j=5; i*i+j*j>100;
运算对象为字符数据时,比较按其ASCII码进行。 例:‘a’>‘b’
(3)关系表达式的值可以作为整数值参与运算 例:int a=3,b=2,c=1,f; f=a>b>c;
(4)与数学表达式的区别
例:3<x<100 (5)注意区分“=”与“==”的差别
逻辑运算符与逻辑表达式
在C语言中有三个逻辑运算符
&& 逻辑与 两个操作对象同时为真时,表达式的值为真。 || 逻辑或 两个操作对象之一为真时,表达式的值为真。 ! 逻辑非 当操作对象的值为真,则表达式的值为假。
说明:
(1)&&和||是双目运算符,!是单目运算符
(2)&&和||的运算级别低于关系运算符,
例: 输入三个整数x、y、z, 把这三个数由小到大输出。
输入x,y,z
Y x>y N 交换x,y
Y x>z N 交换x,z
Y y>z N 交换y,z
输出x,y,x的值
#include <stdio.h> main() { int x,y,z,t;
printf(“Please input the x,y,z: ”); scanf(“%d%d%d”,&x,&y,&z); if (x>y) { t=x; x=y; y=t; } if (x>z) { t=x; x=z; z=t; } if (y>z) { t=y; y=z; z=t; } printf(“Small to big:%d%d%d\n”,x,y,z); }
选择结构
根据给定的条件是否满足, 决定从给定的条件选择其一。
分为: 二路分支 if …else…语句 多路分支 switch语句
关系运算符和关系表达式
关系运算符
> 大于 < 小于 = = 等于
>= 大于等于 <= 小于等于 ! = 不等于
说明:
(1) 六个关系运算符都是双目运算符;
(2) 由一个关系运算符连接两个对象形成的 表达式称为关系表达式,这两个运算对 象可以是算术表达式、字符表达式等。