C语言教程第4章程序的控制结构.ppt
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图
printf("please enter year,capital:");
编
scanf("%d%lf",&n,&capital);
程
deposit=capital*pow(1+rate,n);
printf("deposit=%lf\n",deposit);
}
2020/4/30
14
C语言大学实用教程
语句;
} 相当于: 表达式1; while (表达式2)
{ 语句; 表达式3;
}
2020/4/30
38
C语言大学实用教程
有关 for 的说明(2)
在for和while语句之后一般没有分号 有分号表示循环体就是分号之前的内容(空循 环体)
while (i < 100); i++;
for (i = 0; i < 100; i++); printf("%d", i);
注意:
以#开头;每条一行;不是C语句
2020/4/30
16
C语言大学实用教程
编译预处理命令
查询情况 (1)用<>将头文件名括起,则在
include 子目录中查询 (2)用" "将头文件名括起,则先在
当前目录中查找若无继续搜索
C子目录。Biblioteka 2020/4/3017
C语言大学实用教程
常用函数对应的头文件
函数 数学函数 字符串函数 输入、输出函数 动态存储分配函数
有穷性 确定性 有效性 没有输入或有多个输入 有一个或多个输出
2020/4/30
3
C语言大学实用教程
算法的分类
数值运算算法:
解决的是求数值解的问题,例如用辗转相 除法求两个数的最大公约数等
非数值运算算法:
主要用于解决需要用分析推理、逻辑推理 才能解决的问题,例如人工智能中的许多 问题,查找、分类等问题
2020/4/30
30
C语言大学实用教程
4.4 循环结构
引入循环的目的:简化程序、提高编程效率
三种循环方式
当型循环 直到型循环 步长型循环
2020/4/30
31
C语言大学实用教程
循环结构的流程图
条 假件P 假
真
A
A
假
条 件P
真
当型循环
2020/4/30
直到循环
32
C语言大学实用教程
循环语句——while
画 出
输入n和captial
流
程
depoist=captial*(1+rate)n
图
输出depoist
结束
2020/4/30
13
C语言大学实用教程 #include <math.h>
()
#include <stdio.h>
3
main()
根{
据
int n;
流
double rate=0.0225;
程
double capital,deposit;
else 语句n;
2020/4/30
23
C语言大学实用教程
分支嵌套
一般形式: if (表达式1) if (表达式2)语句1; else 语句2;
else if (表达式3)语句3; else 语句4;
2020/4/30
24
C语言大学实用教程
使用 if 语句需注意事项
(1)条件判断表达式一定用圆括号括起。 (2)复合语句必须用{}引起。 (3)每一个else必须与一个if项匹配。 (4)else总是与离它最近的if 相匹配。
C语言大学实用教程
用 switch语句构成的多分支结构
多路选择 switch (表达式)
{ case 常数1: 语句序列1; case 常数2: 语句序列2; ………… default: 语句序列3;
} default可以没有,但最好不省略 不要忘记break
2020/4/30
28
C语言大学实用教程
26
C语言大学实用教程
例: 计算并输出下列分段函数值
y= 0 x0 1 x>0
# include <stdio.h> main()
{float x,y;
printf("input x:");
scanf("%f",&x);
y=0;
if(x>0) y=1;
2020/4/30
printf("y=%f\n",y);} 27
C语言大学实用教程
简单分支选择(单分支)结构
条件成立否 no yes 语句A
条件表达式
.T.
.F.
语句
格式:
2020/4/30
if (表达式) 语句/语句组;
20
C语言大学实用教程
双分支选择结构
条件表达式
.T.
.F.
语句1
语句2
格式: If (表达式) 语句1/语句组1; else 语句2/语句组2;
头文件名 math.h string.h stdio.h stdlib.h/malloc.h
2020/4/30
18
C语言大学实用教程
4.3 选择结构
问题的提出: 作用:根据条件控制程序流向。
条件的组成: 各种类型的常量、变量、表达式
(常用:关系/逻辑表达式)
注意各种表达式的用法
2020/4/30
19
流
r=1.5;
程 图
l=2*PI*r;
编
s=PI*r*r;
程
printf("\nl=%f,s=%f",l,s);
2020/4/30
}
11
C语言大学实用教程
顺序结构——应用举例(2)
例4.1 设银行存款利率rate为2.25%,存款期为n 年,本金为captial元,编程计算n年后的本利之 和deposit
如: for(; i<=5 ;)
2020/4/30
40
C语言大学实用教程
例:给定一组数据如下,编程对负数求和。 12,45,67.8,-12.5,-35.67,567.89
main() {float x,sum;
方法1:用 while
scanf("%f",&x);
while(x!=9999)
{ if (x<0.0) sum+=x;
if(x<0.0) sum+=x; } printf("\nsum=%f",sum);
}
{printf("%d",I); (2)循环体中一定
I+=2; }
有对于循环控
}
2020/4/30
制变量的操作。
34
C语言大学实用教程
循环语句——do - while
一般形式:
do {
语句; }while (表达式);
首先执行语句,然后判断表达式的值。如果 表达式为0,继续向下执行,否则,再次执 行语句,再次判断表达式的值 语句会被至少执行一次
7
C语言大学实用教程
4.2 顺序结构
A
A
B
传统流程图
2020/4/30
B NS图
8
C语言大学实用教程
顺序结构——应用举例(1)
例:设半径为1.5,求圆周长及面积。
解:(1)问题分析: (算法)
step1:给出圆的半径r=1.5
step2:求圆的周长及面积
圆周长=2*3.14*r 公式:
圆面积=3.14*r*r
scanf("%f",&x); }
printf("\nsum=%f",sum);
}
2020/4/30
41
C语言大学实用教程
例:给定一组数据如下,编程对负数求和。 12,45,67.8,-12.5,-35.67,567.89
main() {
方法2:用 for
float x,sum=0;
int i;
for(i=1;i<=6;i++) {scanf("%f",&x);
yes 条件成立否 no
程序段A
程序段B
2020/4/30
21
C语言大学实用教程
多分支选择结构
T 表达式1 F
语句1
T 表达式2 F
语句2
T 表达式3 F
语句3
语句4
2020/4/30
22
C语言大学实用教程
多分支选择结构
一般形式:
if(表达式) 语句1; else if (表达式2)语句2;
: else if(表达式m)语句m;
for通常有一个循环变量控制循环的次数,不 要在循环体内改变这个变量
2020/4/30
39
C语言大学实用教程
有关 for 的说明(3)
for语句中的表达式1、表达式3可为逗号表达式。
如: for(i=0,j=1;j<n&&i<n;i++,j++)
表达式1和表达式3可以没有或者是用逗号分隔的 多个表达式的组合。
2020/4/30
4
C语言大学实用教程
算法的描述方法
自然语言表示 传统的流程图表示 N-S结构化流程图表示 伪代码表示
2020/4/30
5
C语言大学实用教程
构成程序的三种基本结构
顺序结构 选择结构(分支结构) 循环结构 已经证明,任何程序均可只用这三种结构综 合描述 只用这三种结构编制的程序,叫结构化程序 程序必须符合结构化规则
step3:输出结果
2020/4/30
9
C语言大学实用教程
开始
()
2
r=1.5
画
出
L=2*3.14*r
流
程
s=3.14*r*r
图
输出L,s
结束
2020/4/30
10
C语言大学实用教程
# include <stdio.h>
()
3
# define PI 3.14
根
main()
据
{ float r,l,s;
2020/4/30
25
C语言大学实用教程
例4.5
体型判断。按“体指数”对肥胖程度进行划分:
体指数t = 体重w / (身高h)2 (w 单位为公斤,h单位为米)
当t < 18时,为低体重; 当t介于18和25之间时,为正常体重; 当t介于25和27之间时,为超重体重; 当t >= 27时,为肥胖。
C语言大学实用教程
第4章 程序的控制结构
2020/4/30
1
C语言大学实用教程
第4章 程序的控制结构
本章主要教学内容 算法的描述方法
基本控制结构及基本控制语句
常用算法
程序的基本版式
结构化程序设计的基本思想
程序测试与改错
2020/4/30
2
C语言大学实用教程
4.1 算法的概念及其描述
数据结构+算法=程序 算法:为解决一个具体问题而采取的确定的有 限的操作步骤。 算法特性:
解: (1)问题分析: (算法) step1:给出存款利率rate
step2:给出年n、本金captial(键盘输入)
step3:n年后本利之和deposit
公式:deposit=captial*(1+rate)n
step4:输出结果
2020/4/30
12
C语言大学实用教程
开始
()
2
rate=0.0225
2020/4/30
6
C语言大学实用教程
结构化程序设计的核心思想
采用顺序、选择和循环三种基本结构作为程 序设计的基本单元
只有一个入口; 只有一个出口; 无死语句,即不存在永远都执行不到的语句; 无死循环,即不存在永远都执行不完的循环。
采用“自顶向下、逐步求精”和模块化的方 法进行结构化程序设计
2020/4/30
简单的C程序结构框架
以#开始的编译预处理命令
main()
{ 局部变量说明语句;
执行语句;
}
2020/4/30
15
C语言大学实用教程
编译预处理命令
文件包含编译预处理命令#include指示编 译系统将一个源文件嵌入到含有#include 指令的源文件中该指令所在的位置处。
使用形式:
# include <头文件名>/"头文件名"
一般形式: while (表达式) {
语句;
} 只要表达式的值为非0,就重复执行语句, 直到表达式值为0时止 先判断,后执行
2020/4/30
33
C语言大学实用教程
例:找出100以内的奇数。
main() {
int I=1; while(I<=100)
注意: (1) while 构成的
是“当型”循环。
2020/4/30
35
C语言大学实用教程
例:找出100以内的奇数。
main()
main()
{
{ int I=1;
int I=1;
do
while(I<=100)
{printf("%d",I);
{printf("%d",I);
I+=2; }
I+=2; }
while(I<=100);
}
2020/4/30
编程从键盘输入你的身高h和体重w,根据给定公式计算 体指数t,然后判断你的体重属于何种类型。
用3种方法编程:
算法1:用不带else子句的if语句编程 (ex45_1)
算法2:用在if子句中嵌入if 语句的形式编程 (ex45_2)
算法3:用在else子句中嵌入if 语句的形式编程(ex45_3)
2020/4/30
} 36
C语言大学实用教程
循环语句——for
一般形式:
for (表达式1; 表达式2; 表达式3)
{ 语句;
计算表达式1的值
}
F
表达式2
工作过程:
T 执行循环体
跳出循环
2020/4/30
计算表达式3的值
37
C语言大学实用教程
有关 for 的说明(1)
for (表达式1; 表达式2; 表达式3) {
例4.8
编程设计一个简单的计算器程序。(ex48) 要求根据用户从键盘输入的表达式:
操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加(+)、 减(-)、乘(*)、除(/)
2020/4/30
29
C语言大学实用教程
使用 switch语句应注意
(1)各常量表达式的值不可相同。 (2)case 后可有多个语句,不用{}括起。 (3)常量表达式仅是一个语句标号。 (4)各case及default子句的顺序可随意。 (5)每个分支执行后,利用break语句跳出。