C选择结构程序设计.ppt_第1页
C选择结构程序设计.ppt_第2页
C选择结构程序设计.ppt_第3页
C选择结构程序设计.ppt_第4页
C选择结构程序设计.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 1 l 本章要点 u 选择结选择结 构的算法表示 u 关系表达式 u 逻辑逻辑 表达式 u if语语句 u 条件运算符和条件表达式 u switch语语句 2 l 主要内容 4.1 选择结选择结 构能够够解决的问题问题 及算法表示 4.2 关系运算符和关系表达式 4.3 逻辑逻辑 运算符和逻辑逻辑 表达式 4.4 if语语句 4.5 条件运算符和条件表达式 4.6 switch语语句 4.7 选择结选择结 构程序设计举设计举 例 3 4 * C程序设计设计 教程 - / 4.1 选择结选择结 构能够够解决的问题问题 及算法表 示 1. 选择问题选择问题 的提出 选择结选择结 构是三种基本结结构之一。在大多数程序中都会包 含选择结选择结 构。选择结选择结 构的作用是根据所指定的条件是否满满 足,决定从给给定的两组组操作选择选择 其一。 在C语语言中,如果条件成立,记为逻辑记为逻辑 “真”,如果条件 不成立,记为逻辑记为逻辑 “假”。由于C语语言中数据没有逻辑类逻辑类 型 ,就规规定逻辑逻辑 “真”和逻辑逻辑 “假”分别别用1和0表示。 对对于一次性的判断,一般利用if 语语句来实现实现 ,对对于两次 以上的判断,一般利用if 语语句嵌套或多分支语语句switch实实 现现。有时时也可以与循环语环语 句结结合实现实现 更复杂杂的判断问题问题 。 5 * C程序设计设计 教程 - / 4.1 选择结选择结 构能够够解决的问题问题 及算法表 示 2. 选择问题选择问题 的算法描述 例4.1 分别别用传统传统 流程图图和NS流程 图图描述求一个数的 绝对值绝对值 的算法。 6 * C程序设计设计 教程 - / 4.1 选择结选择结 构能够够解决的问题问题 及算法表 示 例4.2 分别别用传统传统 流程图图和NS流程 图图表示求4个整数中最大值值的算法 7 * C程序设计设计 教程 - / 4.1 选择结选择结 构能够够解决的问题问题 及算法表 示 例4.3 分别别用传统传统 流程图图和NS流程图图 表示对对3个整数进进行由大到小排序的算法。 8 * C程序设计设计 教程 - / 4.1 选择结选择结 构能够够解决的问题问题 及算法表 示 例4.4 分别别用传统传统 流程图图和NS流程图图表示计计算下面分段 函数的值值的算法。 9 * C程序设计设计 教程 - / 4.2 关系运算符和关系表达式 所谓谓“关系运算”就是将两个值进值进 行比较较,判断其比较较的结结 果是否符合给给定的条件。例如,x0是一个关系表达式,大于 号()是一个关系运算符。如果x的值为值为 6,则满则满 足给给定的 “x0”条件,因此关系表达式的值为值为 “真”;如果x的值为值为 -6, 不满满足“x0”条件,则则称关系表达式的值为值为 “假”。 4.2.1 关系运算符及其优优先次序 对对两个数据的大小关系进进行判断设计设计 了六种关系运算符: ! 关于优优先次序:前四种关系运算符(、)的 优优先级别级别 相同,后两种也相同(、!),前四种高于后 两种。关系运算符具有自左至右的结结合性。 10 * C程序设计设计 教程 - / 4.2 关系运算符和关系表达式 关系运算符、算术术运算符和赋值赋值 运算符之间间的优优先级级由 高到低为为: 算术术运算符关系运算符赋值赋值 运算符 例如: ca-b 相当于 c(a-b) abc 相当于 (ab)c abc 相当于 a(bc) 注意:、!的两个符号间间没有空格,是C 语语言中关系运算符,是赋值赋值 运算符,不能混淆。 11 * C程序设计设计 教程 - / 4.2 关系运算符和关系表达式 4.2.2 关系表达式 由关系运算符将两边边的运算对对象连连接而成的式子,称为为关 系表达式。 例4.5 观观察并输输出关系表达式的值值。 #include void main( ) char x=a, y=b; int n; n = xn) printf(“%dt“,a+bc printf(“%dt“,a|b+c printf(“%dt“,!(ab) printf(“%dt“,!(x=a) printf(“%dn“,!(a+b)+c-1 程序运行结结果: 0 1 1 0 1 14 * C程序设计设计 教程 - / 4.3 逻辑逻辑 运算符和逻辑逻辑 表达式 说说明:逻辑逻辑 运算符两侧侧的运算对对象不但可以是0和1,或者 是0和非0的整数,也可以是字符型、实实型等类类型。 例如:!3.5 = 3 分析:3.5为为非0值值,3.5进进行逻辑逻辑 非后的值为值为 0,3的 ASC码值为码值为 51,即非0,则则表达式的结结果为为0。系统统最 终终以0和非0来判定它们们属于“真”或“假”。 讨论讨论 :另外,C语语言在逻辑逻辑 表达式的求解中,对对于运算 符逻辑逻辑 与 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 printf(“a=%d b=%d c=%d n“,a,b,c); +a|+b printf(“a=%d b=%d c=%d n“,a,b,c); +a printf(“a=%d b=%d c=%d n“,a,b,c); 程序运行结结果: a=1 b=1 c=3 a=2 b=1 c=3 a=3 b=2 c=2 a=4 b=2 c=2 a=5 b=3 c=2 18 * C程序设计设计 教程 - / 4.4 if语语句 4.4.1 if语语句的基本形式 if语语句的作用是计计算所给给定的条件表达式是否为为0 ,根据计计算的结结果(0或非0)决定执执行给给出的两种操 作之一。 条 件 语语句1 语语句2 YN1. if语语句的一般形式 if (表达式) 语语句1 else 语语句2 例:if (xy) printf(“%d”,x); else printf(“%d”,y); 19 * C程序设计设计 教程 - / 2. if语语句的其他形式: (1)可以省略else及其后的语语句, 则则if语语句的形式为为: if (表达式) 语语句 例如: if(xy) printf(“%d”,x); 4.4 if语语句 注意:不要误认为误认为 if语语句和else语语句是 两个完整的语语句。它们们都属于同一个 if语语句。else子句不能作为语为语 句单单独 使用,它必须须是if语语句的一部分, 与if配对对使用。 20 * C程序设计设计 教程 - / (2)在if和else后面可以有多个操作语语句 则则if语语句的形式变变成: if (表达式) 语语句序列1 else 语语句序列2 例如: if ( x void main() int x,y; printf(“please input 2 numbers:“); scanf(“%d %d“, if(xy) printf(“max=%dn“,x); else printf(“max=%dn“,y); 4.4 if语语句 程序运行结结果: please input 2 numbers: 12 29 max=12 22 * C程序设计设计 教程 - / 例4.9 输输入三个整数,输输出最大数和最小数。 #include void main() int a,b,c; int max,min; printf(“input 3 numbers: “); scanf(“%d %d %d“, if(ab) max=a;min=b; else max=b; min=a; if(maxc) min=c; printf(“max=%dnmin=%dn “,max,min); 4.4 if语语句 程序运行结结果: input 3 numbers: 12 25 18 max=18 min=-25 23 * C程序设计设计 教程 - / 4.4.2 if语语句嵌套 完整的嵌套格式如下: if(表达式1) if (表达式2) 语语句1 else 语语句2 else if (表达式3) 语语句3 else 语语句4 4.4 if语语句 注意: C语语言规规定:当使用 if语语句嵌套时时,else总总是与 它上面的最近的if配对对。 为为了正确表示各个分支的关 系,要合理使用内嵌的复合 语语句。 24 * C程序设计设计 教程 - / 当进进行多个分支选择时选择时 ,常采用else-if语语句, 它是if嵌套中的特殊形式, 其一般形式为为: if (表达式1) 语语句1 else if (表达式2) 语语句2 else if(表达式3) 语语句3 else if (表达式n-1) 语语句n-1 else 语语句n 4.4 if语语句 25 * C程序设计设计 教程 - / 例4.10 有一个分段函数如下,编编写程序, 输输入x值值,输输出y值值。 4.4 if语语句 分析:一般情况下分段函数的处处理 要使用if嵌套的形式实现实现 ,其流程图图 可以参照例4.4的流程图图。下面提供的 程序1中,如果x小于0,则则y=x;否则则 如果x等于0,则则y=0;否则则x大于0, 则则y=x*x+1。程序2、3、4对对程序1 进进行了修改,但是程序3和4是错误错误 的, 请读请读 者一定注意if和else 的配对对关系。 26 * C程序设计设计 教程 - / 4.4 if语语句 程序1: #include void main( ) int x,y; printf(“please input x:“); scanf(“%d“, if(x=0) if(x0) y=x*x+1; else y=x; 程序2:将上面程序的if语语句(程序第7-10行)改为为: if(x=0) if(x0 ) y=x*x+1; else y=0; else y=x; 程序4:将上述if语语句改为为: y=x; if(x!=0) if(x0) y=x*x+1; else y=0; 正 确 错 误 错 误 例4.11 判别键盘输别键盘输 入字符的类别类别 。 28 * C程序设计设计 教程 - / 4.5 条件运算符和条件表达式 1.条件运算符 条件运算符:“? :”是C语语言中惟一的三目运算符。条件运 算符的优优先级级高于赋值赋值 运算符,但是低于关系运算符和算 术术运算符。条件运算符的结结合性为为自右至左。 使用场场合:若在语语句中,当被判别别的表达式的值为值为 “ 真”或“假” 时时,都执执行一个赋值语赋值语 句且向同一个变变量赋值赋值 时时,可以用一个条件运算符来处处理。 例如:()=; ; 即为为: max=(xy) ?x :y 其中:“?:”是一个条件运算符。此条件表达式的执执行 过过程是:首先计计算(xy),若其值为值为 非0,则则条件表达式的 值为值为 x之值值;否则则,若其值为值为 0,则则条件表达式的值为值为 y之 值值 29 * C程序设计设计 教程 - / 4.5 条件运算符和条件表达式 2. 条件表达式 条件表达式的一般形式为为: 表达式1 ? 表达式2 : 表达式3 (1)“表达式2”和“表达式3”不仅仅可以是数值值表达式。 还还可以是赋值赋值 表达式或函数表达式。 例如:(xy) ?(x=1) :(y=3) (2)“表达式1”可以与“表达式2”和“表达式3”类类型不同 。 例如:(xy) ? a :b (3)若“表达式2”和“表达式3”类类型不同,则则条件表达式 的类类型取二者中较较高的类类型。 例如: (xy) ? a :2.718 如果xy的值为值为 非0,则则条件表达式的值应为值应为 97.0。因 为为a的ASCII码值码值 要转换为转换为 2.718的类类型,即实实型。 30 * C程序设计设计 教程 - / 例4.12 将大写字母转换为转换为 小写字母。 #include void main() char ch; scanf(“%c“, ch=(ch=A scanf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论