第4章程序的控制结构资料
合集下载
第4章 C语言程序的基本控制结构

#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B
真
表达 式
假
条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)
C语言-程序控制结构

=常量2 =常量3 =常量n
语句2
语句3 …… 语句n
=其它 语句n+1
Page 28
C语言
第4章 程序控制结构
程序设计
switch语句举例
例4.9:输入成绩等级,打印出百分制分数段。
#include <stdio.h>
void main( )
{ char c;
printf("Please enter a char\n");
功能:将“=”右侧表达式的值赋给左侧 变量的值。
函数调用语句;
如: putchar(ch);
Page 5
C语言 程序设计
第4章 程序控制结构
空语句和复合语句
空语句:仅由一个分号构成的语句,在执行时
不产生任何指令。
复合语句:用一对花括号{ }将多个语句括起来
构成一个整体。
❖复合语句中的每个语句必须以分号结束,但右花括号} 后不能有分号
if( a>b)
{ t=a; a=b; b=t; } /*两个变量交换数据*/
printf("%f,%f\n",a,b);
}
若不使用复合语句,
则可用t=a, a=b, b=t; Page 17
C语言 程序设计
第4章 程序控制结构
if 语句的形式3—多分支结构
入口
格式: if (表达式1) 语句1
else if (表达式2) 语句2
解法一:用多分支if 语句
-1 (x<0)
#include <stdio.h>
void main ( )
{ int x,y;
scanf("%d",&x);
C语言程序控制结构资料

scanf("%d,%d", &num1, &num2);
sum=(float)num1+num2; /*求累计和*/
aver=sum/2.0;
/*求平均值*/
printf("sum=%.0f, aver=%.2f\n", sum,
aver);
}
运行情况:
30000,5005
sum=35005, aver= 17502.50
C语句:以“;”作结束符,编译后产生机器指令。 C语句分类:
表达式语句 空语句 控制语句 复合语句
3
4.1.1表达式语句
表达式语句是在表达式的末尾加上分号构成的语句。
z=x+sin(y);
如:
a-=a*a;
赋值语句
printf("This is a C
i++;
自增1语句
statement.");
运行情况:
输入: a=1, b=3, c=2 输出: x1=-1.00
x2=-2.00
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q; x2=p-q;
printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
x=0,y=1;
逗号表达式语句 func(a,5);
x+y;
无意义
y=max(a,b);
printf(“This is a C program.\n”); 函数调用语句
第4章程序的控制结构

c9: switch ( nscore ) c10: { c11: case 0: c12: case 1: c13: case 2: c14: case 3: c15: case 4: c16: case 5: { chscore = 'E'; } c17: case 6: { chscore = 'D'; } c18: case 7: { chscore = 'C'; } c19: case 8: { chscore = 'B'; } c20: case 9: c21: case 10: { chscore = 'A'; }
【例4.1】 任意输入两个不同的整数,输出其中较大的一个。 #include<stdio.h> void main( )
{ c4: int x, y; c5: printf( "\n Input two numbers: \n" ); c6 : scanf( "%d%d", &x, &y ); c7 : if ( x > y ) c8 : { printf( "max = %d \n", x ); }
c4: int nscore; c5: char chscore; c6: printf( "\n input Score ( 0 ~~ 100 ): \n" ); c7: scanf( "%d", &nscore ); c8: nscore /= 10; // 变换后,nscore 的值是0~10之间的整数 c9: switch ( nscore ) c10: { c11: case 0: c12: case 1: c13: case 2: c14: case 3:
第4章程序的控制结构.ppt

图
输出depoist
结束
2020/2/7
16
C语言大学实用教程 #include <math.h>
()
#include <stdio.h>
3
main()
根{
据
int n;
流
double rate=0.0225;
程
double capital,deposit;
图
printf("please enter year,capital:");
【例】
{
int a, b, max; 表达式1 ? 表达式2 : 表达式3
printf("Input a, b:"); scanf("%d,%d", &a, &b);
} if (a > b) max = a; else
max = b;
max = a > b ? a : b;
printf("max = %d", max);
编
scanf("%d%lf",&n,&capital);
程
deposit=capital*pow(1+rate,n);
printf("deposit=%lf\n",deposit);
}
2020/2/7
17
C语言大学实用教程
简单的C程序结构框架
以#开始的编译预处理命令
main()
{ 局部变量说明语句;
2020/2/7
34
C语言大学实用教程
使用 if 语句需注意事项
(1)条件判断表达式一定用圆括号括起。 (2)复合语句必须用{}引起。 (3)每一个else必须与一个if项匹配。 (4)else总是与离它最近的if 相匹配。
第4章VisualBasic程序控制结构

Private Sub Form_Click() Dim L As Single, s As Single,v As Single r = 1.8: h = 4 Const pi = 3.14159 L = 2 * pi * r s = pi * r * r v=s*h Print "圆周长="; Format(L, "0.000") Print "圆面积="; Format(s, "#.###") Print "圆柱的体积="; Format(v, "#.###") End Sub
4.1.3注释语句
为了提高程序的可读性,通常应在程序的适当位置加上必要的注释,
Visual Basic中的注释是“Rem”或“’”,一般格式为:
Rem
’
例如:Rem 交换变量a和b的值
c = a ´c
a = b:b = c
说明:
注释语句是非执行语句,仅对程序的有关内容起注释作用,它不
被解释和编译,但在程序清单中能被完整地列出。
赋值语句是在任何程序设计中最基本、最常用的语句。 它的作用是把计算右边表达式的运算结果赋值给左端的变量,Visual Basic使用赋值号“=”来赋值。
格式: [Let] 变量名=表达式 [Let] [<对象名.>]<属性名>=<表达式> 其中:Let表示赋值语句的关键字,通常可以省略。 功能:赋值语句具有计算和赋值的双重功能,它首先计算右端 的表达式,并把结果赋值给左边的变量,Visual Basic使用赋值号“=” 来赋值。 表达式:其类型应与变量名的类型一致,即同时为数值型或同 时为字符型等等。当两边同为数值型,但精度不同时,强制转换成 左边的精度,然后赋值。
4.1.3注释语句
为了提高程序的可读性,通常应在程序的适当位置加上必要的注释,
Visual Basic中的注释是“Rem”或“’”,一般格式为:
Rem
’
例如:Rem 交换变量a和b的值
c = a ´c
a = b:b = c
说明:
注释语句是非执行语句,仅对程序的有关内容起注释作用,它不
被解释和编译,但在程序清单中能被完整地列出。
赋值语句是在任何程序设计中最基本、最常用的语句。 它的作用是把计算右边表达式的运算结果赋值给左端的变量,Visual Basic使用赋值号“=”来赋值。
格式: [Let] 变量名=表达式 [Let] [<对象名.>]<属性名>=<表达式> 其中:Let表示赋值语句的关键字,通常可以省略。 功能:赋值语句具有计算和赋值的双重功能,它首先计算右端 的表达式,并把结果赋值给左边的变量,Visual Basic使用赋值号“=” 来赋值。 表达式:其类型应与变量名的类型一致,即同时为数值型或同 时为字符型等等。当两边同为数值型,但精度不同时,强制转换成 左边的精度,然后赋值。
第04章 程序的控制结构

第 4 章
程序的控制结构
计算机中的问题求解过程
Example :银行定期存款 已知年利率rate,存款期为n年,本金为capital,n年后得 到的本利之和是多少?
Input
• 存款年数 • 本金 •利率
Process
deposit = capital* (1+rate)n
Output
deposit
Page 3
C语言程序设计
第 4 章
程序的控制结构
算法的概念及其描述方法
一个程序应包括两个方面的内容:
对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm)
著名计算机科学家沃思提出一个公式:
数据结构 + 算法 = 程序
计算机中的算法( Algorithm )
}
_ 15 Input a,b: 20
没有输入或有多个输入 有一个或多个输出
计算机与信息工程学院
Page 5
C语言程序设计
第 4 章
程序的控制结构
算法的描述方法
自然语言描述
传统流程图(Flowchart)
在1966年,Bohra 与 Jacopini 提出
N-S结构化流程图
1973年,美国学者I.Nassi 和 B.Shneiderman 提 出
为解决一个具体问题而采取的确定的有限的操作
步骤,仅指计算机能执行的算法。
计算机与信息工程学院
Page 4
C语言程序设计
第 4 章
程序的控制结构
算法的特性
有穷性 在合理的时间内完成 确定性,无歧义
第4章 程序的控制结构

条件 ? 是
语句块
例:
s = eval(input("请输出一个整数:")) if s % 2 == 0:
print("这是个偶数") print("输入数字是 :", s)
输入一个整数
否 S%2==1? 是
打印这是个奇数
输入的整数是:
Python语言中,任何非零的数值、非空的数据类型都等价于True,0等价于False,可以直 接用作判断条件。
4.1.3 二分支结构: if-else语句 Python的二分支结构使用if-else保留字对条件进行判断,
语法格式为:
if 条件: 语句块1
else: 语句块2
否 语句块2
条件 ? 是
语句块1
语句块1在if中条件满足即为True时执行,语句块2在if中条件不满足即为False时执行。 简单说,二分支结构根据条件的True或False结果产生两条路径。
第四章 程序的控制结构
老师:李挺 联系:chaoxiangteacherli
第四章 控制结构
4.1 分支结构
判断条件及组合 单分支结构 二分支结构 多分支结构
4.2 循环结构 4.3 异常处理
遍历循环 无限循环 循环控制
4.1 程序的分支结构
4.1.1判断条件及组合
分支结构中的判断条件可以使用任何能够产生True或False的语句或函数。形成判断条件最 常见的方式是采用关系操作符
4.2 循环结构
Python语言的循环结构包括两种:遍历循环和无限循环。
4.2.1 遍历循环: for
使用方式: for 循环变量 in 遍历结构: 语句块
语句块
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h> #include<math.h> void main() {float a,b,c,s,area; scanf(“%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“a=%7.2f,b=%7.2f,c=%7.2f,
2020/10/9
3
算法的分类
数值运算算法: –解决的是求数值解的问题,例如用辗
转相除法求两个数的最大公约数等
非数值运算算法: –主要用于解决需要用分析推理、逻辑
推理才能解决的问题,例如人工智能中 的许多问题,查找、分类等问题
2020/10/9
4
算法特性:
–有穷性 –确定性 –有效性 –没有输入或有多个输入 –有一个或多个输出
2020/10/9
函数首部
函数体
局部变量声明 执行语句
8
构成程序的三基本结构
顺序结构 选择结构 循环结构 已经证明,任何程序均可只用这三种结构综 合描述 只用这三种结构编制的程序,叫结构化程序 程序必须符合结构化规则
2020/10/9
9
顺序结构
A
B
2020/10/9传统流程图
A
B NS图
10
分支结构(选择结构)
16
枚举法
思路:依次取cocks值域中的值,求其余两 个数(hens、chicks),看是否复合题意 算法描述:
cocks=0; 当cocks<=19时 {
寻找满足题意的hens、chicks的值; cocks++; }
2020/10/9
17
cocks=0; 当cocks<=19时 {
寻找满足题意的hens、chicks的值; cocks++; }
2020/10/9
5
算法的表示方法
自然语言表示 传统的流程图表示 N-S结构化流程图表示 伪代码表示
2020/10/9
6
N-S流程图用以下的流程图符号:
(1)顺序结构
(2)选择结构
2020/10/9
(3)循环结构
7
C程序结构
C程序
源程序文件1
源程序文件2
源程序文件3
编译预处理命令 全局变量声明 函数1 … 函数n
s运3=,行%47情,.2况6f\:n”,a,b,c,s); pa=rint3f.(0“0,areba=%7.42.f0\0n,”,ca=rea)6;.}00, area= 2020/10/9 5.33
数学函数库 因为要用到 其中的sqrt
函数
s= 6.50
25
例3 求根 p83
例4.12 求ax2+bx+c=0方程的根。
A
直到P为假
A
直到P为假
14
结构化程序设计的核心思想
采用顺序、选择和循环三种基本结构作为程 序设计的基本单元 – 只有一个入口;只有一个出口; – 无死语句,即不存在永远都执行不到的语句; – 无死循环,即不存在永远都执行不完的循环。 采用“自顶向下、逐步求精”和模块化的方 法进行结构化程序设计
2020/10/9
a,b,c由键盘输入,设 b2 4>ac 0。 众所周知,一元二次方程式的根为
x1= b b2 4axc2=
2a
如果(5*cocks+3*hens+chicks/3=100)则输出;
hens++;
}
cocks++;
} 2020/10/9
19
void main() { int cocks=0,hens,chicks;
while (cocks<=19)
经过调试运行,可 以得到4组解
{ hens=0;
while (hens<=33)
2020/10/9
23
例2 求三角形面积
例:输入三角形的三边 长,求三角形面积。
假设:三个边长a,b,c能构 成三角形。 已知面积公式: area= s(s a)(s b)(s c) s=(a+b+c)*0.5
2020/10/9
开始 输入三边长
计算s 计算面积
结束
24
例2 求三角形面积(p74 3.5)
2020/10/9
21
例1 求本利和 p80
存款利率rate 存款年份n 本金capital
计算n年之后本利和?
2020/10/9
22
算法描述: Step1:输入本金capital和存款年份n; Step2:计算本利和deposit – deposit=capital*(1+rate)n
Step3:输出n年后本利和
{ chicks=100-cocks-hens;
if (5.0*cocks+3.0*hens+chicks/3.0==100.0)
printf(“%d,%d,%d\n”,cocks,hens,chicks);
hens++;
}
cocks++;
}
}2020/10/9
20
4.2 顺序结构
最简单的C程序结构 完全按照语句出现的先后顺序执行程序 程序=算法+数据结构
第4章 程序的控制结构
内容提要
算法的描述方法 基本控制结构 基本控制语句 常用算法,如累加、累乘、统计、递推 、迭代、穷举等 程序的基本版式 结构化程序设计的基本思想
2020/10/9
2
算法的概念
数据结构+算法=程序 算法:为解决一个具体问题而采取的确 定的有限的操作步骤,这里仅指计算机 能执行的算法。
15
“百鸡问题”
– 鸡翁一值钱五,鸡母一值钱三,鸡雏三值
钱一。百钱买百鸡,问鸡翁、母、雏各几 何?(体会编程步骤)
– cocks+hens+chicks=100 – 5*cocks+3*hens+chicks/3=100
– 0≤cocks≤19 0≤hens≤33
2020/10/9
0≤chicks≤19
cocks=0;
当cocks<=19时
{
hens=0;
当hens<=33时
{寻找满足题意的chicks的值
hens++;
}
cocks++;
} 2020/10/9
18
cocks=0;
当cocks<=19时
{
hens=0;
当hens<=33时
{/*寻找满足题意的chicks的值*/
chicks=100-cocks-hens;
Y
N
条 件P
A
B
如果 成条绩件<6P0 那么
Y通知补考
否则A
B
告知你考试成绩
2020/10/9
11
循环结构
条 假件P 假
真
A
A
假
条 件P
真
当型循环 2020/10/9
直到型循环
12
循环结构
条 假件P 假
真
A
当型循环 2020/10/9
当P为真
A
当P为真
A
13
循环结构
A
假
条 件P
真
直到型循环 2020/10/9