第三章 基本控制结构程序设计汇总
第3章 算法的基本控制结构

C程序设计与应用教程 3.1 C语句概述
3.1.1 C语言的基本语句 2.控制语句 表3-1 C语言的控制语句汇总 if~else switch( )~ while( )~ do~while( ) for( )~ continue break return goto
选择结构 条件语句 控制 开关语句 while循环语句 循环结构 do循环语句 控制 for循环语句 结束本次循环语句 其它控制 终止执行switch或循环语句 语句 从函数返回语句 转向语句
在C语言的基本数据类型中,没有逻辑型。C语言规定: 任何非0的数据都是“真”,0为“假”。逻辑运算的运 算结果和关系运算的结果一样,为“真”即为1,为“假” 即为0。
表达式中如果出现了多个逻辑运算符,C语言规定其优 先级次序为:!最高,&&次之,||最低。逻辑运算符具 有自左至右的结合性。
C程序设计与应用教程 3.3 选择结构的流程控制
C程序设计与应用教程 3.1 C语句概述
3.1.2 三种基本结构和流程控制语句
S1 S2
Y S1
条 件
N S2
条 件Y S1
N
(a)
(b)
(c)
图3-1 三种基本的结构
C程序设计与应用教程 3.1 C语句概述
3.1.2 三种基本结构和流程控制语句
C语言中的语句是按它们在程序中出现的顺 序逐条执行的; 选择结构的实现有if语句和switch语句; 循环结构的实现有while语句、do~while语 句和for语句。
表达式 真 语句
假
图 3-2 不 含 else 的if 语句的执行 流程
C程序设计与应用教程 3.3 选择结构的流程控制
3.3.2 if 语句 比较如下①②两种情况,哪个可以真正实现:如果 x小于y,则交换x和y的值?why???
第3章-2_程序的控制结构

22
#include<stdio.h> #include<math.h> void main() { float x,y; printf("please input x:\n”); scanf("%f”,&x); if(x<0) y=fabs(x); else if(x<2) y=sqrt(x+1); else if(x<4) y=pow(x+2,3); else y=2*x+5;
2012-8-11 24
switch
多路选择
switch (表达式) { case 常数1: 语句序列1; 语句序列1; case 常数2: 语句序列2; 语句序列2; ………… default: 语句序列n; 语句序列3; } default可以没有,但最好不省略 不要忘记break
25
2012-8-11
4
如何设计结构化的程序?
Top-down, Stepwise refinement 自顶向下、逐步求精 1971年,wirth提出的结构化程序设计方法 – 先全局后局部 – 先整体后细节 – 先抽象后具体
2012-8-11
5
自顶向下、逐步求精的 结构化程序设计方法
A11
有穷性 – 在合理的时间内完成 确定性,无歧义 – 如果x≥0,则输出Yes;如果x≤0,则输出No; 有效性 – 能有效执行 – 负数开平方 没有输入或有多个输入 有一个或多个输出
2012-8-11 8
算法的分类
数值运算算法: –解决求数值解问题 非数值运算算法: –需要用分析推理、逻辑推理才能解决的问题 –例如人工智能中的许多问题,查找、分类等
第三章 基本控制结构程序设计

第三章 基本控制结构程序设计结构化程序设计的特点是任何程序都可由三种基本结构及其组合来描述。
本章将介绍分支结构和循环结构的设计方法。
这两种结构分别用C++提供的两个流程控制语句分支语句和循环语句来实现。
所谓流程控制语句,是专门用来控制程序执行流程的语句,也称为过程化语句。
在介绍分支语句、循环语句及其程序设计的同时,还将介绍一些常用算法,并通过实例实践结构化程序设计的方法。
3.1 分支结构程序设计分支结构程序设计通过分支语句实现。
3.1.1 if 语句if 语句称为分支语句,或条件语句,其功能是根据给定的条件,选择程序的执行方向。
if 语句的基本格式为:if (表达式) 语句1; else 语句2;其中的表达式称为条件表达式,可以是C++中的任意合法表达式,如算术表达式、关系表达式、逻辑表达式或逗号表达式等。
语句1和语句2也称为内嵌语句,在语法上各自表现为一个语句,可以是单一语句,也可以是复合语句,还可以是空语句。
该语句的执行流程是,先计算表达式的值,若表达式的值为真(或非0),则执行语句1,否则(表达式的值为假,或为0),执行语句2。
分支语句在一次执行中只能执行语句1或语句2中的一个。
如果语句2是空语句,else 也可以省略。
这种情况下当条件表达式的值为假时,将不产生任何操作,直接执行分支语句之后的语句。
例如,对于下列分支函数:⎩⎨⎧≥+<=0x x 3x 0 x 0 y 3用if 语句可以描述为:if (x<0) y=0;else y=x*x*x+3*x;也可以这样描述:y=0;if (x>=0) y=x*x*x+3*x;这种描述的思想是,令y 的值为0,如果x>=0,重新计算y 的值,否则(即x<0),y 的值不变。
【例3.1】 输入一个年份,判断是否为闰年。
分析:假定年份为year, 闰年的条件是:year%4==0&&year%100!=0||year%400==0。
C语言高教版第3版第三章三种基本控制结构上课件

