第5章 选择结构程序设计1
大学计算机基础第5章

时期 阶段
任务
文档
需求分析 系统的目标及应完成的工作 需求规格说明书
开发
总体设计 软件设计
详细设计 软件编码 编写程序代码
总体设计说明书 详细设计说明书 程序、数据注释
黑盒测试、白盒测试、单元 测试后的软件、
软件测试 测试、集成测试、确认测试、大纲、方案与结
系统测试
果
运行 软件维护 运行和维护
维护后的软件
1)软件生命周期模型:是描述软件开发过程 中各种活动如何执行的模型。 2)常见的软件生命周期模型有:瀑布模型、 增量模型、螺旋模型、喷泉模型、变换模型及 基于知识的模型等。
上图是软件生存周期的瀑布模型。
5、软件工具与软件开发环境
软件工具:就是帮助开发软件的软件。 软件开发环境(或称软件工程环境):是全面支 持软件开发全过程的软件工具的集合,这些软 件工具按照一定的方法和模式组合起来,共同 支持软件生命周期内的各个阶段和各项任务的 完成。
结构化方法的软件开发过程
软件计划后 结构化分析
结构化设计
编码并测试 结构化程序设计
面向对象方法的软件开发过程
软件计划后 面向对象分析
面向对象设计
软件测试 面向对象编程
1、结构化分析方法
1)结构化分析(简称SA)方法是面向数据流 进行需求分析的方法。该方法使用简单易读 的符号,运用抽象的概念模型,根据软件内 部数据传递、变换的关系,自顶向下逐层分 解,描绘出满足功能要求的软件模型
DFD图的数据流可分为两种类型:变换流和事务流 变换流:信息沿着输入通路进入系统,同时将信息的外
部形式转换成内部形式,通过变换中心处理之 后,再沿着输出通路转换成外部形式输出 事务流:信息沿着输入通路到达一个事务中心,事务中 心根据输入信息的类型在若干个动作序列中选 择一个来执行,这种信息流称为事务流
第5章 选择结构程序设计

通过例5.4和5.5,会注意到:无论是块If单分支结构还是块If双分支结构,均 把程序执行过程分为满足条件的一支和不满足条件的另一支,但在应用中会遇 到类似下面的问题或更复杂的情况,例如,分段函数: x2 1 x>0 y 0 x=0 2 x<0 x 1
自变量x的取值分为三种情况,对应函数y有不同的计算表达式。此类问题 可以使用三个块IF单分支结构完成;也可以使用块IF双分支结构。若采用前 者,读者可仿照例5.4完成;若采用后者,可先把x的取值分为“等于0”和 “不等于0”两种情况,再把“不等于0”这种情况分成“大于0”和“小于0”两种 情况,代码如下: Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x <> 0 Then If x > 0 Then ' 不等于0的情况之一 y=x^2+1 Else ' 不等于0的情况之二 y=x^2-1 End If
2 2
Dim x As Single, y As Single ' 声明x,y为单精度变量 x = Val(InputBox("请输入变量的值")) ' 输入x的值 If x >= 0 Then ' x>=0时计算y y=x^2+1 End If If x < 0 Then ' x<0时计算y y=x^2-1 End If Print "x="; x, "y="; y 该代码段根据x取值的两种情况,分别计算出相应的y值,一个单分支If 结构完成一种情况的计算,因此结构简单,容易理解,但程序不够简练。
真
语句组1
机器人程序设计(C语言)(第2版)章节练习题及参考答案

