资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
研究式学习C程序设计(第二章),1,选择结构,第二章,研究式学习C程序设计(第二章),2,运算符 表达式 顺序结构程序,上讲主要内容,研究式学习C程序设计(第二章),3,本章主要内容,什么是选择结构? 关系表达式、逻辑表达式、条件表达式 选择语句 语法练习 编程练习,研究式学习C程序设计(第二章),4,选择结构是通过对条件(或表达式)的判断来选择执行不同的程序语句。,选择结构,C语言中是用if语句或switch语句来构成选择结构的。if语句一般适用于两路选择,也可以通过嵌套形式来实现多路选择。switch语句能方便地实现多路选择。,研究式学习C程序设计(第二章),5,问题:从键盘输入三个不同的整数,分别存放到变量x、y、z中,然后通过判断输出三个数中的最大数,引例,选出三个数中最大数的算法描述如下: 第一步:算法开始; 第二步:输入原始数据x、y、z; 第三步:比较x与y的值,将大数放到max中; 第四步:再用x、y中的大数max与z比较,若z大于max, 则将max的值置为z,否则max的值不变; 第五步:输出max的值,即三个数中的最大数; 第六步:算法结束。,程序,研究式学习C程序设计(第二章),6,程序测试是为了证明程序有错误,而程序调试的目的是为了进一步找出错误的位置并改正之。调试过程通常包括三个步骤:发现错误、分离错误、校正错误,这一过程将贯穿于从编程阶段到运行阶段。程序的错误从其表现形式上可分为:语法错误、逻辑错误。 自学内容见教材C实验指导与习题中的相关章节,程序测试及调试(自学),研究式学习C程序设计(第二章),7,关系运算符: 、 =、 =、 != 结合性为:从左至右;优先级为: = = != 优先级相同(高) 优先级相同(低) 关系表达式的值按比较结果分为逻辑真和逻辑假。若关系表达式成立,则该表达式的值为“真”,用整数“1”表示;若关系表达式不成立,则该表达式的值为“假”,用整数“0”表示,因为C语言中没有逻辑型数据,所以用整型变量来存放关系运算的结果,关系运算符,研究式学习C程序设计(第二章),8,关系表达式是用关系运算符和园括号将运算对象连接起来的式子。,关系表达式,例2_1 设a=1,b=2,c=3,判断出下列关系表达式的值。 ab+c 相当于:1(2+3),关系表达式的值为假(0) a+b!=c 相当于: (1+2)!=3, 关系表达式的值为假(0) a=bbc 相当于:(12)3,关系表达式的值为假(0),例2_2 设a=4,b=f,判断出下列关系表达式的值。 Ab 相当于:4f或52102,表达式的值为假 F=b 相当于:70=102,关系表达式的值为假 注意:进行相等比较时一定要用双等号“=”,因为C语言中的单个等号是赋值运算符。,研究式学习C程序设计(第二章),9,逻辑运算符有三种: ! 非(单目)、& 与(双目)、| 或(双目) 优先次序: 高 低 结合性: 从右至左 从左至右 从左至右 运算 规则:,逻辑运算符,研究式学习C程序设计(第二章),10,逻辑表达式是用逻辑运算符和园括号将运算对象连接起来的式子。,逻辑表达式,逻辑表达式的值是逻辑量“真”(1)或“假”(0),逻辑运算符两侧的运算对象可以是0(假)或任何非0(真)数值,例2_3 设a=1,b=a,c=3.0,d=0,e=3,ch=A,判断出下列逻辑表达式的值: !(c-b) 值为0 a=a & ch=A & b=0 & e3-!b 值为1,研究式学习C程序设计(第二章),11,逻辑表达式应用,例2_4 写出下面程序的运行结果。 #include “stdio.h” main() int m1,m2,n=1; m1=(13) ,C语言中,在逻辑表达式的求解过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时才执行该逻辑运算。,程序运行结果为: m1=0 m2=1 n=1,C语言中,0为假,非0为真,研究式学习C程序设计(第二章),12,条件表达式,条件表达式:由条件运算符?和:把多个表达式连接起 来的式子,如: e1 ?e2 :e3 其中:e1、e2、e3可以是变量或表达式 运算规则是:若e1的值为真(非0值),则表达式的 结果值取e2;否则e1的值为假(0值), 则表达式的结果值取e3。 实例:设: a=2,b=4,c=6,求x和y的值。 x=aa?c:(b!=4?4:8) ; y的值为6,研究式学习C程序设计(第二章),13,简单选择结构(if语句),语句形式:if(表达式) 语句;,执行过程 :若表达式的值为真(非0),则执行输出语句;若表达式的值为假(为0),则跳过输出语句。,表达式的值为逻辑值,后继,读程序 #include “stdio.h“ main() float sx,yw,average; scanf(“%f,%f“, ,输入:96,91 结果为:?,输入:85,91 结果为:?,研究式学习C程序设计(第二章),14,简单选择结构举例,例2_7 从键盘上任意输入三个整数a,b,c,并按从大到小的顺序显示出来。 该算法假定:输入时a,b,c三个变量中的数是无序的,通过程序处理后,a中放三个数中的最大值,b中放三个数中的次大值,c中放三个数中的最小值。,程序,研究式学习C程序设计(第二章),15,两路选择结构(if语句),语句形式:if(表达式) 语句1;else 语句2;,执行过程 :若表达式的值为真,则执行输出 x 语句;若表达式的值为假,则执行输出 y 语句。,表达式的值为逻辑值,后继,读程序 #include ”stdio.h” main() int exp; char ch; ch=getchar(); exp= ch=a ,输入:9 结果为:?,研究式学习C程序设计(第二章),16,两路选择结构举例,例2_9 从键盘上输入年号,判断这一年是否为闰年,若是闰年则输出“Y”,否则输出“N”。 闰年的判断依据是:若某年号能被4整除但不能被100整除,则这一年是闰年;或者这一年能被400整除也是闰年。 判断闰年的逻辑表达式为: year%4=0 & year%100!=0) | year%400=0,程序 main() int year,p; scanf(“%d“, ,研究式学习C程序设计(第二章),17,多路选择结构(if语句),语句形式: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else 语句 n+1;,注意:整个if语句中只有一个分支被执行。,执行过程 :依次计算各表达式的值,哪个表达式的值为真,则执行相应的语句,然后执行if的后继语句。当所有表达式的值均为假时,执行else后的语句。,读程序 main() char c; c=getchar(); if(c=a ,研究式学习C程序设计(第二章),18,if 语句嵌套,if语句的嵌套:即if的内嵌语句还可以是一个if语句,读程序 int a=1,b=3,c=5,d=4; if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x=3; else x=6; else x=7;,当if 语句嵌套使用时,C语言规定,else总是与它上面最近的if配对。,研究式学习C程序设计(第二章),19,switch语句,语句形式:,执行过程 :先计算switch语句中表达式的值,再依次与1到n个常量表达式的值比较,当表达式的值与某个case后的常量表达式的值相等时,则执行该case后的语句,然后执行break语句跳出switch结构。如果所有常量表达式的值都不等于switch中表达式的值,则执行default后的语句。,研究式学习C程序设计(第二章),20,switch语句举例,例2_11 从键盘上输入一个学生的总平均成绩(大于0且小于100),按分数段评定出相应的等级AE。如果输入的成绩小于等于0或大于等于100,则输出出错信息。 说明:表达式(int)(score/10.0)的功能是把输入的总平均成绩转换成一个在区间0,9之间的整数,以便与case后的常量表达式进行比较,如总平均成绩为95分时转换成整数9,总平均成绩为69分时转换成整数6,总平均成绩为40分时转换成整数4。,读程序 #include “stdio.h“ main() int x=1,y=0,a=0,b=0; switch( x ) case 1: switch( y ) case 1: a+; break; case 0: b+; case 2: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“n a=%d, b=%d“, a, b); ,程序,没有break,将继续往下执行,研究式学习C程序设计(第二章),21,语法练习,2函数y=f(x),当x0时y=1,当x=0时y=0,当x0) y=1; else y=0; printf(“x=%f, y=%dn“,x,y);,程序,研究式学习C程序设计(第二章),22,语法练习,4修改下面程序段使其成为一个完整的程序,并写出程序的运行结果。 a=2;b=7;c=5; switch(a0)case 1:switch(b10) case 1:printf(“);break; case 0:printf(“!“);break; case 0:switch(c=5) case 0:printf(“*“);break; case 1:printf(“#“);break; default:printf(“%“);break; default:printf(“,程序,研究式学习C程序设计(第二章),23,编程练习,3求一元二次方程 ax2+bx+c=0 的解。 解有以下几种可能: a=0,不是二次方程。 b2-4ac=0,有两个相等实根。 b2-4ac0,有两个不等实根。 b2-4ac0,有两个共轭复根。,程序,研究式学习C程序设计(第二章),24,习题(单选题),1设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 。 A)x A)9,9,9 B)8,8,10 C)9,10,9 D)1,11,10,研究式学习C程序设计(第二章),25,习题(填空题),1以下程序执行后的输出结果是 。 main() int x=10,y=20 ,t=0; if(x=y) t=x; x=y; y=t; printf(“%d,%dn“,x,y); 2以下程序执行后的输出结果是 。 main() int n=0,m=1,x=2; if(!n) x-=1;if(m) x-=2;if(x) x-=3; printf(“%dn“,x); ,研究式学习C程序设计(第二章),26,小结,程序的三种基本结构是:顺序结构、选择结构、循环结构。选择结构由ifelse和switch语句构成。常用ifelse语句实现简单的选择结构和两路选择结构,用switch语句实现多路选择结构。 if语句的嵌套使用比较复杂,请课后多练习。,研究式学习C程序设计(第二章),27,本章课后作业,复习教材第二章内容 预习教材第三章内容 上机实习内容: C实验指导与习题第二章 实验四 选择结构 完成C实验指导与习题第二章的全部习题,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号