E-mail:tom_lx@126.com QQ:100756 李祥 E-mail:tom_lx@126.com QQ:100756 欢迎多种方式的学习交流,祝大家学有所成.

Slides:



Advertisements
Similar presentations
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
Advertisements

第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
第一章 C语言概述 计算机公共教学部.
项目五——校园一卡通程序功能模块化设计 5-1项目显示查询和退出函数设计.
第一单元 算法与流程图.
第1节 光的干涉 (第2课时).
勾股定理 说课人:钱丹.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
C语言程序设计 第十二章 位运算.
C语言程序设计 第五章 选择结构程序设计.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
第2章 分支结构 P if语句 2.2 switch语句 2.3 用条件运算符转换大小写字母 2.4 程序举例
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
適用於多選一 可減少if 與 else配對混淆的錯誤.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
项目六 用指针优化学生成绩排名 项目要求 项目分析
C程序设计.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
第八章 函数.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
Introduction to the C Programming Language
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
C语言 程序设计基础与试验 刘新国、2012年秋.
第3章 程序设计初步 第4章 函数与预处理 第5章 数组 第6章 指针 第7章 自定义数据类型
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
人教版数学四年级(下) 乘法分配律 单击页面即可演示.
計數式重複敘述 for 迴圈 P
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第二讲 C#程序设计基础(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
数组 梁春燕 华电信息管理教研室.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
C语言大学实用教程 第5章 函数与程序结构 西南财经大学经济信息工程学院 刘家芬
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第 二 章 数据类型、运算符与表达式.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
C程序设计.
第一章 C语言概述 教师:周芸.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
THE C PROGRAMMING LANGUAGE
第二章 类型、对象、运算符和表达式.
第2章 数据类型与表达式 学习目的与要求: 掌握C 语言的基本数据类型及使用方法 掌握C程序中常用的运算符和表达式 了解数据类型的转换.
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第十二章 位运算.
目录 12.1 位运算符 12.2 位域(位段) 1.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
C语言基本语句 判断循环.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Q1(a) 小偉打算編寫一個程序。該程序把兩個44的表內的數字相加。表3內的數字是由表1和表2應格子內的數字相加而成。例如:
Introduction to the C Programming Language
函式庫補充資料 1.
C语言基础学习 从外行到入门.
隨機函數.
Presentation transcript:

E-mail:tom_lx@126.com QQ:100756 李祥 E-mail:tom_lx@126.com QQ:100756 欢迎多种方式的学习交流,祝大家学有所成

第五章 选择结构 目录 1 2 3 4 5 6 7 口令验证模块的开发 关系运算符和关系表达式 逻辑运行算符与逻辑表达式 if语句 条件运算符 6 switch语句 7 选择结构程序的编写

知识点要求: 技能要求: 教学要求 1 2 1 2 3 关系运算符、逻辑运算符 if语句、switch语句 掌握if语句的三种形式 掌握选择结构的嵌套

5.1 口令验证模块的开发 任务描述: 任务要求: 编写login函数,实现计算器的密码验证功能。 (1)在进入计算器主菜单前,加入一个输入密码的提示。 (2)根据提示输入一个整数密码。 (3)如果密码输入正确,则允许进入计算器主菜单,如果输入不正确,提示“密码输入错误”,不显示主菜单。 。

5.1 口令验证模块的开发 任务分析: 实现口令验证模块,需要以下几个步骤: (1)输入一个口令。 (2)判断该口令是否正确,如果正确,显示菜单部分,如果不正确,提示不正确。 实现以上步骤,要考虑到下面两个问题: (1)如何判断输入的口令与所预设的口令(比如123)是否匹配。 (2)根据口令的匹配情况给出相应的用户回馈信息。