„a‟<‘b‟ <‘c‟
关系表达式的值是一个逻辑值,即 【例2.18】判断以下关系表达式的值。 • “真”或“假”。 当 a = 3, b = 2, c = 1,请判断表达式的值 C语言没有逻辑型数据,以1代表“真”, 1. a > b 以“0”代表“假”。 1
2. (a > b) == c
只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
结果m=0,n=1
【例】逻辑表达式的短路特性。例
复杂逻辑条件的表述
• 判断某一年year是否为闰年 1. 闰年 (year%4==0 && year%100!=0)||(year%400==0)
! 优先级:第2级 结合方向:自右向左
&&
||
优先级:第11级 结合方向:自左向右
优先级:第12级 结合方向:自左向右 /* 等价于(a<=x) && (x<=b)*/ /* 等价于(a>b)&&(x>y) */ /* 等价于 (a==b)||(x==y) */ /* 等价于(!a)||(a>b) */
有一个或多个输出
二、算法的描述工具
自然语言
(通俗易懂, 文字冗长, 容易有“歧义性”)
流程图
(灵活, 自由, 形象, 直观, 易理解, 占篇幅大)
N-S图
(新型流程图, 简洁)
伪代码
(介于自然语言和计算机语言之间, 中英文皆可,格式 自由, 易修改, 不直观, 不容易发现逻辑错误)
计算机语言
(用计算机实现算法, 可以执行出结果, 比如 C 语言)
Python程序设计第3章+程序控制结构

3.1 程序的基本结构
图3-1 流程图的7种基本元素
3.2 顺序结构
顺序结构是程序的基础,是程序设计中最简单的,只要按照解决问题的 顺序写出相应的语句就可以。它的执行从上而下,依次执行,如图3-2所示。
图3-2 顺序结构的流程图
【例3.1】计算军犬速度
军犬的耐力是非常有名的。有关资料 显示,第一次世界大战期间为传达命令, 一只军犬50分钟跑完了21.7km的路程。算 一算,这只军犬平均每分跑多少米?
3.5 实例:控制结构灵活运用
3.5.2 猜数字游戏
【例3.7】编写猜数字游戏程序。
#猜数字游戏 import random x=random.randint(1,10) for i in range(1,4):
m=eval(input("请输入一个整数:")) if x == m:
print("恭喜,猜对了,一共猜了{}次".format(i)) break elif m<x: print("猜小了") else: print("猜大了") if i == 3: print("游戏结束")
根据会员情况,输出最后应付的金额。
#不同消费者买单3 #会员编号(2:金卡会员,1:普通会员,其他:非会员) #不同的会员消费者买单 consume=eval(input(“请输入消费额:”)) flag=int(input(“请输入会员编号:”)) if flag == 2:
consume *= 0.9 elif flag ==1:
consume *= 0.95 else:
consume *= 0.99 print("用户应付费: {:.2f}".format(consume))
C语言程序设计基础讲解PPT第3章(第二讲)

14
与 哪 个 if 配 对 ? ⑶ if (c<=100) if (c>=50) printf("50<=c<=100\n"); else printf("c<50\n")
2019/1/8
再例如:
if(a>b) if(a>c) if(a>d) m=1; else m=2; else m=3; 问题:哪一个 else 和哪一个 if 相匹配?
24
2019/1/8
注意:
25
switch语句的书写格式:语句体本身必须用花括 号括起;case和default后面如果有多条语句, 则可以不必使用花括号;case和常量表达式之 间必须有空格;default可以写在语句体的任何 位置,也可以省略不写 break语句可以改变case的语句标号作用,终止 后续case语句序列的执行。 switch语句和break 语句结合,可以实现程序的选择控制(break语 句还可以在循环语句中使用) 允许switch嵌套使用,但同一个switch语句中, 任意两个case的常量表达式值不能相同。
2019/1/8
程序:
#include "stdio.h" main( ) { char ch; ch=getchar( ); if (ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch ); } 可使用条件表达式代替
程序运行情况如下: putchar(ch>='A' && ch<='Z' ? ch+32:ch); G putchar (' \n') g
第3章 程序控制结构

