选择结构又称为分支结构。 在选择结构程序设计中,根据条件的判断情况需要选择不同的语句组执行。 选择结构类型:

Slides:



Advertisements
Similar presentations
10.2.switch语句.
Advertisements

5 选择结构.
圆的一般方程 (x-a)2 +(y-b)2=r2 x2+y2+Dx+Ey+F=0 Ax2+Bxy+Cy2+Dx+Ey+ F=0.
18.2一元二次方程的解法 (公式法).
第4章 选择结构程序设计 选择结构是计算机科学用来描述自然界和社会生活中分支现象的手段。其特点是:根据所给定选择条件为真(即分支条件成立)与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作,并且任何情况下恒有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。
第一章 C语言概述 计算机公共教学部.
10.2 立方根.
第五章 选择结构程序设计 信息管理系.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
C语言程序设计 第十二章 位运算.
第4章 选择结构程序设计 二分支选择结构 多分支选择结构 P A B 真 假 k A1 A2 Ai An k=k2 k=k1 k=kn
程序设计基础.
C语言程序设计 第五章 选择结构程序设计.
第4章 选择结构程序设计.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
C#程序设计基础 $5 流程控制.
第2章 分支结构 P if语句 2.2 switch语句 2.3 用条件运算符转换大小写字母 2.4 程序举例
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
適用於多選一 可減少if 與 else配對混淆的錯誤.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
C程序设计.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
第二章 Java语言基础.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第四章 选择结构程序设计 计算机科学学院.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
6.4不等式的解法举例(1) 2019年4月17日星期三.
相似三角形 石家庄市第十中学 刘静会 电话:
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
函数 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 开发方法: 自上向下,逐步分解,分而治之
目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
C程序设计.
《计算机应用基础》 第9章 程序设计基础(二).
C语言程序设计 李祥 QQ:
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第九节 赋值运算符和赋值表达式.
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第二章 类型、对象、运算符和表达式.
习 题 课(作业).
第4课时 绝对值.
第四章 选择结构程序设计 计算机科学学院.
一元二次不等式解法(1).
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
第十二章 位运算.
第二章 Java基本语法 讲师:复凡.
输入语句 输出语句 赋值语句 条件语句 循环语句
多重條件選擇敘述
1.2.2条件语句.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
一元一次方程的解法(-).
Presentation transcript:

选择结构又称为分支结构。 在选择结构程序设计中,根据条件的判断情况需要选择不同的语句组执行。 选择结构类型: (1)条件选择结构:根据给定的条件表达式进行判断,决定执行某个分支中的程序段。由if语句来实现。 (2)开关选择结构:根据给定的整型表达式的值进行判断,然后决定执行多个分支中的某一个分支。由switch语句来实现。

4.1 程序的流程图 4.2 IF语句 4.3 多分支选择语句 4.4 程序综合举例

4.1 程序的流程图 传统流程图符号:

4.1 程序的流程图 N-S流程图符号:

4.1 程序的流程图 【例4.1】求10!的程序。 解题思路: 由于n!=n*(n-1)! 即10!=10*9! 9!=9*8! …… 2!=2*1! 1!=1

4.2 if 语句 4.2.1 if语句的三种格式 1.单分支选择结构 一般形式为: if(表达式) { 语句; }

4.2 if 语句 【例4.2】求所输入数值的绝对值。 解题思路: 输入数据 解题思路: 首先判断输入数值是否为负数,若为负数,则将取其相反数;否则,正数和零的绝对值是其本身,不予处理。 判断输入数据 ≥0 <0 取相反数 输出结果

4.2 if 语句 运行结果如下: Please input a score: -0.01↙ The result is: 0.01 【例4.2】求所输入数值的绝对值。 程序为: #include “stdio.h” main() { float score; printf(“Please input a score:\n”); scanf(“%f”,&score); /*输入数值*/ if (score<0) score=-score; /*若输入数值为负数,则取反*/ printf(“The result is: %3.2f\n”,score); } 运行结果如下: Please input a score: -0.01↙ The result is: 0.01 5.0↙ The result is: 5.00

4.2 if 语句 【例4.3】比较所输入的三个数值的大小,按升序输出。 解题思路: 只须让三个数值两两比较三次,在每次比较的过程中,若第一个数值大于第二个数值,则交换彼此的数值,三次比较完成后,三个数值即符合升序要求。

Please input three number: 60.1,60,59.9↙ 4.2 if 语句 程序代码如下: #include “stdio.h” Void main() { float x,y,z,temp; printf(“Please input three number:\n”); scanf(“%f,%f,%f”,&x,&y,&z); if (x>y) { temp=x; x=y; y=temp; } /*x>y时交换*/ if (x>z) {temp=x; x=z; z=temp; } /*x>z时交换,x为最小数*/ if (y>z) { temp=y; y=z; z=temp; } /*y>z时交换*/ printf(“The sequence is:%3.1f,%3.1f,%3.1f\n”,x,y,z); } 运行结果如下: Please input three number: 60.1,60,59.9↙ The sequence is: 59.9,60.0,60.1