5.1 口令验证模块的开发 任务实现 编写login函数 void login() {int pw; printf("请输入密码:"); scanf("%d",&pw); if (pw==123 || pw==111) {printf("欢迎使用本系统\n"); displayMenu( ); //调用函数 } else printf("密码不正确,不能使用本系统\n"); return; 在主函数中调用login函数

5.1 口令验证模块的开发 涉及知识点 关系运算符—== 逻辑运算符--|| 选择结构—if…else…

5.2 关系运算符和关系表达式 1.关系运算符 C语言提供6种关系运算符: 用来对两个数值进行比较的比较运算符 ① < (小于) ② <= (小于或等于) ③ > (大于) ④ >= (大于或等于) ⑤ == (等于) ⑥ != (不等于) 优先级相同 (高) 优先级相同 (低)

5.2 关系运算符和关系表达式 2.关系、算术、赋值运算符的优先级 算术运算符 (高) 赋值运算符 (低) 关系运算符

5.2 关系运算符和关系表达式 c>a+b 等效于 c>(a+b) a>b==c 等效于 (a>b)==c

5.2 关系运算符和关系表达式 3.关系表达式 用关系运算符将两个数值或数值表达式连接起来的式子 关系表达式的值是一个逻辑值,即“真”或“假” 在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

5.3 逻辑运算符和逻辑表达式 1.逻辑运算符: &&(逻辑与) ||(逻辑或) !(逻辑非) 其中: &&和||是双目(元)运算符 &&(逻辑与) ||(逻辑或) !(逻辑非) 其中: &&和||是双目(元)运算符 !是一目(元)运算符

5.3 逻辑运算符和逻辑表达式 逻辑运算的真值表 a b ! a ! b a && b a || b 真 假

5.3 逻辑运算符和逻辑表达式 逻辑运算符的优先次序 ! → && → || (!为三者中最高) 与其他运算符的优先次序 ! (高) ! → && → || (!为三者中最高) 与其他运算符的优先次序 ! (高) 算术运算符 关系运算符 && 和 || 赋值运算符 (低)

5.3 逻辑运算符和逻辑表达式 2.逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子 逻辑表达式的值应该是逻辑量“真”或“假”。 编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”;但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。 注意:将一个非零的数值认作为“真”

5.3 逻辑运算符和逻辑表达式 (1) 若a=4,则!a的值为0 (2) 若a=4,b=5,则a && b的值为1 (5) 4 && 0 || 2的值为1

5.3 逻辑运算符和逻辑表达式 注意: 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例如: ① a&&b&&c 只有a为真(非0)时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不必判别b和c(此时整个表达式已确定为假)。如果a为真,b为假,则不判别c,整个表达式运算结果为假。 ② a||b||c 只要a为真(非0),就不必判断b和c;只有a为假,才判别b;a和b都为假才判别c。

5.3 逻辑运算符和逻辑表达式 【例5.1】逻辑运算符的应用。 #include <stdio.h> void main( ) { int x=4,y=5,z,m; z=(x++==5) && (++y); printf("z=%d,x=%d,y=%d\n",z,x,y); m=(x++) || (++y); printf("m=%d,x=%d,y=%d\n",m,x,y); return; }

5.3 逻辑运算符和逻辑表达式 【例5.2】 写出以下各题的逻辑表达式。 (1)判断年龄(age)在13至17岁之内 age>=13 && age<=17 (2)判断(age)年龄小于12或大于65 age<12 || age>65

5.3 逻辑运算符和逻辑表达式 (3)判别某一年是否闰年 闰年的条件是符合下面二者之一: ①能被4整除,但不能被100整除,如2008 ②能被400整除,如2000 (year % 4 == 0 && year 100 !=0) || year % 400 == 0

5.4 if语句 1.if语句的一般形式 关系表达式 逻辑表达式 数值表达式 if (表达式) 语句1 [ else 语句2 ] 方括号内的部分为可选的

5.4 if语句 1.if语句的一般形式 if (表达式) 语句1 [ else 语句2 ] 简单的语句 复合语句 另一个if语句等

5.4 if语句 最常用的3种if语句形式: 1. if (表达式) 语句1 (没有else子句) 2. if (表达式) 语句1 else 语句2 (有else子句) 3. if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ┆ else if(表达式m) 语句m else 语句m+1 (在else部分又嵌套了多层的if语句)

分号不能丢 if(number > 500) cost = 0.15; else if (number > 300) cost = 0.10; else if (number > 100) cost = 0.075; else if (number > 50) cost = 0.05; else cost=0; 等价于 if (number > 500) cost = 0.15; else if (number > 300) cost = 0.10; if (number > 100) cost = 0.075; if (number > 50) cost = 0.05; else cost = 0;

【例5.3 】输入两个实数,按由小到大的顺序输出。 5.4 if语句 【例5.3 】输入两个实数,按由小到大的顺序输出。 解题思路: 通过键盘输入两个数a和b,在输出数据之前,使a中存放小的数,b中存放大的数。当输入的数据为a>b时,需要将a和b的值进行交换。 将两个变量进行交换时,要借助于第三个变量,将其中一个变量的值先保存起来再交换。

5.4 if语句 ★ ● 互换前 A B ● ★ 互换后 A B

5.4 if语句 C ★ ★ ● A B

5.4 if语句 C ★ ★ ● A ● B

5.4 if语句 C ★ ● A ● B ★

5.4 if语句 将a和b的值互换 #include <stdio.h> void main() { float a,b,c; scanf("%f,%f",&a,&b); if(a>b) { c=a; a=b; b=c; } printf("%5.2f,%5.2f\n",a,b); 将a和b的值互换 10-12班 11月6日

5.4 if语句 选择结构,用if语句实现 #include <stdio.h> int main() { float a,b,t; scanf("%f,%f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; 选择结构,用if语句实现

5.4 if语句 思考: 输入3个数a,b,c,要求按由小到大的顺序输出。 请同学们自行完成! 解题思路:保证a最小,c最大 if a>b,a和b对换 (a是a、b中的小者) if a>c,a和c对换 (a是三者中最小者) if b>c,b和c对换 (b是三者中次小者) 顺序输出a,b,c 请同学们自行完成!

#include <stdio.h> void main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } 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); } 将a和b对换 将a和c对换 将b和c对换

【例5.4】猜数游戏:如果猜对,显示“**正确**”否则显示“**错误**”。 5.4 if语句 【例5.4】猜数游戏:如果猜对,显示“**正确**”否则显示“**错误**”。 解题思路: 通过键盘输入一个整数,用变量guess存放,如果输入的数据与程序中给定的数据magic相等,则输出“**正确**”,否则输出“**错误**”。对于两种不同的情况,可用if语句的双分支形式进行判断处理。

5.4 if语句 #include <stdio.h> void main( ) { int magic=123,guess; printf("请输入数据:\n"); scanf("%d",&guess);   if (guess= =magic) printf("**正确**\n"); else printf("**错误**\n"); return; }

5.4 if语句 思考:由计算机产生一个随机数magic,与输 入的数据guess进行比较。 提示:随机数可通过rand( )函数获取,将产生的随机数赋给变量magic,语句如下: magic= rand( );

5.4 if语句 注意: ① 在程序中使用rand( )函数,应该在本文件开头写上下面一行:#include <stdlib.h> ② rand函数产生随机数的取值范围为0~32767 间的一个正整数,如果想缩小取值范围,如0~9之间,可使用以下语句:  magic=rand()%10; ③产生a~b之间的一个随机正整数,公式为: rand()%(b-a+1)+a ④要使每次运行时产生的随机数都不一样: #include<time.h> srand(time(0));

5.4 if语句 1.if语句的一般形式 else总是与它上面最近的未配对的if配对 内嵌if 在if语句中又包含一个或多个if语句称为if语句的嵌套 一般形式: if( ) if( ) 语句1 else 语句2 else if( ) 语句3 else 语句4 else总是与它上面最近的未配对的if配对 内嵌if

5.4 if语句 【例5.5】有一函数: 编程序,输入x值,要求输出相应的y值。

解题思路:方法1 scanf("%d",&x); if(x<0) y = -1; if(x==0) y = 0; printf("x=%d,y=%d\n",x,y); 解题思路:方法1 (1) 先后用3个独立的if语句处理: 输入x 若 x < 0, 则y =-1 若 x = 0, 则y = 0 若 x > 0, 则y = 1 输出x和y

错 错 解题方法2:用if的嵌套 if(x<0) if(x>=0) y =-1; if(x>0) y=1; 程序1: 程序2: if(x<0) if(x>=0) y =-1; if(x>0) y=1; else else y=0; if(x==0) y=0; else y=-1; else y=1; 程序3: 程序4: y=-1; y=0; if(x!=0) if(x>=0) if(x>0) y=1; if(x>0) y=1; else y=0; else y=-1; 错 错

5.5 条件运算符 当被判别的表达式值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值 如:if (a>b) max=a; else max=b; 条件运算符 max = (a > b) ? a : b; 条件表达式

5.5 条件运算符 条件表达式的一般形式为 表达式1?表达式2: 表达式3 执行顺序: 求解表达式1 若为真,则求解表达式2,此时表达式2的值就作为整个条件表达式的值 若表达式1的值为假,则求解表达式3,表达式3的值为整个条件表达式的值

5.5 条件运算符 【例5.6】求一个整数的绝对值。 解题思路: 由流程图可以看出,这是一个双分支的选择结构,两个分支都执行赋值操作,并且给同一个变量赋值。所以,可以用条件运算符来解决问题。

5.5 条件运算符 #include <stdio.h> void main( ) { int t;     printf("请输入t的值:");     scanf("%d",&t);      t=t>0?t:-t;     printf("t的绝对值是:%d\n",t);     return; }

5.5 条件运算符 思考题: 输入一个字符,判别是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。输出最后得到的字符。 要求:可以用if语句来实现,也可以用条件表达式来处理。 请同学们自己完成!

5.5 条件运算符 参考代码: #include <stdio.h> void main() {char ch; scanf("%c",&ch); ch=(ch>='A' && ch<='Z‘)?(ch+32):ch; printf("%c\n",ch); return; }

5.6 switch语句 switch语句用来实现多分支选择结构 学生成绩分类 85分以上为’A’级 70~84分为’B’级 …… 人口统计分类 按年龄分为老、中、青、少、儿童

5.6 switch语句 switch语句的作用是根据表达式的值,使流程跳转到不同的语句 switch语句的一般形式: { case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 } 整型、字符型数据

5.6 switch语句 Switch语句的执行过程: 先计算表达式的值,然后依次与常量表达式i(i=1,2,……n)的值比较,若表达式的值与某个case语句后的表达式i的值相等,则先执行语句i,再依次执行语句i+1,i+2,……语句n+1。若所有case后的常量表达式的值均不与switch后的表达式的值相等,则执行default后语句。

5.6 switch语句 switch语句的作用是根据表达式的值,使流程跳转到不同的语句 switch语句的一般形式: { case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 } 不能相同

5.6 switch语句 【例5.7】按照成绩的等级输出百分制分数段,A级为85分以上,B级为70~84分,C级为60~69分 ,D级为 60分以下 。成绩的等级由键盘输入。 解题思路: 多分支选择结构 将学生成绩分为4个等级 用switch语句实现 10-12班 11朋8日

#include <stdio.h> void main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n"); case 'B': printf("70~84\n"); case 'C': printf("60~69\n"); case 'D': printf("<60\n"); default: printf("enter data error!\n"); } 分析: 若输入B,程序的运行结果为?

5.6 switch语句 若想在执行某一分支后跳出switch语句,即终止switch语句的执行,可在每个case语句的后面加上一个break语句来达到此目的。 将上例改成如下形式:

#include <stdio.h> void main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } 值为A 13-15 11月8日

5.6 switch语句 多个case子句可共用同一组执行语句. scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf(“>60\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } 多个case子句可共用同一组执行语句. 若输入A,程序的运行结果为?

5.6 switch语句 思考:运行以下程序4次,分别输入1、2、3、5,观察程序的输出结果。 #include<stdio.h> int main() { int i; scanf("%d",&i); switch(i) {case 1: case 2:printf("i="); case 3: printf("%d\n",i);break; default: printf("ok!\n");} return 0; }

5.6 switch语句 项目完善: 编写计算器中selectMenu()函数,实现输入不同的数字,进入不同的运算,如输入1,进入加法,输入2,进入减法等。(见calswitch.c) 分析: (1)要求用户从键盘上输入一个数字。 (2)按照菜单的提示,输入相应的数字后进入对应的运算。 (3)输入的字母无效时,提示输入错误

5.7 选择结构程序的编写 1. 有一分段函数 : 编写程序,输入x的值,输出y的结果(输出y保留两位小数)。 2.输入三个数,按由小到大的顺序输出。

5.7 选择结构程序的编写 3.编写程序,学生单科成绩按下列标准分等(其中x为每个学生的单科成绩) 成绩 等级英文名称 成绩 等级英文名称 x<60 bad 60<=x<80 middle 80<=x<90 good 90<=x excellent 现输入某个学生的单科成绩,请输出他的等级标准。

重点: 难点: 本章小结 1 2 3 1 2 关系运算符、逻辑运算符、条件运算符 if语句、if的嵌套 If语句的嵌套 Switch语句

本章结束!