c语言的结构化的程序设计语言,C语言程序设计结构化程序设计.ppt

C语言程序设计结构化程序设计.ppt

第三章 结构化程序设计,一. C语句 二.结构化程序设计 三. C语言结构化程序设计的实现,在C语言程序中,语句是产生机器操作,向机器发出指令的基本单 位。每一个语句最后必须有一个分号,分号是C语句的有机组成部分。 C语言提供了如下五类语句 一.控制语句有9种 1. if else 2. for 3. while 4. dowhile 5. continue 6. break; 7. switch 8. goto 9. return,1 C语句,二.函数调用语句 例printf“This is a statement” ; maxa,b; 三.表达式语句 由一个表达式构成的语句。最典型的是由赋值表达式构成的句子。 例a3; 赋值表达式语句。即赋值表达式后面加一个分号,就成了 赋值语句。 xy;也是一个表达式语句,只是没有什么实际意义。 四.空语句只有一个分号的语句。 例; 空语句,它什么也不做。,1 C语句,五.复合语句 完成一个操作任务需要几个语句组合而成,并由一对 把这几个语 句括起来的语句。复合语句以一对花括号为结束标志,故在右花括号后 面不能有分号。 如要完成将变量a和b的值交换这个动作,就需要复合语句才能完成。 即 ta; ab; ba; 这一组完成了a和b的值交换这个动作,1 C语句,所谓结构程序设计指的是任何一个程序都只能由顺序结构、分支 结构和循环结构这三种基本结构所组成。 顺序结构指程序的执行顺序是按语句的书写顺序逐条执行的。 分支结构是根据给定的条件是否成立来决定执行其中之一的结 构,它只有一个入口和一个出口。 循环结构是根据给定的条件成立与否来决定某一部分动作是否重 复执行。 其三种结构的流程图如下所示,本节重点介结后两种结构,2结构化程序设计,2结构化程序设计,顺序结构,分支结构,2结构化程序设计,循环结构,一由if语句来实现分支结构 1格式 if(条件表达式) 语句序列1; else 语句序列2; 2说明 * 条件表达式通常是关系表达式或逻辑表达式。 * 语句序列1、语句序列2可以是简单语句,也可以是复合语句。 * else子句是可选项。 * else子句中还可以嵌套另一个if语句。 * 其执行动作当表达式为真时,执行语句序列1,否则(若没有else 子句则不执行)执行语句序列2,每次只能执行其中之一,绝不会二者同 时执行。,3 结构化程序设计 分支结构实现,Eg1 任意输入一个数,求其绝对值输出。 include void main int a,absx; printf“请输入一个整数”; scanf“d”, ,3 结构化程序设计 分支结构实现,Eg2猜幻数游戏 程序中给定一个数,然后由游戏者输入一个数,如果这两个数相 同,就猜对了,在屏幕上输出Right,否则输出Wrong。 main int magic123; int guess; scanf“d”, ,3 结构化程序设计 分支结构实现,如果用流程描述该程序的执行过程,如下图所示,3 结构化程序设计 分支结构实现,在这一个猜幻数游戏中,难度太大,因为没有猜对时,只给一个 “Wrong”提示。要是在没有猜对的时候,给出是太大或太小的提示,那么 游戏玩起来就容易一些。如,我们就根据这个想法来改造一个这个程序。 那么,怎么改呢我们先按照上述思路画出程序流程图。,3 结构化程序设计 分支结构实现,main int magic123; ing guess; scanf“d”, ,3 结构化程序设计 分支结构实现,二条件表达式与if语句表达式1表达式2表达式3 前面我们讲到条件表达式表达式1表达式2 表达式3 ,其流程 结构如下所示,3 结构化程序设计 分支结构实现,这和if语句的流程格式一样,看来if语句和条件表达式可以互换,那么是否所有的if结构都可以用条件表达式代替呢答案是否定的,只有在下属情况下才能互换。 当if结构中的条件不管为真还是为假,都只有一个简单的赋值语句,而且是给同一个变量赋值时,才能用条件表达式代替。,Eg3 任意输入两个整数,输出最大数。 include viod main int a , b , max ; scanf“dd”3 结构化程序设计 分支结构实现,Eg4 输入一个字符,判断它是否为大写字母,如果是,将它转换成 小写字母,如果不是,不转换,然后输出最后得到的字符。 include void main char ch; scanf“c”, ,3 结构化程序设计 分支结构实现,三由switch语句来实现分支结构 由于if语句只有两个分支可供选择,当分支较多时,就要用到if语句的 嵌套,嵌套层数太多,会使程序冗长,影响程序的逻辑结构和效率,而 switch语句是多分支选择语句,用以实现多分支选择结构的。 1)格式 switch 表达式 case 常量1 语句序列1;break; case 常量2 语句序列2;break; case 常量3 语句序列3;break; . case 常量n 语句序列n;break; default 语句序列n1; ,3 结构化程序设计 分支结构实现,2)执行过程首先计算表达式的值m,然后把m的值依次同常量1, 常量2 ,。常量n进行比较,如果m和其中某个常量相等,则执行其 case后面的语句序列,直到遇到break语句或者反向大花括号,如果m不等 于任何一个常量,则执行default后面的语句序列。 3)说明 * switch后面括号内的表达式允许是任何类型,但通常为整型或字符型。 * 同一个switch语句中,任意两个case常量不允许具有相同的值。 * 如果在switch语句中使用字符常量,它们将被自动转换成整型值。 * case和default出现的次序不影响执行结果。 * 多个case可以共同一组执行语句。 * break语句可以省略,若某个case后的break语句被省略掉,则将继续 执行下一个case语句中的语句序列,直到遇到brek或switch的结束标志止。,3 结构化程序设计 分支结构实现,例1编写程序完成下面屏幕内容显示,一旦用户作出选择,就实现 其对应功能。,3 结构化程序设计 分支结构实现,首先在这里,我们不考虑矩形框的画法,待会儿补讲一些绘图函数。,main char ch; float A1,A2,A3,A4,A5; float sum,avg; printf“1录入五科成绩n”;,printf“2计算总成绩n”; printf“3计算平均成绩n”; printf“0退出本程序n”; printf“请输入你的选择(03)”; chgetchar; switchch case 1 scanf“fffff”, ,3 结构化程序设计 分支结构实现,一用while语句实现的循环结构 1格式 while 表达式 循环体; 2执行过程首先求解表达式的值,若为真,则执行循环体,执行 完循环体再去判表达式的值,如些反复,直到表达式的值为假,跳出 while循环。,3 结构化程序设计 循环结构实现,Eg1 求1100的累加和。,3 结构化程序设计 循环结构实现,代码如下 include void main int s0, i1; while i100 ssi; 进行累加 ii1; 修改循环变量 printf”累加和是d”s; ,Eg2 求的近似值。 用公式,求的近似值,直到最后一项的绝对值小于10-4为止。 main float s; float n, t, PI; t1.0;PI0;n1.0;s1.0; whilefabst1e-4 PIPIt; nn2.0; s-1*s; ts/n; PIPI*4; printf“PIfn”,PI; ,3 结构化程序设计 循环结构实现,3 结构化程序设计 循环结构实现,3说明 * 进入循环之前,应注意给循环变量赋初值。 Eg 上例中的 i1 * 循环体中一定要有使循环趋于结束的语句,否则会导致死循环。 即循环体中要有修改循环变量的语句。Eg 上例中 ii1 * 注意合理安排循环体中的语句顺序。 二用dowhile语句实现的循环结构 1格式 do 循环体; while表达式; 2执行过程首先执行循环体,然后计算表达式的值,若为真,则 返回去再执行循环体,如此反复,直到表达式为假,跳出dowhile循环。,Eg3 求1100的累加和。 include void main int s0, i 1; do ssi; ii1; while i100; printf“累加和是d”s; ,3 结构化程序设计 循环结构实现,3说明 * 无论表达式为真还是为假,循环体至少被执行一次。 * 注意格式中while后面的分号不能少,它表示dowhile语句的结束。 * 循环变量的初值在循环之前进行赋值;循环体中应体现修改循环控制变量的语句,否则会出现死循环。,三用for语句实现的循环结构 1格式 for 表达式1;表达式2;表达式3 循环体; 2执行过程 a. 求解表达式1的值。 b. 求解表达式2的值,若为真则执行循环体,然后转到第c步,否则 结束for循环。 c. 求解表达式3,然后转到第b步继续执行。,3 结构化程序设计 循环结构实现,Eg4 求等差数列的和 sum1357.201 include void main int i , sum 0; for i1; i201; i2 sumsumi; printf”sumd”,sum; ,3 结构化程序设计 循环结构实现,Eg5求等比数列的和sum12482n include void main int i,n,j; long sum,s; sum0; printf“ n”; scanf“d”, ,3说明 * 表达式1通常是给循环变量赋初值,可以省略。但省略时应在for之 前给循环变量赋初值。 * 表达式2是控制循环结束的条件,可省略,但省略时应注意会造成 死循环。 * 表达式3通常用来修改循环变量,省略时应在循环体中增加修改循 环结束的语句。 * for中三个表达式均可省略,但括号和分号不能省略。Eg for ; ; * 循环体可以是简单语句、复合语句、还可以是空语句。,3 结构化程序设计 循环结构实现,四三种循环结构的比较 原则上三种循环结构可用来处理同一问题,可以相互替代,但也存 在不同,比较如下 1循环结束条件的位置不同。for、while只有条件为真才能执行,而 dowhile无论真假至少执行一次。 2初始化条件和使循环体趋于结束的操作的位置不同。While、 dowhile在进入循环之前初始化,修改循环变量必须在循环体中进行,而 for可放在之前、小括号内或循环体内。 五循环的嵌套及应用 1循环嵌套即在一个循环结构的循环体内又完整的包含另一个循 环结构。,3 结构化程序设计 循环结构实现,2应用eg1 求123.20 include void main double sum0,t; for i1; i20; i t1.0; forj 1; ji; j tt*j; sumsumt; printf”sumf”,sum;,3 结构化程序设计 循环结构实现,一.break语句 我们讲switch语句时,知道了break语句可以使流程跳出switch语句 体,终止某个case,这是其用途之一。Break语句还有一个用途,就是迫 使一个循环立即结束。避开正常循环测试条件,它可以终止它所处的哪一 层循环,而不是所有循环。,3 结构化程序设计 break,continue和exit()Eg1 main int t; fort0;t100;t printf“d”,t; ift10 break; ,该程序的功能是在屏幕上显示数字0到10。 从循环结束条件t100来看,应该能显示099,但由于当t10时,执行break语句导致循环立即终止。,Eg2计算半径从1到20的圆的面积输出,但当面积大于100时结束。 include void main int i; float s; for i1; i100 break; printf”rdt sd”,r,s; ,3 结构化程序设计 break,continue和exit(),二.continue语句 continue语句是结束本次循环,回到循环条件测试部分重新开始执行。 Eg2将100200之间不能被3整除的数输出。 include viod main int i; for i100;i200;i ifi30 continue; prinft“d”,i; ,3 结构化程序设计 break,continue和exit(),三.exit0语句 exit()是标准函数库中的一个函数,其作用是即终止一个程序的运 行,并返回到操作系统。 作业 1.求Fibonacci数列40个数。其特点是第一,第二个数为1,1,从第 三个数开始是前两个数之和。 2.打印“水仙花数”。 3.有一分数序列2/1,3/2,5/3,8/5,13/8,求这个数列的前 20项之和。 4.求Snaaaaaaaaaaaa(n个a)之值,其中a是一 个数字,n由键盘输入。,3 结构化程序设计 break,continue和exit(),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值