4.2 if 语句 2.双分支选择结构 一般形式为: if(表达式) { 语句1;} else { 语句2;} 执行过程是:先求解表达式的值,如果表达式的值为真(非0)执行语句1;否则若表达式的值为假(值为0),就执行语句2。执行过程如图4.5所示。

4.2 if 语句 【例4.4】 判断所输入的学生成绩是否及格。 解题思路: 只需要将输入的学生成绩和60作一次比较就可以得出结论:该成绩大于等于60为及格,否则该成绩不及格。

4.2 if 语句

4.2 if 语句 3.多重选择结构 多重选择结构用于有多种情况需要选择的程序。 一般形式为: if(表达式1) {语句1;} else if (表达式2) {语句2;} else if (表达式3) {语句3;} … else if (表达式n) {语句n;} else {语句 n+1;}

4.2 if 语句 3.多重选择结构

4.2 if 语句 【例4.5】 判断所输入的学生成绩的等级,其具体要求如下表: 解题思路: 90~100 80~90 70~80 60~70 0~60 成绩等级 A B C D E 解题思路: 对于输入的学生成绩,可按照上表分为五个等级判断即可。

4.2 if 语句

4.2 if 语句 4.2.2 if语句的嵌套 if语句中的子语句1或子语句2还可以是if语句,这称为if语句的嵌套。 注意:else总是与前面最近的if配对。 一般形式如下: if(表达式1) if(表达式11) 语句11; else 语句12; else if(表达式2) 语句21; else 语句22;

4.2 if 语句 注意区别以下两种if语句结构: (1) if(表达式1) (2) if(表达式1) 语句11; 语句11;} else 语句12; else 语句12; 关键是弄清楚else与if的配对情况 问:第(1)种情况else与哪个if配对? 第(2)种情况else与哪个if配对? 答:第(1)种情况else与第2个if配对 第(2)种情况else与第1个if配对

4.2 if 语句 【例4.6】按表输入三个整数a、b、c,分析运行结果。 #include “stdio.h” void main() { int a,b,c; int result11=0,result12=0, result21=0,result22=0; scanf(“%d,%d,%d”,&a,&b,&c); if(a>b) /*第(1)种if语句的嵌套*/ if(b>c) result11=a*b*c; else result12=a+b+c; printf(“The result11 is: %d\n”,result11); printf(“The result12 is: %d\n”,result12); if(a>b) /*第(2)种if语句的嵌套*/ { if(b>c)result21=a*b*c;} else result22=a+b+c; printf(“The result21 is: %d\n”,result21); printf(“The result22 is: %d\n”,result22); }

4.2 if 语句 本程序的执行结果数据如下所示: 分析一下输入、输出数据的特点。 输入数据 对应的赋值 result11 result12 2,6,8 a=2;b=6;c=8 0 0 0 16 2,8,6 a=2;b=8;c=6 0 0 0 16 8,2,6 a=8;b=2;c=6 0 16 0 0 6,2,8 a=6;b=2;c=8 0 16 0 0 6,8,2 a=6;b=8;c=2 0 0 0 16 8,6,2 a=8;b=6;c=2 96 0 96 0 分析一下输入、输出数据的特点。

4.3 多分支选择语句(switch语句) switch语句的一般形式: switch(表达式) { case 常量表达式1: 语句组1;break; case 常量表达式2:   语句组2;break;     ┇ ┇ case 常量表达式n: 语句组n; break; [default: 语句组n+1;] }

4.3 多分支选择语句(switch语句) 执行过程:先求解表达式的值,然后与与后面各常量表达式比较,若与表达式i的值相同,则执行相应语句组i(i为1……n)。[若与常量表达式的值都不相同时,执行default后的语句组n+1]。动画演示如下:

4.3 多分支选择语句(switch语句) 【例4.7】 根据输入的成绩等级A,B,C,D来对应输出相应的说明:“superexcellence(优秀)”,“excellence(良好)”,“middling(中等)”和“pass(及格)”,其它输入都为“failure(不及格)”。

4.3 多分支选择语句(switch语句)

4.3 多分支选择语句(switch语句) 相关说明: (1) case后面所有的常量表达式与switch后面表达式的值类型相同。 (2) 语句组可以是多个语句组成的,但不需要用大括号括起来。 (3) 如果case后面没有break语句,程序会继续执行后面case后语句组。 (4) 注意case和常量表达式之间要有空格。 (5) Default子句可以省略,case和default子句的出现次序是任意的。