第一章一种新的C语言学习方式1.一台能够工作的计算机包括?CPU (Central Processing Unit,中央处理单元,进行运算和控制,包括运算器和控制器等)、存储器(如RAM、ROM等)、输入设备、输出设备(包括串行/并行接口、USB等)。
其中,RAM (RandomAccess Memory,随机存储器)主要用于存储数据,ROM (RcadOnlyMemory, 只读存储器)主要用于存储程序。
2.单片机工作时需要什么?需要稳定的电源、晶振、外部存储器和编程调试接口,就像计算机工作时需要电源、晶振、硬盘或其他大容量外部存储器和操作系统一样。
微控制器是将单片机独立工作所需的电源适配器、晶振、外部存储器和串口转换电路等封装到一个模块上,这样就能直接与计算机连接并进行编程开发,不需任何其他芯片和电路。
3. AT89S52是一种什么样的单片机?是一种高性能、低功耗的8位单片机,内含8 KBISPdn-System Programmable系统在线编程)可反复擦写IOOO次的Flash只读程存器,采用ATMEL公司的高密度非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。
在实际工程应用中,功能强大的AT89S52 已成为许多高性价比嵌入式控制应用系统的解决方案。
4. Progisp是一款什么样的软件?是一款免费下载的ISP软件,不需要专门的安装即可使用,非常方便。
使用该软件,读者可以将C语言程序生成的可执行文件下载到机器人单片机上。
使用时需要1根USBA转B 信号线。
5.简述串口调试工具的特点。
串口调试工具就是串行通信接口调试软件,集数据发送、数据接收、数据监控、数据分析等功能于一身,具有小巧精致、操作简捷、功能强大的特点,可以在串口通信监控、设备通信测试工作中有效提高效率。
6. pr i ntf ()函数称为?称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出显示。
Print ()函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括定义标准函数库的头文件stdio. h o第二章最简单的C程序设计——机器人做算数1. C语言用什么整型变量?C语言用关键字imt定义整型变量。
c语言(第五章选择结构) c语言 教学课件

• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
c语言选择结构教案

输出y的值
3、if语句
if语句的三种形式:单分支选择if语句、双分支 选择if语句、多分支选择if语句。 1)单分支选择if语句 语句形式: if (表达式) 语句; 例:if(x>y)printf(“%d”,x); 语句执行流程: 假(0) 表达式 真(非0) 语句
例5.1:从键盘输入两个数a 和b,按代数值由小到大的 顺序输出这两个数。 #include <stdio.h> 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); }
作业: P112 3, 3 ,4
注意: (1)当if语句中出现多个“if”与“else”的时 候,要特别注意它们之间的匹配关系,否则就 可能导致程序逻辑错误。“else”与“if”的匹配 原则是“就近一致原则”,即“else”总是与它 前面最近的“if”相匹配。 (2)if语句中条件的写法应尽量简单。
小结:
if语句的三种格式及其各自的执行流程 if语句的三种格式及其各自的执行流程
2)、双分支选择if语句 语句形式: if (表达式)语句1; else 语句2 ; 例:If(x>y) printf(“%d”,x); else printf(“%d”,y); 假(0) 表达式
真(非0)
语句执行流程:
语句1
语句2
例:输入三角形的三个边长,求出三角形的面积。 #include “math.h” main() { float a,b,c; float s; /*s为三角形的半周长*/ printf(“请输入三角形的三边a,b,c:”); scanf(“%f%f%f”,&a,&b,&c); if (a+b>c&&a+c>b&&b+c>a) /*判断输入的a,b,c能否构成三角形*/ {s=(a+b+c)/2.0; /*求出三角形的半周长*/ printf(“三角形周长s=%f”,s);} else printf(“不能构成三角形\n”); }
C语言第五章

学习提示: (1)算法包括输入、处理和输出三个部分 ,其中处理部分为选择结构。
b=t
F
输出a,b 结束
5
信息科学与技术学院 软件工程系
选择结构算法设计
South West Jiaotong University
【例5. 1】输入a、b值,如果a>b,那么交换a和b,使得a≤b。 解决该问题的主要步骤为: 开始
17
信息科学与技术学院 软件工程系
关系运算符和关系表达式
【例】编写以下程序,查看结果。 #include <stdio.h> void main() { int a,b,c; int d,e,f; a=4,b=5,c=6; d=a>b; e=a<b<c; f=c>b>a; printf("%d %d %d \n",d,e,f); }
South West Jiaotong University
20
信息科学与技术学院 软件工程系
逻辑运算符- 优先级
• 各类运算符的优先级关系:
South West Jiaotong University
– !(非)高于 &&(与) 高于 ||(或)。 – &&(与)和||(或)低于关系运算符 – !(非)高于 算术运算符
1)任何数值(字符、整数、实数、指针)都可以表示 逻辑意义,只要数值不等于0,就表示“真”,而0 表示“假”;
2)关系与逻辑运算表达式的运算结果为“真”,表达 式的值为int型整数1,运算结果为“假”,则表达 式的值为int型整数0。
由2)可知,C语言的关系运算表达式和逻辑运算表 达式应该属于整型表达式范畴。
C语言课件 第5章