if嵌套语句也可以实现多分支的选择问题,但如果分支较 多,程序代码行数也随之曾多,从而降低了程序的可读性, 造成程序容易产生错误。C语言提供了switch语句可以解决 这一问题,switch语句直接处理多分支选择,而且可读性 较好。它的一般形式如下:
switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; … case 常量表达式n: 语句n; break; default: 语句n+1; }
T
条件是否成立
F
F
T 语句序列
语句2
语句1
语句2
结束
结束选择
循环结束
3.2 语句
程序的执行部分是由语句构成的。执行 语句的过程就是实现程序功能的过程。语 句是C语言的基本执行单位。
3.2.1声明语句
声明语句主要用来说明合法标识符, 以便能在程序中合法使用它们。在C 语言程序设计中,任何用户自定义 的函数、变量和符号常量都必须遵 循先声明后使用的原则。 声明语句的语法格式如下: 数据类型符 用户标识符;
多分支结构流程图
表达式1
T
语句1
F
表达式2 1
T
语句2 1
F
表达式3
T
语句3
F
表达式n
T
语句n
F 语句 F n+1
输入百分制成绩,输出对应成绩等级
#include <stdio.h> void main() { int m; printf("Please input mark:"); scanf("%d",&m); if(m>=90) printf("A\n"); else if(m>=80) printf("B\n"); else if(m>=70) printf("C\n"); else if(m>=60) printf("D\n"); else }
基本控制结构程序设计

