第4章 选择结构
C语言程序设计第4章选择结构程序设计ppt课件
![C语言程序设计第4章选择结构程序设计ppt课件](https://img.taocdn.com/s3/m/e15a3ec5cd22bcd126fff705cc17552707225eab.png)
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语言-第4章 选择结构程序设计
![C语言-第4章 选择结构程序设计](https://img.taocdn.com/s3/m/c4e7625627284b73f24250fc.png)
第4章选择结构程序设计注:选择结构的考点,最重要的有两个,一个是逻辑表达式的值,另一个是分支界限。
弄明白这两个知识点,就能够以不变应万变了。
一、单项选择题1. 在C语言中,能代表逻辑值"真"的是。
A) true B)大于0的数C)非0整数D)非0的数2. 表示关系x<=y<=z的c语言表达式为。
A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z)3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是。
A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=04、判断char型变量c1是否为大写字母的表达式为。
A)’A’<=c1<=’Z’ B)(c1>=’A’) & (c1<=’Z’)C)(’A’<=c1)AND (‘Z’>=c1) D)(c1>=’A’)&& (c1<=’’Z’)5. 有定义char c; c=getchar(); 判断字符变量c为大写字母的正确表达式为。
A) ‘A’=<c<=’Z’ B)c>=‘A’&& c<=’Z C)A=<c<=Z D) c>=A && c<=Z6. 设有语句“int a=4;b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是。
A)1B)0 C)-1 D)出错7. 设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是。
第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案
![第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案](https://img.taocdn.com/s3/m/c3cca106eff9aef8941e06fe.png)
【注意】
switch后跟的"表达式"允许为任何类型的表达式,其 后跟的"表达式"允许为任何类型的表达式, 后跟的 数据类型和case后面的常量表达式的数据类型一致. 后面的常量表达式的数据类型一致. 数据类型和 后面的常量表达式的数据类型一致 每一个case后的各常量表达式的值不允许重复,否则 后的各常量表达式的值不允许重复, 每一个 后的各常量表达式的值不允许重复 会报错. 会报错. 每一个case后允许有多条语句 可以不用花括号" 后允许有多条语句, 每一个case后允许有多条语句,可以不用花括号"{}" 括起来. 括起来. case和default子句出现的先后顺序可以变动,不会影 子句出现的先后顺序可以变动, 和 子句出现的先后顺序可以变动 响程序的执行结果. 子句也可以省略不用. 响程序的执行结果.default子句也可以省略不用. 子句也可以省略不用 多个case可以共用一组执行语句.例如: 可以共用一组执行语句. 多个 可以共用一组执行语句 例如: … case 'A': case 'B': case 'C':printf("Pass\n");break;
3<5 || ++b
【例4-2】测试短路现象 】
#include <stdio.h> void main() { int a,b; a=b=0; a || ++b; printf("%d,%d\n",a,b); a=b=1; a || ++b; printf("%d,%d\n",a,b); a=b=0; a && ++b; printf("%d,%d\n",a,b); a=b=1; a && ++b; printf("%d,%d\n",a,b); }
C语言 第4章 选择结构程序设计
![C语言 第4章 选择结构程序设计](https://img.taocdn.com/s3/m/6bd8b51859eef8c75fbfb3c5.png)
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 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); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句
C程序设计(第五版)-第4章选择结构程序设计课后习题答案
![C程序设计(第五版)-第4章选择结构程序设计课后习题答案](https://img.taocdn.com/s3/m/7394f6004531b90d6c85ec3a87c24028915f85f1.png)
C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。
其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。
在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。
C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。
如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。
⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。
常见的关系运算符包括:<、<=、>、>=、==、!=等种类。
其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。
⽽前4种⾼于后2种。
例如, >优先于==。
⽽>与<优先级相同。
并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。
逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。
表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。
⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。
常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。
第4章 选择结构
![第4章 选择结构](https://img.taocdn.com/s3/m/c5dd1d0ba76e58fafab0033f.png)
第4章选择结构1、以下选项中,当x为大于1的奇数时,值为0的表达式是A) x%2==0B) x/2C) x%2!=0D) x%2==1参考答案:A【解析】算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。2、当变量c的值不为2、4、6时,值为"真"的表达式是A) (c>=2 && c<=6)&&(c%2!=1)B) (c==2)||(c==4)||(c==6)C) (c>=2 && c<=6)&& !(c%2)D) (c>=2 && c<=6) || (c!=3) || (c!=5)参考答案:D【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真。所以只有选项D满足要求。3、以下叙述中正确的是A) 在C语言中,逻辑真值和假值分别对应1和0B) 关系运算符两边的运算对象可以是C语言中任意合法的表达式C) 对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误D) 分支结构是根据算术表达式的结果来判断流程走向的参考答案:B【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x==y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。
因此B选项正确。
4、下列关系表达式中,结果为"假"的是A) 3 <= 4B) (3 < 4) == 1C) (3 + 4) > 6D) (3 != 4) > 2参考答案:D【解析】B选项中,关系表达式(3<4)==1即1==1,结果为真; C选项中,(3+4)>6即7>6,结果为真;A选项中,3<=4结果为真。
C语言第4章选择结构
![C语言第4章选择结构](https://img.taocdn.com/s3/m/0d736f0c59eef8c75fbfb324.png)
第四章选择结构选择:1.以下关于运算符优先级的描述中,正确的是()。
A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算B)&&(逻辑与)>算术运算>关系运算>赋值运算C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)2.逻辑运算符的运算对象的数据类型()。
A)只能是0或1 B)只能是.T.或.F.C)只能是整型或字符型D)任何类型的数据3.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是()。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)4.判断字符型变量ch为数字的表达式是( ) 。
A) 0<=ch<=9 B)(ch>=0)&&(ch<=9)C)'0'<=ch<='9' D)(ch>='0')&&(ch<='9')5.若有以下函数关系x<0 → y=2xx>0 → y=xx=0 → y=x+1下面程序段能正确表示以上关系的是()。
高树芳C语言程序设计--第四章
![高树芳C语言程序设计--第四章](https://img.taocdn.com/s3/m/443e2580680203d8ce2f24e7.png)
4.5 switch语句
案例4-10 计算成绩级别 案例4-11 根据月份求季度 案例4-12 输入算式做四则运算
38
4.5 switch语句
案例4-10 [案例任务]
计算成绩级别
输入百分制成绩,输出成绩级别A、B、C、D、E。 90~100分以上为A,80~89分为B,70~79为C, 60~69为D,0~59为E,其他成绩则显示“成绩 错误!”。
26
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
27
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
[案例任务]
对于如下函数: 用scanf函数输入x的值,输出y的值。 运行结果如下(输入的数据是9)
[解决方案]使用if „ else if„else语句。
28
4.4
分析下列程序的运行结果,掌握“与”、 “或”、“非”三个逻辑运算符及其优先级。
程序代码
11
4.3 逻辑运算符和逻辑表达式
相关知识: 1.逻辑运算符及其优先级 2. 逻辑表达式 3. 逻辑表达式的优先级与结合性
12
4.3 逻辑运算符和逻辑表达式
案例4-4 [案例任务]
逻辑运算中的“短路”现象
分析下列程序的运行结果,掌握多个运算对象 进行“与”、“或”情况下的“短路”现象。
22
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
23
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
[案例任务]
由键盘输入两个整数,输出它们中的最大 者。运行结果如下:
第4章(405)
![第4章(405)](https://img.taocdn.com/s3/m/2c55f1372e3f5727a5e962da.png)
/*语句3*/
若x为6则条件1不满足,执行语句3,输出“no”;若x为
5则条件1满足,条件2不满足,执行语句2,输出“no”;若x
为9则条件1、条件2均满足,执行语句1,输出“yes”。
22
2. 在else语句中嵌套分支结构
1) 语法形式
if(表达式1) 语句1
else if(表达式2) 语句2
else 语句3
为了控制计算机各操作的执行次序,程序设计语言中引 入了控制语句。选择结构是结构化程序设计的三种结构之一。 C语言提供了二分支和多分支选择结构,本章将进行详细介 绍。
2
4.1 语句与复合语句
1. 语句
C语言规定,在表达式的后面加上一个分号(;)即成为
语句。例如:
x=1; scanf("%d",&y); y++;
赋值语句 输入语句
自增运算语句
3
在C语言中除了结构控制行之外,其他的内容均由语句
组成,即所有的语句均由一个分号(;)结束。有时为了程序
的需要,我们会遇到只有一个分号而没有表达式的情形,这
在C语言中也是合法的,称为空语句,例如:
main()
{
;
/*空语句*/
}
在第1章的C语言特点中提到,C语言书写灵活,允许一
13
2) 执行过程 首先计算表达式的值,然后根据其真假来决定程序的走 向。若表达式为真(值为非零)则执行语句1,若为假(值为零) 则执行语句2。退出分支结构后程序继续执行if-else结构后 面的语句,如图4.2所示。
14
图4.2 if-else结构流程图
15
3) 举例
if(a>b) b++; else a++;
第4章 选择结构与循环结构
![第4章 选择结构与循环结构](https://img.taocdn.com/s3/m/5aee99db3c1ec5da51e27077.png)
4.1 条件表达式
>>> if 666: print(9)
9 >>> a = [3, 2, 1] >>> if a:
print(a)
[3, 2, 1]
#使用整数作为条件表达式 #使用列表作为条件表达式
3
4.1 条件表达式
>>> a = [] >>> if a:
print(a) else:
print('empty')
#先把x转换成实数,然后追加到列表numbers尾部 numbers.append(float(x)) except: print('不是合法成绩') #下面的循环用来限制用户只能输入任意大小写的“yes”或者“no” while True: flag = input('继续输入吗?(yes/no)').lower() if flag not in ('yes', 'no'):
while 条件表达式: 循环体
[else: else子句代码块]
和
for 取值 in 序列或迭代对象: 循环体
[else: else子句代码块]
21
4.3.1 for循环与while循环
• 例4-5 编写程序,输出1~100之间能被7整除但不能同时被5整除的所有整数。
for i in range(1, 101): if i%7==0 and i%5!=0: print(i)
print('鸡:{0},兔:{1}'.format(int(jitu-tu), int(tu))) else:
print('数据不正确,无解')
C语言全国计算机二级等级考试教程第四章选择结构(章节带习题)
![C语言全国计算机二级等级考试教程第四章选择结构(章节带习题)](https://img.taocdn.com/s3/m/6c8bfa7627284b73f24250a8.png)
2
a a
2 1
b 1
b
1
4.2 if语句和用if语句构成的选择结构
4.2.1 if语句
C语言的if语言有两种形式: if(表达式) 语句 关键字 不满足 单分支if语句 不含else子句 关键字 if(表达式) 语句1 else 语句2 不满足 双分支if语句 含else子句
表达式 满足 语句
表达式 满足 语句1
表达式2
表达式1
真
假
表达式3
真
假
表达式4
真
语句1 语句2 语句3
假
语句n
真
语句4
4.2 if语句和用if语句构成的选择结构
4.2.2 嵌套的if语句
例4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上 的等级为A,60分以下的等级为E,其余每10分为一个等级。 Enter g:72<CR> 成绩(g)大于等于90分以上(g>=90):A g=72:C 成绩(g)大于等于80分以上(g>=80):B 程序的意思为: 成绩(g)大于等于70分以上(g>=70):C Enter g:55<CR> 成绩(g)大于等于60分以上(g>=60):D g=55:E 成绩(g)不及格(g<60):E #include <stdio.h> 假 g>=90 main() {int g; 真 g>=80 假 printf("Enter g:");scanf("%d",&g) 真 printf("g=%d:",g); g>=70 假 if(g>=90) printf("A\n"); 真 假 g>=60 else if(g>=80) printf("B\n"); else if(g>=70) printf("C\n"); 真 else if(g>=60) printf("D\n"); 输出A 输出B 输出C 输出D 输出E else printf("E\n"); }
C语言知识点:第4章 选择结构
![C语言知识点:第4章 选择结构](https://img.taocdn.com/s3/m/54d29e48fe4733687e21aad0.png)
7. 分支结构程序设计
作用:根据条件控制程序流向。 条件的组成:各种类型的常量、变量、表达式(常用:关系/逻辑表达式)
8. 单分支 if 语句
1、如果令狐冲的 C 语言考试成绩大于 90 分,师父就奖励他一本武功秘笈 使用 if 条件结构可以解决 if 条件结构是根据条件判断之后再做处理 基本的 if 条件结构 if ( 条件 ) { //语句 ~2~
C 语言程序设计知识点
主讲教师:杨剑
第 4 章:选择结构
1. 本章目标
熟练使用多重 if 结构 熟练使用嵌套 if 结构 熟练使用 switch 结构 理解条件运算符的用法
2. 结构化程序设计的核心思想
采用顺序、选择和循环三种基本结构作为程序设计的基本单元 只有一个入口; 只有一个出口; 采用“自顶向下、逐步求精”和模块化的方法进行结构化程序设计
C 语言程序设计知识点
主讲教师:杨剑
case 3: printf ("出任峨嵋掌门"); default: printf ("被逐出师门"); } 如果需要每个 case 执行完后跳出, 在每个 case 后不要忘记写 break; int mingCi = 1; switch (mingCi){ case 1: printf ("出任武林盟主"); case 2: printf ("出任武当掌门"); case 2: printf ("出任峨嵋掌门"); default: printf ("被逐出师门"); } case 后面的常量必须各不相同
C 语言程序设计知识点
主讲教师:杨剑
D. y=sqrt(x>=0?x:-x); 答案:B
c语言 第四章 选择结构课件
![c语言 第四章 选择结构课件](https://img.taocdn.com/s3/m/b6dc7ddaff00bed5b9f31dc2.png)
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
第四章 选择(分支)结构程序设计
![第四章 选择(分支)结构程序设计](https://img.taocdn.com/s3/m/482cf03fd15abe23492f4d96.png)
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
915145-C语言程序设计-第4章 选择结构程序设计
![915145-C语言程序设计-第4章 选择结构程序设计](https://img.taocdn.com/s3/m/914d8472a45177232f60a287.png)
老年人
票价分类 两日联票
65周岁及以上
选择两日联票
• 常见错误
– 条件表示时,“==” 运算符误写作“=”运算符 – 数值0、1、…、9与数字字符’0’、’1’、…、’9’的混淆
4.2.2 逻辑运算
• • • 逻辑运算符
– 逻辑非(!)、逻辑与(&&)和逻辑或(||)
• 逻辑表达式求值方法
– 在逻辑表达式的求值过程中,按其操作数从左至右的 计算顺序,当某个操作数的值可以确定整个逻辑表达 式的值时,其余的操作数不再计算
4.2.3 短路求值
例如:假如有变量定义为 int x,y,z; 求下列表达式执行后,表达式的值和变量的值
序号
① ② ③ ④ ⑤ ⑥
变量初始值
x=y=z=1; x=2,y=0,z=1; x=y=z=1; x=0,y=1,z=2; x=0,y=1,z=2; x=0,y=1,z=2;
单分支 双分支 多分支 综合决策
– 选择控制结构
• 即根据条件进行判断选择执行相应操作的 问题,也称为分支控制结构 • 一般分为单分支、双分支和多分支三种结 构
• 实现的关键
– 判断条件的合法描述 – 选择操作流程的合理设计
4.1 门票价格问题
表4-1 上海迪士尼主题乐园的门票价格表
平日票
370
4.2 条件的表示
微视频:短路求值示例
4.3 单分支结构
• 问题
– 迪士尼门票规则
• 老年人:65周岁以上 平日票:280元,高峰日票:375元
分析 – 需要对条件(年龄大于等于65)进行判断
如果为真,则享受优惠票价 平日票:280元,高峰日票:375元
计算机二级C语言第4章 选择结构程序设计
![计算机二级C语言第4章 选择结构程序设计](https://img.taocdn.com/s3/m/a728f1c09a89680203d8ce2f0066f5335a816789.png)
①应当注意if与else的配对关系。原则是else总是与它上面最近的、未
配对的if配对。
②如果if与else的数目不一样,为了避免在if与else配对时出错,建议
读者使用“{}”来限定了内嵌if语句的范围。如下形式的嵌套语句:
if(表达式1)
{if(表达式2)语句1} /*内嵌if*/
这时形成了阶梯形的嵌套if语句,此形式的语句可以用以下语句形式
表示,看起来层次比较分明。
4.4.2 if语句的嵌套
if(表达式1)
…
语句1
…
else if(表达式2)
else if(表达式n-1)
语句2
语句n-1
else if(表达式3)
else
语句3
语句n
嵌套选择结构主要用于处理多条件的问题。设计嵌套选择结构时,应
②只在else子句中嵌套if语句,形式如下:
if(表达式1)
语句1
else
if(表达式2) 语句2
else 语句3
③不断在else子句中嵌套if语句就形成多层嵌套,形式如下:
if(表达式1) 语句3
语句1
…
else
if(表达式n)
if(表达式2) 语句n
语句2
else(表达式n)
else(表达式3) 语句n
case常量表达式2: 语句2
…
case常量表达式n: 语句n
default:
语句n+1
}
【说明】
①switch后面的表达式必须用圆括号括起来,其取值必须是整型或字
符型。switch语句后面用花括号“{}”括起来的部分称为switch语句体,
第4章 C语言选择结构程序设计
![第4章 C语言选择结构程序设计](https://img.taocdn.com/s3/m/d12654343968011ca3009118.png)
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
C语言程序设计:第4章 顺序结构与选择结构
![C语言程序设计:第4章 顺序结构与选择结构](https://img.taocdn.com/s3/m/f7db95e81eb91a37f0115c18.png)
printf("max: %d\n",b); return 0; }
#include <stdio.h> int main(void) {
int a ,b,max; printf("请输入a和b的值\n"); scanf("%d%d",&a,&b); max = a; if(max < b)
7
顺序结构:复合语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
#include <stdio.h> int main(void) {
int a = 10; int b = 11;
注意: 1>复合语句不以分号;作为结束符, 即最后的}后面不加分号。 2>在复合语句中可以定义变量,但
if(score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}
19
选择结构: if...else if语句
成绩等级划分: 输入自己的成绩,根据成绩的范围输出成绩等级。
成绩范围
等级
90--100
A
80--89
B
70--79
C
60--69
D
0--59
3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字 母,则把它变为大写字母;若是其他字符则不变
4.输入数字1-7,并输出显示对应的星期 (输入的数字 1 ,输出星期一,以此类推)
VB第4章 选择结构
![VB第4章 选择结构](https://img.taocdn.com/s3/m/c711d1c1a1c7aa00b52acb78.png)
教案讲稿第四章选择结构程序设计[旧课复习]:复习内容:1.已学过的几个常用的控件2.控件中输入输出语句的使用复习目的:让学生掌握基本控件的使用复习时长:大约10分钟[新课导入]:导入方式:以日常生活中的实例让学生理解什么是选择结构导入目的:增强学生的理解能力导入时长:大约5分钟[新课讲授]:重点:各种分支结构语句的使用难点:选择结构的嵌套方法:运用多媒体辅助教学,采用讲授法和案例教学法4.1算法介绍4.1.1算法介绍一、算法概述所谓算法,是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每个指令表示一个或多个操作。
算法有以下特征:(1)有穷性(2)确定性(3)可行性(4)输入(5)输出4.1.2算法的表示常用的表示算法的方法有:自然语言、伪代码、流程图,本章重点介绍用流程图表示算法。
流程图用一些图框、流程线以及文字说明来表示算法。
用图来表示算法,直观、形象、容易理解。
包括:传统流程图、结构化流程图。
因传统流程图中流程线的使用无限制可能导致流程图毫无规律。
结构化流程图使用3中基本结构,即:顺序结构、选择结构和循环结构(如图4-1所示),从而大大提高流程图的规律性。
图4-1(a)顺序结构流程图图4-1(b)选择结构流程图图4-1(c)循环结构流程图4.2条件语句VB中选择结构通过条件语句来完成,包括:单分支、双分支和多分支等。
4.2.1单分支结构语句单分支结构语句包括单行结构和块结构。
1.“单行结构”格式为:If <条件表达式> Then <语句序列>2. “块结构”格式为:If <条件表达式> Then<语句序列>说明:(1)“条件表达式”可以是关系表达式、布尔表达式或者数值表达式。
如果是数值表达式,则非0值为真,0为假。
(2)当条件表达式的值为真时执行语句序列。
【例4-1】已知两个数x和y,比较它们的大小,使得x>y。
分析:对任意的两个数x、y,其中x若为大的数,直接输出即可,若 y为大的数,则交换两数即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图4-1 if语句程序流程图
图4.2 if-else语句执行过程
4.2.2 嵌套的if语句 在if语句中又包含一个或多个if语句称为if语句的嵌套。 以下if~else语句嵌套的三种形式: (1)在if子句中嵌套具有else子句的if语句,如图 4.4(a)所示 (2)在if子句中嵌套不含else子句的if语句,如图 4.4(b)所示 (3)在else子句中嵌套if语句,如图4.4(c)所示。 注:嵌套的if语句可以是if语句和if~else语句形式, 这就会出现多个if和多个else重叠的情况。此时要 特别注意if和else的配对问题。if和else配对规则 为:else总是与它前一个最近的if配对。
说明: (1)条件表达式不能取代一般的if语句,仅当if语句 中内嵌的语句为赋值语句(且两个分支都给同一 变量赋值)时才能代替if语句。 (2)条件表达式的优先级别仅高于赋值运算符,而 低于前面介绍过的所有运算符。 (3)条件运算符的结合方向为“自右至左”。
4.4 switch语句以及用switch语句和break语 句构成的选择结构
4.4.2 switch执行过程 • switch语句的执行流程是:首先计算switch后 面圆括号中表达式的值,然后用其结果依次与各 个case的常量表达式相比较,若圆括号中表达式 的值与某个case后面的常量表达式的值相等,就 执行此case后面的语句,执行后遇break语句就退 出switch语句;若圆括号中表达式的值与所有 case后面的常量表达式的值都不相同,则执行 default后面的语句n+1,执行后退出switch语句。
说明: (1)各case常量表达式必须取不同的值,以保证分支选 择的唯一性。 (2)default不是必须的,且总是放在最后,其后不需要 break语句。若没有这部分,当switch后面圆括号中表 达式的值与所有case后面的常量表达式的值都不相等 时,则不执行任何一个分支直接退出switch语句。 (3)多个case可以共用一条执行语句。 (4)在switch语句中,只有最后一个分支(default)中 的break语句的存在于否不影响执行结果。因为没有这 个break语句,执行该分支的所有语句后也会自动退出 switch语句。而其余各分支中的break语句有与无时的 流程是完全不同的。
Байду номын сангаас
4.1.3 逻辑运算符和逻辑表达式 1.C语言包括三种逻辑运算符: 逻辑与&&:a&&b;逻辑或||:a||b;逻辑非!:!a 关于逻辑运算符的说明: (1)逻辑运算符的优先次序如下:!(高)→&&(中) →||(低) (2)逻辑运算符具有自左向右的结合性 (3)优先级次序:(由高到低) !(逻辑非)→算术运算→关系运算→&&(逻辑与) →||(逻辑或)→赋值运算
2.逻辑表达式和逻辑表达式的值 逻辑表达式的值应该是一个逻辑值“真”或“假”, 即为“1”或“0”。 表4.3为逻辑运算的运算规则表
a 非0 非0 0 0 b 非0 0 非0 0 !a 0 0 1 1 !b 0 1 0 1 a && b 1 0 0 0 a || b 1 1 1 0
关于逻辑运算的几点说明: (1)逻辑运算用0和非0判定它们的 “真”或“假”。 (2)在逻辑表达式求解中,并不是所有逻辑运算符都 需执行,有时只需执行一部分就可得出逻辑表达式 的最后结果。例如x&&y&&z,若x为假,则立即得出 整个表达式为假,跳过后面的运算;再如a||b||c,若 a为真,则整个表达式的值为真,跳过后面的运算。 (3)逻辑表达式的运用场合与关系表达式完全相同, 也是用于流程控制语句中的条件描述。 例:求下列表达式的值:8>=5&&2||6<5-!0 优先级:非(!)>算术运算符>关系运算符>逻辑运 算符(&&、||)>赋值运算符
图4.4 嵌套的if语句结构
if(表达式1) if(表达式2) 语句1; else 语句2; else 语句3; else 语句2; (c) 语句1; else if(表达式3) 语句3; else 语句4; if(表达式1) if(表达式1) if(表达式2) if(表达式2) 语句1; else 语句2;
4.5.1 语句标号(任意合法的标识符) 当在标识符后面加一个冒号,该标识符就成为一个 语句标号,常用作goto语句的转向目标。如:goto state; 4.5.2 goto语句(尽量避免使用) goto语句称为无条件转向语句,goto语句的一般形式为: goto 语句标号 goto语句的作用是把程序的执行转向语句标号所在的位置, 这个语句标号必须与此goto语句同在一个函数内。 运算符优先级总结: 逻辑非(!)>算术运算符>关系运算符(>=,<=,>,<) >关系运算符(==,!=)>逻辑运算符(&&、||)>条件运算 符>赋值运算符(+=,-=,*=,/=,%=,=)
第4章 选择结构
本章要点:
4.1 关系运算和逻辑运算 4.2 if语句和用if语句构成的选择结构 4.3 条件表达式构成的选择结构 4.4 switch语句以及用switch语句和break语句 构成的选择结构 4.5 语句标号和goto语句
4.1 关系运算和逻辑运算
4.1.1 C语言中的逻辑值 C语言中,参与逻辑运算的量为非零值或整数 零,非零值和整数零分别表示运算量为“真”或 “假”。逻辑运算的结果值,即逻辑表达式的值 应该是一个逻辑值“真”或“假”。C语言编译 系统在给出逻辑运算结果时,以数值1代表“真”, 以0代表“假”,但在判断一个量是否为“真”时, 以0代表“假”,以非0代表“真”。
4.1.2 关系运算符和关系表达式(比较运算)
表4.1 C语言中的6种关系运算符 运算符 < <= > >= ==(连续两个=) != 名称 小于 小于或等于 大于 大于或等于 等于 不等于 优先次序
优先级相同(高)
优先级相同(低)
优先级关系:算术运算符(高)→关系运算符(中)→赋值运算符(低)
2.关系表达式及关系表达式的值 • 关系表达式:由关系运算符构成的表达式,主要 用于选择结构中的条件判断。例如,a>=b,a>= =c等。在C语言中,当关系表达式成立时,其结 果值为真(1),否则,其值为假(0)。 若a=10,b=6,表达式a>=b为“真”,其值为1。 例:试求x=5>3>1的值。 分析:x=5>3>1相当于:x=(5>3)>1=1>1=0。 注:注意区别表示“等于”关系的运算符“= =”和 表示“赋值运算”的“=”。
• 4.3 条件表达式构成的选择结构 • 1.条件运算符的构成:由两个符号“?”和“:”组 成,要求有3个操作对象,称三目(元)运算符, 它是C语言中唯一的三目运算符。 • 2.一般形式:表达式1?表达式2:表达式3 • 3.执行过程:先求解表达式1,若值为非0,表示 条件为真,则求解表达式2,此时表达式2的值就 作为整个条件表达式的值;若表达式1的值为0, 表示条件为假,则求解表达式3,表达式3的值就 是整个条件表达式的值。
4.2 if语句和用if语句构成的选择结构 4.2.1 if语句(条件分支语句) 流程控制方式:根据给定的条件进行判定,由判定的结果 (真或假)决定执行给出的两种操作之一。C语言中提供 两种形式的if语句:不含else的if语句、含else字句的if语句。 1.不含else的if语句 (1)语句形式:if(表达式) 语句1 (2)执行过程:首先计算if后面圆括号中的表达式的值,若 为非0值,则执行语句1;否则不执行语句1。 2.if-else语句 (1)语法形式: if(表达式) 语句1;else 语句2; 语句1称为if子句,语句2称为else子句, else必须与if配对。 (2)执行过程:首先计算圆括号内的表达式值,若为非0值, 则执行语句1,;否则执行语句2。
4.4.1 switch语句(多分支结构的条件选择语句) 使用switch语句直接处理多个分支,其一般形式为: switch(表达式){ case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; …… case 常量表达式n:语句n; break; default:语句n+1;break;} 注:(1)swich的表达式通常是一个整型或字符型变量,其 结果为相应的整数或字符型。(2)在关键字case和常量 表达式之间一定要有空格。
图4.6 switch语句的执行过程
Switch
表达式
Case 常量表达式1 Case 常量表达式2 Case 常量表达式n Default
语句1
语句2
语句n
语句n+1
退出switch执行下一个语句
例4.6(P45)用Switch语句(含break语句)改写例4.5。 #include<stdio.h> main(){ int g;//g中存放学生的成绩 printf("Enter a mark:"); scanf("%d",&g); printf("g=%d:",g); switch(g/10){ case 10:case 9:printf("A\n");break; case 8:printf("B\n");break; case 7:printf("C\n");break; case 6:printf("D\n");break; default:printf("E\n");} }
(a)
(b)
例如:从键盘输入两个整数,试比较它们的大小。 #include<stdio.h> main(){int a,b; printf("Please enter two integers:\n"); scanf("%d%d",&a,&b); if(a!=b) if(a>b) printf("%d>%d\n",a,b); else printf("%d<%d\n",a,b); else printf("%d= =%d\n",a,b); } 程序运行结果为: 输入:3,57<回车>;输出:3<57; 输入:3,-6<回车>;输出:3>-6。 输入:8,8<回车>;输出:8==8。