4.3 多分支选择语句(switch语句) 【例4.8】 对于输入的成绩等级A和B,相应输出为“良好”,C和D 对应着“及格”,其它输入都为“不及格”。 程序代码如下: #include “stdio.h” void main() { char grade; printf(“Please input the grade of score:\n”); scanf(“%c”,&grade); printf(“The information of %c is :”,grade); switch(grade) { case ‘A’: case ‘B’: printf(“excellence \n”);break; /*A,B对应“良好”*/ case ‘C’: case ‘D’: printf(“pass \n”);break; /*C,D对应“及格”*/ default: printf(“failure \n”); /*其它为“不及格”*/ }

4.3 多分支选择语句(switch语句) 【例4.9】 将下列程序与4.8对比分析,什么情况下会出现相同与不同的情况。 程序代码如下: #include “stdio.h” void main() { char grade; printf(“Please input the grade of score:\n”); scanf(“%c”,&grade); printf(“The information of %c is :”,grade); switch(grade) { case ‘A’: printf(“superexcellence \n”); case ‘B’: printf(“excellence \n”);break; case ‘C’: printf(“middling \n”); case ‘D’: printf(“pass \n”);break; default : printf(“failure \n”); } 注意:从例4.8和例4.9的区别和联系,重点关注break的用法和作用。

4.4 程序综合举例 【例4.11】判断输入的某一年是否是闰年,将结果输出。 提示:符合下列任一条件的年份为闰年,其它年份都不是闰年。 (1)该年份能被4整除,但不能被100整除; (2)该年份能被400整除。 解题思路:判断所输入的年份是否为闰年,只要满足(1)或(2)中的任意一条,该年份便为闰年,否则该年份不是闰年。仔细分析这两个条件,实际上就是三个数的整除问题,即是否能够被4、100、400整除,程序分别用flag1、flag2和flag3来表示。

4.4 程序综合举例 程序代码如下: #include “stdio.h” void main() { int year; int flag1, flag 2, flag 3; printf(“Please input a year:\n “); scanf(“%d”,&year); /*输入年份*/ flag1=((year%4)==0); /*判断年份是否能被4整除*/ flag2=((year%100)==0); /*判断年份是否能被100整除*/ flag3=((year%400)==0); /*判断年份是否能被400整除*/ if((flag1&&(!flag2)||( flag3)) /*判断年份是否为闰年*/ printf(“%d year is a leap year!\n”,year); else printf(“%d year is not a leap year!\n”,year); }

4.4 程序综合举例 运行结果如下: Please input a year: 1600↙ 1600 year is a leap year! 1902↙ 1902 year is not a leap year!

4.4 程序综合举例 【例4.12】输入一个无符号短整数和进制代号(d—十进制、0—八进制、x—十六进制),然后将数进制代号要求输出。 程序代码如下: #include “stdio.h” void main() { unsigned short x;    char c;    scanf(“%d,%c”,&x,&c);      /*输入一个无符号整数和进制代号*/    switch(c)                   /*判断对应的进制代号*/    { case 'd': printf(“%d\n”,x);    /*进制代号为d,输出对应十进制数*/          break;       case 'o': printf(“%o\n”,x);    /*进制代号为o,输出对应八进制数*/     case 'x': printf(“%x\n”,x); /*进制代号为x,输出对应十六进制数*/         break;      default:  printf(“Input error!\n”); /*进制代号错误提示*/ } }

4.4 程序综合举例 运行结果如下: 6,d↙ 6 6,o↙ 6,x↙ 6,c↙ Input error! 26,d↙ 26 26,o↙ 32 26,x↙ 1a

4.4 程序综合举例 【例4.13】对于输入的三个数值:x,y和z,判断它们可否构成一个三角形,若它们可以构成一个三角形,则输出该三角形的周长和面积。 解题思路:三角形三条边的边长之间的关系是:“两边之和大于第三边,两边之差小于第三边”可构成三角形。 边长分别为x,y,z的三角形面积: 其中: 演示该程序执行的过程

解题思路:根据一元二次方程ax2+bx+c=0的性质,可知: 4.4 程序综合举例 【例4.14】一元二次方程ax2+bx+c=0的求解问题。 解题思路:根据一元二次方程ax2+bx+c=0的性质,可知: (1)当b2-tac=0,该方程有两个相等的实数根 (2)当b2-tac>0,该方程有两个不等的实数根 (3)当 b2-tac<0, 该方程有两个共轭复根 (4) 若a=0,则该方程不是二元一次方程。 演示该程序执行的过程

4.4 程序综合举例 【例4.15】编写能实现下列分段函数的程序,要求:输入x,计算并输出函数y的值(保留2位小数):

4.4 程序综合举例 程序代码如下: #include “stdio.h” void main() { float x,y; printf(“Please input x:”); scanf(“%f”,&x); /*输入x的值*/ if(x==8)y=10; /*x=8时的情形*/ else if(x<8)y=x*x+16; /*x<8时的情形*/ else y=9*x+16; /*x>8时的情形*/ printf(“\n When x=%f, the value of y is:%.2f\n”,x,y); }