基本控制结构程序设计程序设计的基本控制结构是指控制计算机程序流程的一些基本结构。
这些结构包括顺序结构、选择结构和循环结构。
通过合理地使用这些控制结构,可以实现复杂的程序逻辑和流程控制。
首先,顺序结构是程序中最简单的结构,也是最基本的结构。
程序按照代码的书写顺序依次执行,每行代码只执行一次。
此结构适用于简单的程序段,不需要进行任何判断,没有分支执行路径。
其次,选择结构用于根据条件的真假来选择执行特定的代码块。
在编程语言中,条件运算符和条件语句是实现选择结构的常用方式。
条件运算符通过判定条件的真假来选择执行其中的一次或多次操作。
条件语句根据条件的真假来选择执行不同的代码块。
常见的条件语句有if-else语句和switch语句。
if-else语句根据条件的真假来执行不同的代码块,如果条件为真,则执行if代码块,如果条件为假,则执行else代码块。
switch语句通过匹配不同的case来选择执行的代码块。
最后,循环结构是为了反复执行其中一段代码而设计的结构。
循环结构有两种常见的形式,分别是for循环和while循环。
for循环在已知循环次数的情况下使用,通过指定初始值、终止条件和迭代操作来控制循环次数和流程。
while循环则在未知循环次数的情况下使用,只要条件为真,就会一直执行循环体中的代码。
在循环结构中还经常使用break和continue语句来控制循环的中断和跳过。
1. 计算一个整数数组的平均值。
通过for循环遍历数组元素,累加求和,然后除以数组长度得到平均值。
2. 判断一个数字是否为素数。
使用for循环从2到该数字的平方根进行遍历,判断是否能被整除。
如果存在能被整除的数,则该数字不是素数。
3. 根据用户输入的分数输出其等级。
使用if-else语句对不同的分数范围进行判断,在不同的范围输出不同的等级。
4. 打印九九乘法表。
使用两个嵌套的for循环来遍历每个乘法表的元素,并格式化输出。
总结起来,基本控制结构程序设计是实现程序流程控制的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout<<"a="<<a<<'\t'<<"b="<<b<<'\t‘
<<"c="<<c<<endl;
if(a>b) max=a; else max=b;
ok if(c>max) cout<< “最大数为:”<<c<<endl;
ok
else cout<< “最大数为:”<<max<<endl; }
if 语句
ok
算法
• 1、输入购买件数count,设置单价price=80(元) • 2、根据count值确定折扣discount; • 3、实际售价amount=price*count*discount; • 4、输出amount的值。 算法细化: • 2.1、if(count<5)discount=1; • 2.2、if(count>=5&&count<10)discount=0.9; • 2.3、if(count>=10)discount=0.8;
ok
3.6 输入输出文件简介
3.1 分支结构程序设计
对程序的运行流程进行控制,主要通过执行专 门用来控制流程的语句来实现。流程控制语句也 称为过程化语句。分支语句是三种基本流程控制 语句之一。C++提供以下三种分支语句:
▪ if 语句 ▪ 条件运算符 “ ? : ” ▪ swith 语句
ok
3.1 分支结构程序设计
第三章 基本控制结构程序设计
结构化程序设计的特点是任何程序都可由三种基 本结构及其组合来描述。本章将介绍C++分支 结构和循环结构的设计方法。还将介绍一些常用 算法。
ok
第三章 基本控制结构程序设计
3.1 分支结构程序设计
3.2 循环结构程序设计
3.3 转向语句
3.4 常用算法的应用实例
3.5 枚举类型
3.1.1 if语句
3.1.2 条件运算符“?:”
3.2.1 swich语句
ok
3.1.1 if 语句
if语句有两种基本格式为:
1、if (<表达式>) <语句1>; 2、if (<表达式>) <语句1>
else <语句2>;
ok
if 语句
【例3.1】 输入一个年份,判断是否闰年。
算法分析:假定年份为year, 闰年的条件是 : year%4==0&&year%100!=0||year%400==0。
ok }
if 语句
【例3.2】 从键盘上输入三个整数,输出其中的最大数。
分析:读入三个数,先求出两个数中较大者,再将该大数与 第三个数比较,求出最大数。
#include <iostream.h>
void main(){
int a, b, c, max;
cout<<"输入三个正数:";
cin>>a>>b>>c;
<<'\t'<<"c="<<c<<endl;
if(a>b&&a>c) max=a;
else if(b>a&&b>c) max=b;
else max=c;
ok
ok
cout<<"最大数为:max="<<max; }
要特别注意else和if的配对关系。C++规定了 if和else的“就近配对”原则,即相距最近且还没 有配对的一对if和else首先配对。按上述规定,第 二种嵌套形式中的else应与第二个if配对。如果根 据程序的逻辑需要改变配对关系,则要将属于同一 层的语句放在一对“{}”中。如第二种嵌套形式中, 要让else和第一个if配对,语句必须写成: if (表达式1) { if (表达式2) 语句1 ; } else 语句2 ;
第二种是嵌套在if分支中为:
if (<表达式1>) if (<表达式2>) <语句1>;
ok
else<语句2>;
if 语句
【例3.3】用嵌套if语句完成【例3.2】的任务。
//方法1:采用if中嵌套形式
#include <iostream.h>
void main(){
int a, b, c, max;
<<endl; //语句2: if(n%3==0){
if(n%5==0) cout<<n<<″是15的倍数″<<endl; } else cout<< n <<″不是3的倍数″ ok 两个语句的差别只在于一个“{}”,但表达的逻辑 关系却完全不同。
if 语句
【例3.4】 某商场优惠活动规定,某种商品单 价为80元,一次购买5件以上(包含 5件)10件以下(不包含10件)打9 折,一次购买10件以上(包含10件) 打8折。设计程序根据客户的购买量计 算总价。
cout<<"输入三个正数:";
cin>>a>>b>>c;
cout<<"a="<<a<<'\t'<<"b="<<b
<<'\t'<<"c="<<c<<endl;
if(a>b) if(a>c) max=a; //a>b且a>c
else max=c; //a>b且a<c
ok
else if(b>c) max=b; //a<=b且b>c
ok
else max=c; //a<=b且b<c
cout<<"最大数max="<<max;}
if 语句
//方法2:采用else中嵌套形式
#include <iostream.h>
void main(){
int a,b,c,max; cout<<"输入三个正数:";
cin>>a>>b>>c;
cout<<"a="<<a<<'\t'<<"b="<<b
if 语句中,如果内嵌语句又是if语句,就构成
了嵌套if语句。if 语句可实现二选一分支,而嵌
套if语句则可以实现多选一的多路分支情况。
嵌套有两种形式,第一种是嵌套在else分支中:
if (<表达式1>) <语句1>;
else if (<表达式2>) 语句2;
else if …
else <语句n>;
第二种嵌套形式较容易产生逻辑错误,而第一 ok 种形式配对关系则非常明确,因此从程序可读性角
度出发,建议尽量使用第一种嵌套形式。
请看以下两个语句: //语句1: if(n%3==0) if(n%5==0) cout<<n<<″是15的倍数″<<endl; else cout<< n<<″是3的倍数但不是5的倍数″
#include <iostream.h>
void main( ){
int year; cout<<"输入年份:"<<endl;
cin>>year;
if (year%4==0&<year<<"是闰年"<<endl;
ok
else cout<< year<<"不是闰年"<<endl;