第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程序控制结构
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 遍历结构: 语句块
语句块
第4章 程序控制结构
4.1 顺序结构程序设计
4.1.4 数据的输入
InputBox函数的定义格式: 变量=InputBox(<提示项> [,<标题>][,<缺省>] [,<x坐标位置>][,<y坐标位置>]) 功能:产生一个对话框,等待用户键入文本或选择一个按钮后, 将会返回对话框中文本框的内容。 使用说明: (1)<提示项>为字符串表达式,不能省略,在对话框中作为显示信 息。 (2)<标题>为字符串表达式,是对话框的标题。若缺省,则默认显 示应用程序名在标题栏中。 (3)<缺省>为字符串表达式,用来作为对话框中用户输入区域的默 认值,一旦用户输入数据,则该数据立即取代默认值,若省略该参 数,则默认值为空白。
4.1.2
Print方法(2)
逗号(,):各输出项按分区格式输出,即将一个输出行以14 个字符的宽度为单位分成若干区段(称为“打印区”),每个区 段输出一个表达式的值。 如果调用Print方法的语句以分号或逗号结束,则下一次执行 Print方法时将在同一行输出;否则,每执行一次Print方法即自 动换行。
4.2 选择结构程序设计
4.2.1 简单的分支结构
简单分支结构分为单分支选择结构和双分支选择结构语句形式。 1.单分支选择结构 格式一: If <表达式> Then <语句块> End If 格式二: If <表达式> Then <语句> 功能:先计算<表达式>的值,若值 为True,则执行<语句块>或<语句>操 作,否则跳过<语句块>或<语句>操作 ,直接执行End If后面的语句。
程序的控制结构
第四章VB程序的控制结构4.1算法概论1.算法的概念算法:指用计算机解决某一问题的方法和步骤。
数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。
非数值算法:用于对非数值信息进行查找、排序等。
2.算法的特征(1)确定性:指算法的每个步骤都应确切无误,没有歧义。
(2)可行性:指算法的每个步骤必须是计算机能够有效执行、可以实现的,并可得到确定的结果。
(3)有穷性:指一个算法应该在有限的时间和步骤内可以执行完毕的。
(4)输入性:指一个算法可以有0或多个输入数据。
(5)输出性:指一个算法必须有一个或多个输出结果。
3.算法的评价主要评价指标是:算法是否正确、运行的效率、占用系统资源的多少。
4.算法的描述一般常用流程框图来描述算法。
5.基本算法结构“结构化程序设计方法”规定算法有三种基本结构:顺序结构、选择结构和循环结构6.算法示例(1)欧几里德算法——求两个自然数的最大公约数(2)顺序查找算法——在N个字符串集合中,查找有无特定的字符串存在4.2顺序结构1.赋值语句赋值语句是任何程序设计中最基本的语句,赋值语句都时顺序执行的。
赋值语句的形式为:变量名= 表达式它的作用是计算右边表达式的值,然后赋给左边的变量,表达式的类型应该与变量名的类型一致。
2. 使用说明(1)当表达式为数值型而与变量精度不同时,强制转换成左边变量的精度;(2)当表达式是数字字符串,左边变量是数值类型,自动转换成数值类型再赋值,但当表达式中有非数字字符或空串,则出错。
(3)任何非字符类型赋值给字符类型,自动转换为字符类型;(4)当逻辑型赋值给数值型时,T rue转换为-1,Fa ls e转换为0;反之,非0转换为Tru e,0转换为F a ls e;(5)赋值号左边的变量只能是变量,不能是常量、常数符号、表达式,否则报错;(6)不能在一句赋值语句中,同时给各变量赋值;(7)在条件表达式中出现的=是等号,系统会根据=号的位置,自动判断是否为赋值号;(8)注意N=N+1 是累加中常见的赋值语句,表示将N变量中的值加1后再赋值给N。
第四章结构化程序设计控制结构
•
PRINT*,‘X1=’,X1,’,X2=’,X2
•
40 RETURN
• END SUBROUTINE
3. IF 块
IF 块的构造形式为:
•
IF condition THEN
•
block1
•
[ELSE
•
blockE]
•
END IF
其中,condition是一个逻辑表达式,其结果不外乎真或假。 block1 和 blockE是语句块,当条件为真,block1 被执行; 否则,blockE 被执行。ELSE 块是可选的。
•
[CASE DEFAULT
•
blockD]
•
END SELECT
其中expr 必须是整型、字符型或者逻辑型变量。Selector 可以是同一类型, 非交叉的值或值范围(:用来规定值的范围)的列表。用CASE块统计 学生得分如下:
SELECT CASE ( INT(Final))
•
CASE (90:)
•
case default
•
PRINT*,‘Consonant’
•
END SELECT
•
ELSE
•
PRINT*,‘Something else’
CASE块的构造形式为:
•
SELECT CASE (expr)
•
CASE (selector1)
•
block1
•
CASE (selector2)
•
block2
•
D=D+1
•
ELSE
•
F=F+1
•
END IF
程序执行一旦发现某个逻辑条件为真,就不会再去判断其他
第4章程序的控制结构PPT课件
{
语句;
表达式3;
}
22
注意
在for和while语句之后一般没有分号 有分号表示循环体就是分号之前的内容(空循
环体)
while (i < 100); i++;
for (i = 0; i < 100; i++); printf("%d", i);
for通常ቤተ መጻሕፍቲ ባይዱ一个循环变量控制循环的次数,不 要在循环体内改变这个变量
else部分可以没有。 if (表达式) 语句1; 语句3
当表达式值为0时,直接执行语句3
if-else嵌套使用时,注意else和谁配对的问 15
else-if
if的一种扩展形式
if (表达式) 语句1;
else if (表达式) 语句2;
else if (表达式) 语句3;
…………
else
}
20
while
while (表达式) { 语句; }
只要表达式的值为非0,就重复执行语句, 直到表达式值为0时止
21
fforor(表达式1; 表达式2; 表达式3)
{ 语句;
} 首先执行表达式1。如果表达式2的值为非0,
就重复执行语句和表达式3,直到表达式2的值 为0时止
相当于: 表达式1; while (表达式2)
用3种方法编程:
算法1:用不带else子句的if语句编程
17
switch
多路选择 switch (表达式)
{ case 常数1: 语句序列1; case 常数2: 语句序列2; ………… default: 语句序列3;
}
default可以没有,但最好不省略
- 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