C语言程序设计第四版PPT 谭浩强
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
条件表达式
表达式1 ? 表达式2 : 表达式3
当表达式1为真时返回表达式2的值,
否则返回表达式3的值
条件运算符和条件表达式
例
int a,b,x; a=5; b=8; x=a>b?a:b; printf("%d",x);
switch语句实现多分支选择结构
switch (表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2 ...... case 常量表达式n: 语句n default: 语句n+1 }
提醒
数学式10<x≤20在计算机语言中的表达 switch语句的特殊语法格式 表达式的正确书写 库函数的使用(见附录F) 正确的数据类型 十分重要!!! 正确的程序结构
改进:P.86 例4.1
是否还有不完善之处?
if语句
if (条件) 语句 if (条件) 语句 else 语句 if (条件) {复合语句} else {复合语句}
if语句
int x; printf("x=");
scanf("%d",&x);
if (x>=0) else
分别输入正数、负 数、零,判断程序 的运行结果
阅读下面的程序,判断编译和运行结果
int x; char y; printf("input x :"); case '8' : y="B";
case '7' : y="C";
case '6' : y="D";
scanf("%d",x);
switch (x/10)
default : y="E";
}
{ case '10' : y="A";
分别输入正数、负 数、零,判断程序 的运行结果
printf("greater than zero or equal to zero\n"); printf("It's a positive number\n"); else
printf("less than zero\n");
关系运算符
< ==
<= !=
printf("greater than zero or equal to zero\n"); printf("less than zero\n");
printf("It's a negative\n");
if语句
int x; printf("x=");
scanf("%d",&x);
if (x>=0)
无 解
2a b
2
复数解
4 ac
2a
输出x1, x2
if语句的嵌套
if 语句的嵌套 if (...) if (...) 语句1 else 语句2 else if (...) 语句3 else 语句4
“语句”包括复合语 句
读教材101页代码
条件运算符和条件表达式
条件运算符 ? :
唯一的三目运算符
printf("%d",y);
注意:y没有被赋值的错误;分支结 束后的语句
阅读下面的程序,判断运行结果
float r,S; scanf("r=%f",&r); if (r>=0) 注意: s=3.14159*r*r; (1)条件后未写{ }造成分支语句不匹配, printf("S=%f",s); (2)变量名大小写问题 ; else printf("radius can not be negative");
case '9' : y="A";
printf("Level:%c\n",y);
注意: 同前;case后的数据类型; 每个case后的break语句; 使用相同语句的分支合并。
阅读下面的程序,判断运行结果 int x=13,y; if (x>5) printf("y=20"); printf("y=10");
阅读下面的程序,判断编译和运行结果
int x,y; scanf("%d",&x); if (x<1) y=x; if (1<=x<10) y=2x-1; if (x>=10) y=3x-1; printf("y=%d",y); float x,y; scanf("%f",&x); if (x<1) y=x; else if (x<10) y=2*x-1; else y=3*x-1; printf("y=%f",y);
逻辑运算符
! && || 非 与 或 优先级
运算规则见表4-2,4-3 例Fra Baidu bibliotekP.93-94
逻辑表达式
例:P.95-96 闰年的表达
以逻辑运算符连接关系表达式和逻辑
量形成
逻辑表达式的结果是真(以1表示)
假(以0表示)
或
0和1以外的数据(数值、字符等)参加
逻辑运算时,以0为假,非0为真
逻辑变量
if (90<=x<=100) y="A";
if (80<=x<=89) y="B";
if (70<=x<80) y="C";
注意: scanf函数中的地址运算符; 90<=x<=100的正确表达; char类型,单引号与双引号; 分支的结构与运行步骤。
if (60<=x<70) y="D";
else y="E"; printf("Level:%c\n",y);
{ }括起的复合语句每句 都以分号结束
if语句
例:P.88 例4.3 三个数从小到大排列
例 求分段函数的值
|x| 3 y x 3x 1 7e x x1 1 x 10 x 10
* 用多个平行的 if 语句表达 * 用 if … else if … else … 表达 * abs,pow,exp函数的使用
三种基本程序结构
顺序结构
选择结构 循环结构
顺序结构流程
步骤1
步骤2
步骤3
选择结构(分支结构)流程
Y
条件
N
语句组1
语句组2
循环结构流程
条件
Y
N
语句组
第4章 选择结构
选择结构(分支结构)流程
Y
条件
N
语句组1
语句组2
选择结构实例
P.66 例3.5 一元二次方程 程序存在的问题:用户输入的数据必 须保证b2-4ac≥0,否则调用sqrt函数 会出错。
>
>=
优先级高 优先级低
关系运算符
算术运算→关系运算→赋值运算 优 优 先 先 于 于 例:P.92 L.8
关系表达式
用关系运算符连接算术表达式(或
字符/关系/逻辑/赋值表达式)形成
关系表达式的值是真(以1表示)
或
假(以0表示)
字符/关系/逻辑/赋值表达式均以数
值形式参加关系运算
关系表达式
算法的表达方式
自然语言
流程图
N-S图 伪代码 计算机语言
算法的表达方式
自然语言
流程图
N-S图 伪代码 计算机语言
如果x是正数,就打印x; 否则打印-x
算法的表达方式
自然语言
T
流程图
N-S图 伪代码 计算机语言
x>0
F
打印x
打印-x
算法的表达方式
自然语言
流程图
第2章 算法
算法在程序中的重要性
一个程序包含以下内容
数据的类型与组织形式——数据结构
操作步骤——算法
结构化程序设计方法 计算机语言
计算机算法
数值运算 非数值运算
算法实例
在一组数a1,a2,a3,a4,...,a10中找出最大值
算法的特征
有穷性:操作步骤有限 确定性:每一步骤有确切定义 输入:0个或多个输入,从外界获得信息 输出:一个或多个输出,反映数据处理结果 有效性:每个步骤能执行,并有确定结果 ——“正确”的算法有优劣之分,时间、空 间的复杂度
判断下面程序运行时显示的结果: int a=5,b=3; printf("%d\n",a>b); printf("%d\n",(a>3)>(b==3)); printf("%d\n",a>3>b==3); printf("%d\n",a>b>2); printf("%d\n",a-3>(b=2)); printf("%d\n",'a'>'A');
N-S图 伪代码 计算机语言
x>0
T F
打印x
打印-x
算法的表达方式
自然语言
流程图
N-S图 伪代码1 计算机语言
如果 x>0 就 打印 x 否则 打印 -x
算法的表达方式
自然语言
流程图
N-S图 伪代码2 计算机语言
if x>0 then print x else print -x
C++,C99版本使用
类型符 _Bool
值为 true 和 false
头文件 stdbool.h
if语句
if (条件) 语句
说明:
“条件”是关系表达
if (条件) 语句
else 语句 if (条件) {复合语句} else {复合语句}
式或逻辑表达式,其值 为“真”(非0)或 “假”(0)
语句均要以分号结束,
算法的表达方式
自然语言
流程图
N-S图 伪代码2 计算机语言
if (x>0) printf("%d", x);
else
printf("%d", -x);
程序流程图常用符号
处理框 判断框 输入/输出框
流程线
结构化程序设计方法
自顶向下 逐步细化 模块化设计 结构化编码
大任务分解为小任务
if语句
if(条件1) 语句1
else if(条件2) 语句2 else if(条件3) 语句3 ...... else 语句n
例:求一元二次方程的解
输入a, b, c
N Y Y N
a≠0
N
b≠0
b2-4ac≥0 C=0
N Y
x
c b
Y
x1 x2
b b
b
2
4 ac
输出x
任 意
switch语句实现多分支选择结构
说明: switch会执行相符的分支之后的所有 语句; 为了使程序在执行一个相符的分支后 不再继续执行后面的语句,可使用 break语句终止switch; 相邻的多个分支可执行共同的语句。
阅读下面的程序,判断编译和运行结果
int x; char y;
scanf("%d",x);