第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float
c语言程序设计第五版习题答案

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。
【解答】(1)语言简洁、紧凑,使用方便、灵活。
(2)数据类型丰富,表达能力强。
(3)运算符多样。
C语言中的运算符包含的范围非常广泛。
(4)具有结构化的控制语句。
如if…else语句、while语句、do while语句、switch 语句、for语句。
(5)允许直接访问物理地址。
C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。
(6)所生成的目标代码质量高,可移植性好。
2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。
一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。
3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。
二.运行程序写结果1.输入下面程序并运行。
main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。
main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=2003.输入下面程序并运行。
#include <stdio.h>main(){printf("******\n");printf(" *****\n");printf(" ****\n");printf(" ***\n");printf(" **\n");printf(" *\n");}【解答】运行结果为:*********************思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)说明 1 )逻辑运算符两侧的操作数,除可以是0和非0的整数 外,也可以是其它任何类型的数据,如实型、字符型等。 „a‟&&‟b‟ 2)在计算逻辑表达式时,只有在必须执行下一个表达式才 能求解时,才求解该表达式。
练习
5.3 if语句
if语句的三种形式
形式一:
格式:if (表达式)
表达式
=0
非0
语句
语句 执行过程:
例:if (x>y) 程序举例: printf(“%d”,x); 例:判断一个数是否是偶数,若是偶数则输出。
main() {int num1; printf(" Enter num1:"); scanf("%d",&num1); if (num1%2==0) printf("The %d is a event \n",num1); }
对于&&运算,如果第一个操作数被判定为“假”,系统不再判
定或求解第二操作数。 例:设 int n1=1,n2=2,n3=3,n4=4,x=1,y=1; 对于||运算,如果第一个操作数被判定为“真”,系统不再判 定或求解第二操作数。 (x=n1>n2)&&(y=n3>n4)执行后: (x=n2>n1)&&(y=n3>n4)
例如,假设int n1=3,n2=4,n3=5;则: (1)n1>n2 0 (2)(n1>n2)!=n3 1 (3)n1<n2<n3 1 (4)(n1<n2)+n3 6 再次强调: C 语言用整数“ 1” 表示“逻辑真”,用整 数“0”表示“逻辑假”。 关系表达式的值,还可以参与其它种类的运算.
5.2 逻辑运算及其表达式
运算规则 1)&&:当且仅当两个运算量的值都为“真”时,运算结果为 “真”,否则为“假”。 2) || :当且仅当两个运算量的值都为“假”时,运算结果为 “假”,否则为“真”。 3) ! :当运算量的值为“真”时,运算结果为“假”;当运 算量的值为“假”时,运算结果为“真”。 例: int x=5;
P89
a||b
例如,下面的表达式都是逻辑表达式:
真 真 假 假 真 真 (x>=0) && (x<10) ,(x<1) || (x>5) ,! (x= =0), 真 假 假 真 假 真 (year%4==0)&&(year%100!=0)||(year%400==0) 假 真 真 假 假 真 假 假 真 真 假 假
设计选择结构程序,要考虑两个方面的问题:一是
在C语言中如何来表示条件,二是在C语言中实现选择结
构用什么语句。 在C语言中表示条件,一般用关系表达式或逻辑表达 式,实现选择结构用if语句或switch语句。
本章内容:
5.1 关系运算及其表达式
5.2 逻辑运算及其表达式
5.3 if语句
5.4 switch语句 5.5 选择结构程序举例
形式三: 格式:
if (表达式1 )
else if (表达式2 ) else if (表达式3 )
语句1
语句2 语句3
执行过程:
=0
…...
[ else
语句n
]
例:if (salary>1000) tax=0.04; 非 0 if (salary>800) =0 tax=0.03; else 表达式2 else if (salary>600) tax=0.02; =0 非0 表达式3 else if (salary>400) tax=0.01; else 非0 tax=0;
2. 逻辑表达式 (1)逻辑表达式的概念 用逻辑运算符将1个或多个表达式连接起来,进行逻辑运 算的式子。用逻辑表达式表示多个条件的组合。 (year%4==0)&&(year%100!=0)||(year%400==0) (2)逻辑表达式的值 :逻辑值(非“真”即“假”)。 (3)逻辑量的真假判定──0和非0 !((year%4==0)&&(year%100!=0)||(year%400==0)) 用整数“1”表示“逻辑真”、用“0”表示“逻辑 假”。但在判断一个数据的“真”或“假”时,却以0 和非0为根据:如果为0,则判定为“逻辑假”;如果 为非0,则判定为“逻辑真”。 例: int n1=12,n2=-4;
}
例 判断输入字符种类 #include <stdio.h> main() { char c; printf("Enter a character:"); c=getchar(); if(c<0x20) printf("The character is a control character\n"); else if(c>='0'&&c<='9') printf("The character is a digit\n"); else if(c>='A'&&c<='Z') printf("The character is a capital letter\n"); else if(c>='a'&&c<='z') printf("The character is a lower letter\n"); else printf("The character is other character\n"); } 运行: Enter aa character : 运行: Enter : D 运行: 运行: Enter Enter a character acharacter : 8 : h 运行: Enter acharacter character : F1
关系表达式只能描述单一条件,例如“x>=0”。如果 需要描述“x>=0并且x<10”,就要借助于逻辑表达式。
1. 逻辑运算及其优先次序 (1)逻辑运算符及其运算规则 三种逻辑运算符: ! 逻辑非(相当于“否定” ) && 逻辑与(相当于“并且”) || 逻辑或(相当于“或者”)
逻辑 运算 真值表
a b !a !b a&&b
请动手操作: 输入任意三个整数num1、num2、num3,求三 个数中的最大值。
main() {int n1,n2,n3,max; printf(“Please input three numbers:”); scanf (“%d,%d,%d”,&n1,&n2,&n3); if (n1>n2) max=n1; else max=n2; if (n3>max) max=n3; printf("The three numbers :%d,%d,%d\n", n1, n2, n3); printf("max=%d\n",max); }
x x=0, = 1, y y = =1 0 例:设 int n1=1,n2=2,n3=3,n4=4,x=1,y=1; (x=n1>n2)||(y=n3>n4)执行后: x=0,y=1
表达式小结:
1.正确使用表达式 当描述单一条件时可使用关系表达式;如果要描述复合条 件,就要使用逻辑表达式。 2.关系表达式和逻辑表达式的值都是逻辑值。 3.逻辑值的表示 “1”表示“逻辑真”、“0”表示“逻辑假”。 4.逻辑值的判断 如果为0,则判定为“逻辑假”;如果为非0,则判 定为“逻辑真”。 5.运算符的优先关系 !→ 算术运算 → 关系运算 → &&→ || → 赋值运算
例 求分段函数的值
y=
1 0 -1
x>0 x=0 x<0
#include <stdio.h> main() #include <stdio.h> { int x,y; main() printf("Enter an integer:"); { scanf("%d",&x); int x,y; printf("Enter an integer:"); if(x<0) y=-1; scanf("%d",&x); else if (x==0)y= 0; if(x<0) else y=-1; y=1; printf("\ninteger:%d---> value:%d\n",x,y); if (x==0)y= 0; } else y=1; 运行: Enter an integer:-12 printf("\ninteger:%d---> value:%d\n",x,y); integer:-12---> value :-1
语句1 语句2 语句3 语句n
表达式1
说明: if后面的表达式类型任意 if(x) if(x!=0) if(!x) if(x==0) 语句可以是复合语句 如: 例 考虑下面程序的输出结果 if(a==b&&x==y) printf(“a=b,x=y”); : #include if(3) <stdio.h> printf(“OK”); main() if(„a‟) printf(“%d”,‟a‟); { int x,y; scanf(“%d,%d”,&x,&y); if(x>y) x=y; y=x; else Compile Error! x++; y++; printf(“%d,%d\n”,x,y); }