谢丽聪老师C语言课件-5分支结构程序(2)-2009
C语言课件第2讲 分支结构
Lecturer:虞铭财 mingcaiyu@
本讲内容
两种分支结构语句 break语句 关系运算符 逻辑运算符 分支结构嵌套
2
例1 两个数从小到大排序
输入2个实数a、b,要求按由小到大的顺序输出。 输入样例
3 1
输出样例
1 3
3
参考代码
14
准备知识
执行过程 每个分支都由一个或多个整数值常量或常量表达式 标记。如果某个分支与表达式的值匹配,则从该分 支开始执行。 各分支表达式必须互不相同。如果没有哪一分支能 匹配表达式,则执行标记为default的分支。 如果没有default分支也没有其他分支与表达式 的值匹配,则该switch语句不执行任何动作。 注意: 一个switch语句最多可以有一个default标号。 各分支及default分支的排列次序是任意的。
5
例2 三个数从小到大排序
输入3个实数a、b、c,要求按由小到大的顺序输 出。 输入样例
3 1 2
输出样例
1 2 3
6
参考代码
#include <stdio.h> int main() { int a,b,c; int t; scanf("%d%d%d",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=b; b=t; } if(b>c) { t=b; b=c; c=t; } printf("%d %d %d\n",a,b,c); return 0; }
7
例3 判定数的正负
判断一个数是正数、零还是负数。如果是 正数,输出“The number is positive.”,如 果是负数,输出“The number is negative.” 如果是0,输出“The number is zero.” 输入样例1:
第五章--分支结构PPT课件
2021/7/22
8
例2.用cond函数来描述下列计算式: x 0≤x<2
F(x)=
x2 2≤x<5 x3 5≤x<7
ex x≥7
程序为:
(initget 7)
(setq x (getreal “Enter x=? (x >= 0)”))
(setq fx (cond ((and (>= x 0) (< x 2)) x)
可以是表。
2021/7/22
5
2.〈测试—表达式〉的值不一定必须为T才算成立,因为从逻辑角度来说任何 非 nil 的 表 达 式 都 与 T 等 效 , 只 要 其 值 为 非 nil 即 可 , 例 如 〈 测 试 — 表 达 式 〉 为 1.2.“text”,(List 1 2 3),(setq a 3.0) (+ 13 8),(print “a”),a(已赋值)等,其值虽非T, 但为非nil,固测试均成立。并进行〈则—表达式〉。只有〈测试—表达式〉的值 为nil,如/(),(and (< 4 1) (> 3 2))测试不成功,则进行〈否则—表达式〉。
执行该函数时对表达式依次求值,只要有一个表达式的值为非nil则返回T。
只有2全021部/7/2表2 达式的值为nil,才返回nil,例如:
3
(or 1 2 3 nil)
返回值T
(or (< 5 3) (= 2 1) (/= 2 2) (> 3 5)
返回值nil
(or a b c d)
返回值nil
;(a b c d均未赋值)
((and (>= x 2) (< x 5)) (* x x))
((and (>= x 5) (< x 7)) (expt x 3))
第2章程序设计语言
(b) 直到循环 (a)当循环
西南大学计信院自动化系
Do-until,for-do均为while-do变体
(1)结构化程序控制
T
s1 s1 s2 ┆ sn T
E F
E F
E S
s2
ST
ST
SF
S
SF
E
┆ sn
条件分支
(a)
条件分支
迭代
(b)
顺序
西南大学计信院自动化系 顺序
软件技术基础
(2)其它控制结构 I1
• 计算机语言中的变量,代表的只是计算机内存中的一个存储单元,单 元中存放的内容是变化的 • 若变量中存放的不是对象,而是另一个变量在计算机内存中的存储地 址,则这种变量被称为指针变量
123 P
西南大学计信院自动化系
西南大学计信院自动化系 软件技术基础
记录结构{ 元组1 { 元组2 {
…… 元组 n {
Name ChangShan LiShi WangWu ZhaoLiu ChenQi ChowBa 域(字段)
Age 20 22 21 20 23 19
Sex Male Female Male Male Female Male
赋值语句 表达式 表达式 标识符 标识符 标识符 数
:= Id1 Id2 Id3 60 + * 60
position := initial + rate *
西南大学计信院自动化系
软件技术基础
• 第三步作语义分析(Semantic Analysis)对各句子的语法树 作检查:运算符两边类型是否相兼容;该作哪些类型转换; 控制转移到不该去的地方;是否有重名等等。若有错转出错 处理,否则生成执行代码 • 第四步是中间代码生成。中间代码是向目标码过渡的一种编 码,形式尽可能和机器的汇编语言相似,但不涉及具体机器 的操作码和地址码。好处是可在中间码上作优化 • 第五步是优化。对中间码程序作局部和全局优化,使运行更 快,占用空间最小 • 第六步是代码生成。生成目标机器的目标码(或汇编)程序
谢丽聪老师C语言课件-8函数-2009
void pv(a,n)
pv(’+’,3);
char a; int n;
形参:供 其它函数
调用
p_star( );
{ int i;
pv(’$’,5);
for(i=1;i<=n;i++)
p_star( );
printf("%c %c\n",a,a);
}
}
void p_star( )
{ printf("*******\n");
例2: int max(int a,int b) { if(a>b)return a;
一个函数的定义可以放在主函数main之前, 也可放在main之后,末尾无分号
else return b; }
对max函数进行说明,末尾要加分号
main()
{ int max(int a,int b);
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",&x,&y); z=max(x,y); printf("maxmum=%d",z); } 输入: 80 61
调用max函数,并把x, y中的 值传送给max的形参a, b。 max函数执行的结果(a或 b)将返回给变量z。最后由 主函数输出z的值。
一个C程序由一个主函数和≥0个 其它函数组成函数体允许是空 的或无值类型,或无返回值(void)
结构化程序设计的一个重要特点: 模块化设计,即用一个函数表示 一个模块
例1.
void main( )
执行一个程序从主函数开始,再从 主函数结束
谢丽聪老师C语言课件-6循环控制-2009.ppt
例8. while和do-while循环比较。 sum i
void main()
输入:8
0
8
8
9
{int sum=0,i; scanf(“%d”,&i);
17
10
27
11
while(i<=10)
do {sum=sum+i;
{sum=sum+i; i++;
i++;}
} while(i<=10);
printf(“sum=%d”,sum);
for语句形式: for(循环变量赋初值;循环条件;循环变量增量) 语句
总是一个赋 值语句, 它用 来给循环控 制变量赋初 值
总是一个表 达式, 它用来 判别循环是 否终止
定义循环控制 变量每循环一 次后按什么方 式变化
这三个部分之间用“;”分开
对于for循环中语句的一般形式, for(表达式1;表达式2 ;表达式3) 语句
运行结果:5050
注意: i和sum的初值 i的终值
例3 统计从键盘输入一行字符的个数。
#include <stdio.h>
void main() { int n=0;
完成对输入字 符个数计数。
printf("input a string:\n");
while(getchar()!='\n') n++;
}
输入:11
sum=0
sum=11
66..44.1fo形r 式语:句——代替while 语句
for (表达式1;表达式2;表达式3) 语句 要正确表达循环结构应注意三方面要求: 1、循环控制变量的初始化。 2、循环的条件。 3、循环控制变量的值的更新
2024版Helen老师C语言全部课程
01课程介绍与基础知识ChapterC语言概述C语言的历史与发展01C语言的特点与优势02C语言与高级语言的关系03介绍计算机硬件系统的基本组成,包括中央处理器、内存、输入/输出设备等。
计算机系统的组成计算机中的数与编码计算机中的指令与程序讲解计算机中数的表示方法,如二进制、十六进制等,以及字符编码方式,如ASCII 码。
阐述计算机指令的概念、格式及执行过程,以及程序的基本结构和执行流程。
计算机系统基本概念编程环境与工具安装C语言编程环境介绍编程环境的安装与配置常用开发工具介绍第一个C程序:Hello WorldC程序基本结构01Hello World程序解析02常见错误与解决方法0302数据类型、运算符与表达式Chapter01020304int 、short 、long 等,用于存储整数。
整型float 、double 等,用于存储小数。
浮点型char ,用于存储字符。
字符型bool ,用于存储真或假的值。
布尔型基本数据类型变量与常量变量常量变量命名规则常量命名规则算术运算符关系运算符逻辑运算符位运算符赋值运算符运算符优先级运算符及优先级表达式求值表达式由变量、常量、运算符和括号组成的式子。
求值顺序按照运算符优先级和结合性进行求值。
类型转换在表达式中,不同类型的数据可以自动或强制进行类型转换。
03控制结构Chapter顺序结构的基本概念输入输出函数的使用算术运算和赋值运算if 语句switch语句条件运算符01020304while 循环for 循环do-while 循环循环的嵌套break语句使用break语句提前结束当前循环,不再执行后续的循环体。
continue语句使用continue语句跳过本次循环的剩余部分,直接进入下一次循环。
goto语句使用goto语句实现无条件跳转,直接跳转到指定的代码位置。
异常处理机制通过异常处理机制捕获和处理程序中的异常情况,保证程序的稳定性和可靠性。
跳转语句和异常处理04函数与模块化设计Chapter函数定义和调用函数定义函数调用函数原型声明将参数的值传递给函数,函数对参数的修改不会影响原始数据。
谢丽聪老师C语言课件-8函数-2009
8.1 概述
一个C程序由一个主函数和≥0个 其它函数组成函数体允许是空 的或无值类型,或无返回值(void)
结构化程序设计的一个重要特点: 模块化设计,即用一个函数表示 一个模块
{int c ; 没有给形参分配存储单元
数组元素是下标变量,它 与普通变量并无区别。把c=a ; a=b ; Nhomakorabea=c ;
作为实参的数组元素的值
}
传送给形参,实现单向的
X[0] X[1] 值传送。
与上例
73
相同功能
a
b
37
函数调用中发生的数据传送是单向的。即 只能把实参的值传送给形参,而不能把形参 的值反向地传送给实参。因此在函数调用过 程中,形参的值发生改变,而实参中的值不 会变化。 实参
char str(int a);
float f(float b);
main() { …… }
对str函数和f函数预先作了说明
char str(int a)
{ …… }
float f(float b)
{ …… }
4)对库函数的调用不需要再作说明,但必须把该函 数的头文件用include命令包含在源文件前部。
输出: maxmum=80
例3.
计算
Cnr
n!
r!(n r)!
main( )
{ int n , r , cnr ;
实参,必 须赋值
scanf (”%d,%d”,&n , &r ); cnr = f (n)/(f ( r)*f( n-r); printf (”%d\n”,cnr ) ;
第1章 C++概述
26
程序1.9 单目算术运算举例
void main() {char c='E' ; int i=3, j=3; int m=i++ , n=++j , k=--j; cout<<"m="<<m); cout<<"n="<<n); cout<<"k="<<k); --c ; k++; cout<<"c="<<c); cout<<"k="<<k); } 程序输出结果: m=3 n=4 k=-4 c=D k=-3
21世纪高等院校计算机系列教材
C++ 程序设计简明教程
(第二版) 教学课件
艾德才 迟丽华等编著制作
1
教学主要内容
第 1 章 C++基础
第 2 章 C++流程控制语句 第 3 章 指针、结构体和联合体 第 4 章 函数 第 5 章 C++类
第 6 章 C++运算符的重载
'\x0a‘
'\x0c‘ '\x0d‘ '\x22‘ '\x27‘ '\x5c‘ 如‘\101‘ 表示'\A‘
17
用2位16进制数表示字符 如‘\x41‘ 表示'\A‘
字符串常量
程序的基本结构
练习
根据下面的算法判断主要是运用了哪种 程序结构,并指出程序的功能。
y
n
a>b
输入i的值
max=a
max=b
输出i的值
y c>max n max=c
i=i-1
y i>=0
n 结束
讨论
解决问题的算法和程序千差万别,但都 是由顺序结构、选择结构和循环结构这 三种基本结构组成,请举例说明你的认 识。
程序和程序设计语言
第二课时 程序的基本结构
岳麓实验中学 谢丰敏
Nubot2007机器人足球赛
程序的三种基本结构
顺序结构 选择结构 循环结构
程序是由若干个基本结构组成的,而一个基本结构 可以包含一条语句或若干条语句
认识选择结构
翻译下面的句子 If I offer to take him out for lunch ,then
he’ll feel in a better mood. If it does not rain ,then I’ll go to park,
else I’ll stay at home. 观察这两个语句有何共同之处。
认识选择结构
例1:在VB中编程解决,输入三条边的长 度,判断能否构成三角形。
认识选择结构
在这个例子中,程序运行 碰到了“岔路口”,程序
要通过判断条件是否成 立来选择程序中的一 个分支来执行,这种程 序结构称为选择结构。
如右图:
N
Y
C
S1
S2
探究顺序结构和循环结构
例2:在VB中编程解决,求长方形的面积。 例3:在VB中编程解决,计算s=1+2+3+…+10
C语言分支结构说课课件(精)
四、说教法与说学法
2. 师生活动
教 师
提出问题
启发引导
归纳总结
学生
思考讨论
分析解答
四、说教法与说学法
学习方法
1. 建立一个完整的问题解决框架 2. 要作为问题的回答者和设计者
五、说教学过程
课堂结构
1. 复习
2. 模拟“石头、剪刀、布”游戏
问题提出
详细设计 具体实施
3. 课程总结 4. 上机实践 Nhomakorabea③问题提出
人与计算机的“手势”怎样统一? 计算机作为一个游戏对象,应该怎样执行上述规则进行判断?
五、说教学过程
4.详细设计
①统一手势 人机交互
使用的设备
输入\输出 设备
C语言支持
键盘 显示器
约定游戏对象手势,简化表示方法:
人(用P表示):通过键盘输入(石头0、剪刀1、布2)
游戏 对象
计算机(用C表示):使用rand随机函数(rand()%3)产生(0、1、2)
五、说教学过程
②规则表示
使用类自然语言描述
如果 P与C相同 结果为平 否则 如果P=0时 如果C=1 结果为负 如果C=2 结果为胜 如果P=1时 如果C=0 结果为胜 如果C=2 结果为负 如果P=2时 如果C=0 结果为负 如果C=1 结果为胜
五、说教学过程
5.具体实施
用 户 从 键盘输入值 (同时检验 合法性确保 是0、1、2 三个数字之 一),用于 表示游戏对 象人(P) 的手势 使 用 rand 函数随机产 生一个值, 用于表示对 象 计 算 机 (C)的手 势 依据制定 的规则,分 析比较 P 与 C 的值之后, 输出胜负结 果
六、教学反思
c语言 分支结构 课件【2024版】
y=x+3
y=x+2
y=x+3
if (x < 2) if (x < 1) y = x + 1; else y = x + 2;
else y = x + 3;
else 和 if 的匹配
if(表达式1)
if(表达式2) 语句1 else 语句2
else
if(表达式3) 语句3 else 语句4
if(表达式1) if(表达式2) 语句1
3.2.2 switch语句
处理多分支选择问题,3种情况
1、在switch语句的每个语句段中都使用break 语句
switch(表达式){
case 常量表达式1:语句段1; break;
case 常量表达式2:语句段2 ; break;
....…
case 常量表达式n:语句段n ; break;
default :
break;
default:
other ++;
break;
}
}
printf("blank=%d, digit=%d, other=%d\n", blank, digit, other);
return 0;
}
3.3 分支结构程序设计
分支结构一般分为二分支和多分支两种结构 用条件语句(if 和 switch)实现选择
嵌套的 if 语句
else – if 语句 嵌套的 if - else语句
switch语句
嵌套的 if 语句
if (表达式) 语句1
else 语句2
if 语句 if 语句
o else – if 语句 o 嵌套的 if - else语句
C语言程序设计基础分支结构程序设计PPT课件
if 语句 if 语句
例:计算符号函数
输入变量x, 计算符号函数:
1 当 x>0
y = 0 当 x=0
-1 当 x<0
非0
非0
if (x>=0)
x>0
if(x>0) y = 1;
else y = 0;
else y = -1;
y=1
x >= 0
0
y=0
0 y = -1
例4-9
非0
0
x <2
非0
0
x <1
非0
0
exp1
int n;
(n>0) ? 2.9 : 1
n = 10
2.9
n = -10
1.0
x+2 x>0 y=
x2 x<=0
if ( x>0 ) y=x+2;
else y=x*x;
y = (x>0) ? x+2 : x*x;
4.3 switch语句
switch(表达式) {
case 常量表达式1:语句段1 case 常量表达式2:语句段2
非0
0
表达式
if (exp)
statement_1
语句1
ch=getchar(); if(ch>='a'&&ch<='z')
ch=ch-'a'+'A'; putchar(ch);
ch=getchar(); if(ch>='a'&&ch<='z'){
CHAR05分支结构程序-推荐下载
5.2
逻辑运算符和
表达式
2
5.2.1
逻辑运算符极其优先次序................................................................................2
5.2.2
逻辑运算的值....................................................................................................3
在本例中求出了各种关系运算符的值。字符变量是以它对应的 ASCII 码参与运算的。 对于含多个关系运算符的表达式,如 k==j==i+5,根据运算符的左结合性,先计算 k==j,该 式不成立,其值为 0,再计算 0==i+5,也不成立,故表达式值为 0。
5.2 逻辑运算符和表达式
5.2.1 逻辑运算符极其优先次序
5.2.3
逻辑表达式........................................................................................................3
5.3
if 语句 ..........4
5.3.1
if 语句的三种形式 ............................................................................................4
char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85; printf("%d,%d\n",’a’+5<c,-i-2*j>=k+1); printf("%d,%d\n",1<j<5,x-5.25<=x+y);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
后续程序. 后续程序.
此为真,做语句1 此为真,做语句1, 其它语句都不做
上面的语句为以下三种格式: 上面的语句为以下三种格式: 1,空语句 ; , 2,一个语句(不引起转移) ,一个语句(不引起转移) 3,前后加大括号的语句(复合语句), ,前后加大括号的语句(复合语句), 也叫程序段, 也叫程序段,如: {int a; 允许在复合语句前部定义变量,只 允许在复合语句前部定义变量, 能在复合语句中使用 float b; a=3; {int a; 变量要在 b=7.0;} 不能写成 最前面定 a=3;
表达式可 以是任意 合法表达 式,后面 不能加; 不能加;
此语句用于提示输入 例2:void main() : {int a,b,max; printf("\n input two numbers: "); scanf("%d %d",&a,&b); max=23 max=a; if (max<b) max=b; max=46 printf("max=%d",max); } 输入: 输入:23 46 输出:max=46 输出:max=46
输入:23 46 输入: 输出:max=46 输出:max=46
3,第三种形式为if-else-if形式: ,第三种形式为 形式: 形式 后面不能 if(表达式1) if(表达式 表达式1 加; 语义: 语义: 语句1 语句1; else if(表达式2) if(表达式 表达式2 依次判断表达式的 语句2 语句2; 值,当出现某个值为 else if(表达式3) if(表达式 表达式3 真时,则执行其对应 语句3 语句3; 的语句.然后跳到整 … 个if语句之外继续执行 语句之外继续执行 else if(表达式m) if(表达式 表达式m) 程序. 程序 . 如果所有的表 语句m 语句m; 达式均为假,则执行 else 语句n. 语句 .然后继续执行 语句n 语句n;
5.2 逻辑表达式: 逻辑表达式:
由逻辑运算符, 由逻辑运算符,圆括号把表达式连接起来的式子 ——表示条件 ——表示条件 若所表示的条件成立,其值为1(非0),否则其值为0 若所表示的条件成立,其值为 非 ,否则其值为 逻辑运算符: 逻辑运算符:&& (与) ,|| (或),!(非) &&和 ||均为双目运算符,具有左结合性 &&和||均为 双目运算符 ,具有左结合性. !为单目 均为双目运算符 左结合性. 运算符,具有右结合性 右结合性. 运算符,具有右结合性. 逻辑运算符和其它运算符优先级的关系可表示如下: 逻辑运算符和其它运算符优先级的关系可表示如下: !(非)→&&(与)→||(或) &&(与 ||(或 "&&"和"||"低于关系运算符,"!"高于算术运算 &&" ||"低于关系运算符, 符.
优先 成立为1 成立为1 不成立为0 不成立为0
注意:数学中多个条件, 注意:数学中多个条件,例 a>b>c>d 应表示为 a>b && b>c && c>d 不能顺手也写为 a>b>c>d 关系运算符都是双目运算符, 关系运算符都是双目运算符,其结合性均 左结合. 为左结合.关系运算符的优先级低于算术 运算符,高于赋值运算符. 运算符,高于赋值运算符. <,<=,>,>=的 在六个关系运算符中 , <,<=,>,>= 的 优先级相同,高于== 和 != , == 和 != 的 优先级相同 , 高于 ==和 !=,==和!=的 优先级相同. 优先级相同.
float b; b=7.0;}
义
#include"stdio. #include"stdio.h" 输入: void main(){ 输入:A 输出: char c; 输出:This is a capital letter c=getchar(); c=getchar(); if(c<32 32) if(c<32) character\n"); printf("This is a control character\n"); if(c>='0'&&c<='9 else if(c>='0'&&c<='9') digit\n"); printf("This is a digit\n"); else if(c>='A'&&c<='Z') 一个 letter\n"); printf("This is a capital letter\n"); 语句 else if(c>='a'&&c<='z') letter\n"); printf("This is a small letter\n"); else character\n"); printf("This is an other character\n"); }
按照运算符的优先顺序可以得出: 按照运算符的优先顺序可以得出: a>b && c>d 等价于 (a>b)&&(c>d) !b==c||d<a 等价于 ((!b)==c)||(d<a) a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)
例 : 设x=0,y=2,a=8,k=-1,q=1,z=1,则 , 1,x+y>3 && a==8 , &&1 &&1 →2>3 &&1 → 0 &&1 → 0 2,x+y && 'a' , &&97 → 2 &&97 → 1 3,x+(y=3)==k*z || !a , →0+3==-1 || !a → 0||0 →0 4, 4,(x!=7) || 'a' →0!=7||97 →1||97 →1 5,! ( x+y>3 && a==8 ) , &&1) &&1) →!(2>3&& →!(0&& →!0 →1 6,! ( k*q ) → !(-1) →0 , 7,!!!x →!!(1) →!(0) → 1 ,
例 4 : 从键盘输入一个字符 , 判断它是否小写字母 . 从键盘输入一个字符, 判断它是否小写字母. 若是,将其转换成大写字母,否则不进行转换, 若是 , 将其转换成大写字母 , 否则不进行转换 , 作 后输出该字母. 后输出该字母. main() #include<stdio. #include<stdio.h> {char c; main() c=getchar(); { char c,a; if(c<='z'&&c>='a')cif(c<='z'&&c>='a')c-=32; c=getchar(); printf("%c\ printf("%c\n",c);} if(c<=' if(c<='a' || c>='z' ) c>=' a=c; /*判断非小写字母情况*/ /*判断非小写字母情况 判断非小写字母情况* if(c<=' &&c>=' if(c<='z'&&c>='a') a=ca=c-32; *判断是否是小写字母情况*/ 判断是否是小写字母情况* printf("%c\ printf("%c\n",a); }
功能:输入三个数, 例3:void main() 功能:输入三个数,按 : 照从大到小顺序输出 {int a,b,c,t; printf("\n input two numbers: "); scanf("%d %d %d " ,&a,&b,&c); if (a<b){ t=a;a=b;b=t;} 实现数的 if (a<c){ t=a;a=c;c=t;} 互换 if (b<c){ t=b;b=c;c=t;} printf("%d %d %d\n",a,b,c); } 输入: 输入:1 6 2↙ 输出: 输出:6 2 1
2,第二种形式为: if-else ,第二种形式为 if(表达式) if(表达式 表达式) 语句1 语句1; else 语句2 语句2; 语义:如果表达式的值 为真, 则执行语句1, 为真 , 则执行语句 , 否则 执行语句2 执行语句 .
后面不能 加;
void main() 例2的改写 {int a, b; printf("input two numbers: "); 输入两个整数 scanf("%d %d",&a,&b); if(a>b) printf("max=%d\n",a); else 输出其中大数 printf("max=%d\n",b); }