欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    C语言程序设计ppt课件 第4章.ppt

    • 资源ID:1375820       资源大小:185.50KB        全文页数:59页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计ppt课件 第4章.ppt

    2022/11/16,华中科技大学计算机学院,1,C语言程序设计,The C Programming Language,华中科技大学计算机学院曹计昌,2022/11/16,华中科技大学计算机学院,2,C语言程序设计,第4章 流程控制,2022/11/16,华中科技大学计算机学院,3,主要内容,4.1 C语句分类4.2 表达式语句4.3 复合语句4.4 if语句4.5 switch语句4.6 while语句4.7 for语句4.8 do-while语句4.9 goto语句和标号语句4.10 break语句、continue语句和return语句4.11 嵌套循环程序设计*4.12 推理机程序设计,2022/11/16,华中科技大学计算机学院,4,C语句,4.1 C语句分类,说明语句,可执行语句,变量说明、函数说明、常量定义、类型定义、,表达式语句、复合语句、选择语句(if 和 switch)、循环语句(while, do-while和for)、转移语句(break, continue, goto和return)、标号语句,2022/11/16,华中科技大学计算机学院,5,在任何C表达式的末尾加一个分号都可以构成一个语句,即表达式语句。表达式语句的一般形式:表达式;其中,“;”是C语句不可缺少的组成部分,它表示一个语句的结束。 在C语言中,赋值、输入和输出都由表达式语句实现。例:x = y + 1x = y + 1; x += yx += y; i = j = ki = j = k; printf(”hello”)printf(”hello”); scanf(”%d”, ,4.2 表达式语句,2022/11/16,华中科技大学计算机学院,6,再如:a b;也是一个表达式语句,但是由于在表达式求值的过程中并没有改变任何变量的值,这样的表达式语句并没有实际意义。仅由一个分号构成的语句称为空语句,即:;它不执行任何操作。在程序设计中,如果某处在语法上需要一条语句,而在实际功能上不需要执行任何操作时,可以使用空语句。,4.2 表达式语句(续),2022/11/16,华中科技大学计算机学院,7,1复合语句的一般形式用花括号“”括起来的一组语句,语法上等价于单个语句,语法格式为:说明部分语句部分说明部分可包含0至多个说明语句;语句部分可包含0至多个执行语句。复合语句又称块。函数体是一个块。,4.3 复合语句,2022/11/16,华中科技大学计算机学院,8,例4.3:不含说明语句的复合语句 t = a; a = b; b = t;例4.4:包含说明了语句的复合语句。int t ;t = a; a = b; b = t;,复合语句举例,2022/11/16,华中科技大学计算机学院,9,2嵌套的复合语句复合语句中包含复合语句,从而形成嵌套的复合语句。例如:int a = 0, b = 1;int a=1;printf(”a=%dn”, a);printf(”b=%dn”,b += 1);printf(“a=%dn”,a);printf(“b=%dn”,b);,4.3 复合语句(续),2022/11/16,华中科技大学计算机学院,10,3复合语句的用途复合语句在程序设计中主要有以下两种用途:(1)用于语法上只允许出现单个语句而处理上需要执行多个语句的地方,例如作为if语句的子句及循环语句的循环体。(2)用于改变嵌套if-else语句的配对规则。此外,当需要说明临时使用的局部变量时,也可使用复合语句。,4.3 复合语句(续),2022/11/16,华中科技大学计算机学院,11,1if 语句的一般形式if语句有两种形式:(1) if格式:if (表达式)语句1;(2) if-else格式:if (表达式)语句1;else语句2;,4.4 if语句,2022/11/16,华中科技大学计算机学院,12,2嵌套的if 语句1) 嵌套if语句的形式当if子句或else子句中又包含if 语句时,则形成嵌套的if语句。例如,可以用下面的一个嵌套的if语句求a,b,c三个数中最大值:if ( a b )if ( a c ) max = a; else max = c;elseif ( b c ) max = b; else max = c;,4.4 if语句(续),2022/11/16,华中科技大学计算机学院,13,2)嵌套if 语句中else的配对规则对嵌套if语句中else与if的配对必须制定一个规则,否则会造成理解上的二义性。例如:if ( n 0 )if ( a b ) z = a;else z = b; 编译程序约定:else与其前面最靠近的还未配对的if配对,即内层优先配对原则。,4.4 if语句(续),2022/11/16,华中科技大学计算机学院,14,例4.6:解方程ax + b = 0,a和b从终端输入。#includevoid main(void)float a, b, x; printf(”input a,b:n”);scanf(”%f%f”, ,3程序设计举例,2022/11/16,华中科技大学计算机学院,15,1. switch语句的形式switch语句的一般形式为:switch(表达式)case 常量表达式1:语句序列1;case 常量表达式2:语句序列2;case 常量表达式n:语句序列n;default: 语句序列n+1;,4.5 switch语句,2022/11/16,华中科技大学计算机学院,16,2. switch语句的使用要点使用switch语句时,第一要注意列出的case应能包括选择表达式所有的取值情况,如果不能全部包括,则应使用default子句处理余下的情况。第二应特别注意break在switch中的作用,如果希望执行完某一case下的语句之后便跳出switch语句,则必须使用break或return转移语句。break跳出switch语句之后继续执行switch语句后面的一个语句(如果有),return语句则立即结束函数并返回到调用处(如果是主函数,则结束程序)。,4.5 switch语句(续),2022/11/16,华中科技大学计算机学院,17,例如:下面是一个不含转移语句的switch语句,注意观察该语句执行时的输出。i = 1;switch ( i )case 0:printf(%dt, i);case 1:printf(%dt, i+);case 2:printf(%dt, i+);case 3:printf(%d, i+);default:printf(n);printf(%dn, i);,4.5 switch语句(续),输出:1 2 34,2022/11/16,华中科技大学计算机学院,18,例4.8:学生考试成绩按以下标准分等(x为学生考试分数):分数范围等级英文名90 x100excellent(优)80 x90good(良)60 x80middle(中)x60bad(差)输入某学生的考试分数,输出该学生的考试成绩的英文等级。要求用switch语句来实现。,3程序设计举例,2022/11/16,华中科技大学计算机学院,19,分析:switch语句可用来解决多分支问题,但每个case后面的常量都是一个离散的值,不能表示一个数值范围。为此,将分数范围0,100每10分划为一段,则可划分为0,10),10,20),20,30),30,40),40,50),50,60),60,70),70,80),80,90),90,100)十个分数段。进一步对分数值进行除以10然后取整的处理,可以发现上面同一分数段内的分数经处理后得到相同的一个整数。比如,0,10)范围内的数除以10然后取整,结果都是0;10,20)范围内的数除以10然后取整,结果都是1;这样一来,就可以用一个离散值代表一个分数段内的所有分数值。p98 例4.8源程序代码 ex4.8.c。,3程序设计举例(续),2022/11/16,华中科技大学计算机学院,20,99 例4.9:输入某年某月,输出该月的天数。注意:switch语句允许多种情况执行相同的语句,执行相同语句的case可以写成一行,其间可以用空格或制表符分隔,但不能用逗号分隔。例如:case 4:case 6:case 9:case 11:days=30;正确case 4,case 6,case 9,case 11:days=30;错误case 4,6,9,11:days=30;错误,4.5 switch语句(续),2022/11/16,华中科技大学计算机学院,21,1. while语句的形式while语句的一般形式为:while (表达式) 语句while语句流程图:,4.6 while语句,2022/11/16,华中科技大学计算机学院,22,i = 0;while (i 5)printf(”i=%dt”,i);i+;printf(”i=%dn”,i); 注意:如果循环体中没有改变循环变量的值,或循环变量值的变化不能使循环控制表达式的结果为0,则循环将永不终止(通常称之为“死循环”)。如果循环控制表达式的值一开始就为0(条件为假),则循环体一次都不执行。解释: p101-p102 例4.11,例4.12,例4.13,例4.10 while循环语句示例,2022/11/16,华中科技大学计算机学院,23,例4.14:将来自标准输入文件的正文复制到标准输出文件,每次输入和复制一个字符。分析:以EOF(系统常量,值为-1)为结束标志的字符流称为一个正文,可以包含空白字符,例如空格符、制表符和换行符。根据题目要求,输入函数应使用getchar(每次输入一个字符),输出函数应使用putchar(每次输出一个字符);复制过程是一个重复地调用getchar读和调用putchar写的过程,因此程序的流程结构是一个循环语句;读入的字符是否为EOF则是循环控制条件。,2程序设计举例,2022/11/16,华中科技大学计算机学院,24,例4.14:算法步骤:(1) 调用getchar读入一个字符并赋给字符变量c。(2) 如果c不是EOF,则执行(3);否则结束执行。(3) 输出c;(4) 读下一字符并赋给字符变量c;(5) 转步骤(2)。p102 例4.14源程序代码 ex4.14.c,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,25,例4.15 输入一个C程序(一段正文),按原来格式复制输出,复制过程中删去输入程序中所有的注释。分析:为了删去C程序中所有的注释,关键在于如何区分注释部分和需要复制的部分。为此,可将复制过程划分为4种状态:复制状态(COPY)、开始注释状态(START)、注释状态(COMMENT)和结束复制状态(END),初始状态为COPY。每种状态下的处理方法如下:(1) 在COPY状态下,若读入字符为/(可能为注释开始符号),则将状态改为START;否则将读入的字符复制到输出。,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,26,(2) 在START状态下,若读入字符为*(确定注释开始),则将状态改为COMMENT;否则(不是注释),将上一次读入的字符/复制到输出;然后检查本次读入的字符是否为/,若是,则状态保持START不变,否则将本次读入的字符复制到输出并将状态改为COPY。(3) 在COMMENT状态下,若读入字符为*(可能为注释结束符号),则将状态改为END。(4) 在END状态下,若读入字符为/(确定注释结束),则将状态恢复成COPY;否则(不是注释结束),如果读入字符是*,则状态保持END不变,否则将状态改为COMMENT。(p104 源程序4.15),2程序设计举例(续),2022/11/16,华中科技大学计算机学院,27,1. for语句的形式for语句的一般语法形式表示为:for(e1;e2;e3) s for语句流程图:等价于:e1;while(e2) s;e3;,4.7 for语句,2022/11/16,华中科技大学计算机学院,28,使用for语句时须注意表达式e1,e2,e3的用法:(1)三个表达式可以全部或部分缺省,但无论缺省e1,e2或e3,它们之间的分号不能省。(2)缺省e1和e3时的for语句形如for(;e2;)s,等价于一个形如while (e2) s的while语句。(3)缺省e2时的for语句for(e1 ; ; e3) s和三个表达式都缺省的for语句for(; ;)s都是无限循环语句。被省略的e2缺省值恒为非0(e1和e3没有缺省值)。,4.7 for语句(续),2022/11/16,华中科技大学计算机学院,29,例4.16:for循环语句示例。int i;for(i = 1; i 4; i+)printf(”i=%d s=%dn”, i, 2 * i); 几种等价的形式: i = 1;for(; i 4; i+)printf(”i=%d s=%dn”, i, 2 * i);或for( i = 1; i 4;)printf(”i=%d s=%dn”, i, 2 * i);i+;,4.7 for语句(续),2022/11/16,华中科技大学计算机学院,30,或i = 1;for(; i 4;)printf(”i=%d s=%dn”, i, 2 * i);i+;或i = 1;for(; ;)printf(”i=%d s=%dn”, i, 2 * i);i+;if (!(i 4) break;,4.7 for语句(续),2022/11/16,华中科技大学计算机学院,31,例4.19:输入一批整数,以0为结束。输出其中最大的一个值。分析:从若干个数中找出最大的一个数可用打擂台的方法,即两两相比,大者留下;当所有的数比完时留下的那个数为最大。比较过程采用每次输入一个数立即与上一次留下的那个较大的数比较的方法,因此程序中只需用两个变量:一个变量x用于保存每次输入的一个数据,另一个变量max用于保存每两个数相比中较大的一个数。这种方法可以用于从任意多个输入数据中找出其中的最大值。,2程序设计举例,2022/11/16,华中科技大学计算机学院,32,例4.19:算法步骤:(1) 输入第一个数(x)。(2) 置最大数max初值为x。(3) 如果x不等于0,则执行(4);否则,执行(7)。(4) 输入下一个数(x)。(5) 如果max x,则将max修改为x(赋值)。(6) 转步骤(3)。(7) 输出max,结束。 p107 例4.19 源程序代码ex4.19.c。,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,33,例4.20:求n!,n从终端输入。分析:根据阶乘的定义,n为0的整数,n的阶乘等于1至n连乘,即n!=1*2*3*.*n。这种反复进行的相同或类似的操作可以通过循环语句来实现。循环体实现的操作是,每循环一次时将第i项(i分别为1,2,3,n)与前面各项相乘的结果(即 i-1的阶乘)相乘(称为累乘);循环结束条件为i等于n。i起着双重作用,既是阶乘因子又是循环变量。考虑到n较大时n!是一个相当大的数,为避免溢出,应将结果变量说明为long,unsigned long,或double。此外,累乘过程开始之前一定要将存放累乘积的变量置初值1,而不能置为0。,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,34,例4.20:算法步骤:(1) 输入n。(2) 将累乘积变量fac及循环变量i置初值1。(3) 如果in,则执行累乘(fac = fac * i);否则(in),转步骤(5)。(4) 将i值增加1,转步骤(3)。(5) 输出累乘结果fac,结束。p108 例4.20源程序代码ex4.20.c。,2程序设计举例(续),2022/11/16,华中科技大学计算机学院,35,1. do-while语句的形式do-while语句的一般形式为:do 语句 while (表达式); do-while语句流程图:,4.8 do-while语句,2022/11/16,华中科技大学计算机学院,36,do-while语句:do 语句 while (表达式); 可以用以下等价的while循环语句来代替。语句while (表达式)语句,4.8 do-while语句(续),2022/11/16,华中科技大学计算机学院,37,例4.21:把输入的整数按反方向输出。例如,输入的数是12345,要求输出结果是54321。分析:在输入一个整数时,是从高位到低位(或者说从左到右)依次输入各位上的数字。要按反方向输出,就是从低位到高位(或者说从右到左)连续地输出该数的各位数字。具体来说,就是先输出个位数字,再输出十位数字,直到最高位数字。获取一个整数的个位数字的算法是将该整数除以10取余(模10)。去掉一个整数的个位数字(使十位数字变个位数字,百位数字变十位数字,直到最高位数字变次高位数字)的算法是将该整数除以10(整数除)。这样,可以用循环语句从低位到高位依次输出原整数的数字。(源程序代码ex4.21.c),2程序设计举例,2022/11/16,华中科技大学计算机学院,38,2程序设计举例(续),例4.24:输入任意一个大于或等于2的整数n,判断该数是否为素数并输出相应结果。分析:根据数学定义,一个大于2的整数n,如果除1和n外不能被任何数整除(即n不含1和n以外的任何因子),则n是素数;此外,整数2不符合上述定义,但规定2是最小素数。为了确定n是否含有1和n以外的因子,只需用2至 (也可以用2至n-1或2至n/2)作除数除n。如果均不能整除n,则n是素数,否则(即只要发现一个因子)n不是素数。显然,用2至 作除数时所做的除法次数比用2至n-1或2至n/2作除数时少得多。,2022/11/16,华中科技大学计算机学院,39,2程序设计举例(续),例4.24:算法步骤:(1) 输入n,直到n符合要求为止(循环语句);(2) 确定除数i的初值(i=2)及终值j(j=sqrt(n);(3) 检查2 sqrt(n)的每一个数是否都不是n的因子(循环语句),方法是,i从2开始,用i除n,若余数非0且i =j,则使i值增加1再重复该过程;若余数为0(找到一个因子)或i = j不成立,则结束循环。(4) 如果循环结束后余数为非0,则说明2 sqrt(n)范围内的整数都不是n的因子,因此可以判定n是素数;否则(发现一个因子),n不是素数。例4.24源程序代码ex4.24.c。,2022/11/16,华中科技大学计算机学院,40,3循环语句小结(略),三种循环语句的区别及使用要点归纳如下(s是循环体;e,e1,e2,e3是表达式):(1)while(e)s和for(e1;e2;e3)s先测试e或e2,后执行s,若第一次测试时e或e2结果为0,则s一次也不执行;do s while(e);先执行s,后测试e,所以s总是至少被执行一次。使用时应根据具体情况选用,一般说来,必定要执行的循环可以用三种循环语句中任何一种;可能不被执行的循环则不能用do-while。(2)第一次测试循环条件(e或e2)之前,循环变量必须赋初值,初值只赋一次;在循环体(s)或e3(对于for语句)中必须有能够改变循环变量值的语句或表达式。写循环条件时,应注意避免无限循环、永不执行的循环或执行次数不正确的循环等情况。,2022/11/16,华中科技大学计算机学院,41,3循环语句小结(续) (略),(3)for语句控制部分的e1可以包含给循环变量赋初值以及其他与循环有关的运算,即在循环开始之前仅执行一次的运算;e2不要求一定是关系表达式或逻辑表达式,只要能正确控制循环体的执行(非0值执行循环体,0值结束循环),任何表达式都可以;e3是每次执行循环体后紧接着要执行的表达式,通常用于改变循环变量的值,如i+之类,e3也可以包括某些属于循环体部分的内容,也可将e3放到循环体最后。可见,for语句使用非常灵活,其控制部分的三个表达式可以容纳除循环变量赋初值、测试循环条件和修改循环变量值的运算以外的其他与循环有关的运算。(4)任何循环语句当循环体含有一个以上语句时,必须写成复合语句(用 括起来);当循环体为空语句时不要掉了分号(;)。,2022/11/16,华中科技大学计算机学院,42,goto语句又称为无条件转移语句,它的一般形式为:goto 标号; 任何可执行C语句都可以加标号前缀成为标号语句。标号语句的形式为:标号:语句 goto语句中的标号是对标号的引用,标号语句中的标号是对标号的定义。被goto语句引用的标号必须有且仅有一个对应的标号语句,对应的标号语句称为称为该goto语句的目标语句;而允许标号语句没有对应的goto语句。概而言之,有标号的引用必须有惟一的标号定义,而有标号的定义不必有标号的引用。,4.9 goto语句和标号语句,2022/11/16,华中科技大学计算机学院,43,4.9 goto语句和标号语句(续),goto语句的目标语句允许出现的范围称为标号的作用域。C语言中标号的作用域是goto语句所在的函数,即goto语句不能从一个函数转移到另一个函数中,但可以在一个函数内从嵌套结构的内层直接转到最外层。使用标号语句时,要注意同一函数内的标号不能同名。goto语句和标号语句在函数中出现的先后位置没有约束,即对标号的定义和对标号的引用没有先后次序的规定。,2022/11/16,华中科技大学计算机学院,44,goto语句和标号语句的用法,例4.25:输入一个算式,模拟袖珍计算器的加、减、乘、除四则运算。假定计算时不考虑运算符的优先级,也不允许输入圆括号(),而是按照运算符出现的先后顺序执行运算。例如,输入10.8+0.13*100计算结果为1093.000000 例4.25源程序代码ex4.25.c。,2022/11/16,华中科技大学计算机学院,45,注意:,goto语句不是必需的语言成分。因为用goto语句实现的任何控制转移,都可以通过循环语句、if语句和其他转移语句的适当配合以及用整型变量标记状态的方法实现。goto语句的惟一好处是可以从嵌套结构的最内层(switch语句或循环语句)直接转到最外层(隔层转移),用起来较方便.但如果随意地使用goto语句则会破坏程序的结构化特性,使程序的逻辑结构不清,因此应尽量少用或不用goto语句。,2022/11/16,华中科技大学计算机学院,46,1. break语句break语句的形式为:break;break是关键字。break语句有以下两种用途:(1)用于switch语句中,从中途退出switch语句;(2)用于循环语句中,从循环体内直接退出当前循环。注意:对于嵌套的循环语句和switch语句,break语句的执行只能退出直接包含break的那一层结构。,4.10 break语句、continue语句和return语句,2022/11/16,华中科技大学计算机学院,47,4.10 break语句(续),例4.27:打印ASCII字符集中字符码为32126的字符及其字符码的对照表,每行打印8对对应值。例4.27源程序代码ex4.27c。例4.28:打印2100之间的所有素数,每行输出10个数。分析:如4.8节例4.24的程序所示,判断一个数是否为素数(找因子)要用循环语句实现,因此判断2100之间的每一个数是否为素数要用二重循环。例4.28源程序代码ex4.28.c。,2022/11/16,华中科技大学计算机学院,48,2 continue语句,continue语句的形式为:continue;(continue是关键字)continue语句只能出现在循环语句中,用于终止循环体的本次执行(并非退出循环语句);即在循环体的本次执行中,跳过从continue语句之后直到循环体结束的所有语句,控制转移到循环体的末尾。对于while (e) s;和do s while(e);,在执行continue语句之后马上执行对循环控制表达式(e)的计算和测试;对于for (e1;e2;e3) s则马上执行表达式e3,然后执行对表达式e2的计算和测试。,2022/11/16,华中科技大学计算机学院,49,2 continue语句(续),例4.29:输入10个整数,输出其中正数的个数及平均值。 例4.29源程序代码ex4.29.c。本例不用continue语句也能实现同样的功能,改写工作作为练习请读者自己完成。,2022/11/16,华中科技大学计算机学院,50,3 return语句,return语句有下面两种形式:(1)不带表达式的return语句:return;(2)带表达式的return语句:return 表达式; return语句的功能是从被调用函数返回到调用函数。不带表达式的return语句只能返回控制、不能返回值,因此只能用于从无返回值的函数中返回。带表达式的return语句(表达式可以用()括起来)在返回控制的同时,将表达式的值返回到调用处,函数调用表达式的值就是这个返回值。,2022/11/16,华中科技大学计算机学院,51,3 return语句(续),例4.30:写一个函数sign,返回浮点数x的符号。如果x小于0,则返回-1;如果x等于0,则返回0;如果x大于0,则返回1。 例4.30源程序代码ex4.30.c。,2022/11/16,华中科技大学计算机学院,52,嵌套循环指循环体是一个循环语句,或循环体包含循环语句。嵌套循环又称为多重循环,三种循环语句可以相互任意嵌套。具有两层嵌套的循环称为二重循环,具有n重嵌套的循环称为n重循环;二重以上的循环统称为多重循环。C语言对循环的嵌套层数没有限制,其中二重循环应用最为普遍,其次是三重循环。,4.11 嵌套循环程序设计,2022/11/16,华中科技大学计算机学院,53,例4.31:计算s=11+22+33+.+nn,n由终端输入。分析:设每一项的底用整型变量i表示,i从1开始每次增1直至n。考虑到溢出,ii及各项之和分别用长整型变量term和s表示。计算term是用循环对同一个i累乘i次;计算s也是用循环对每个term累加n次,而且计算term的循环是嵌套在计算s的循环体内的,所以计算s的算法是一个二重循环语句。外层循环(简称外循环)控制项数,内层循环(简称内循环)控制每项i的累乘次数。,4.11 嵌套循环程序设计(续),2022/11/16,华中科技大学计算机学院,54,例4.31:程序4.31的流程图。例4.31源程序代码ex4.31.c。,4.11 嵌套循环程序设计(续),2022/11/16,华中科技大学计算机学院,55,4.11 嵌套循环程序设计(续),例4.32:输入一个字母,在屏幕正中输出由这个字母决定其高度的字符金字塔。例如输入小写字母d,则输出下列左边图形,如果输入大写字母D,则输出右边图形。,2022/11/16,华中科技大学计算机学院,56,(1) 输入字符c;(2) 如果c是小写字母则置塔顶top为a,如果c是大写字母则置top为A,如果c是非字母字符,则置top为0;(3) 如果top非0,则输出图形(3)-1 置c1为top(外循环变量初值);(3)-2 如果c1c则输出一行: (3)-2-1 输出一行左边的所有空格,空格数目为40-2*(c1-top); (3)-2-2 输出一行的前半段(包括正中的一个字符); (3)-2-3 输出一行的后半段; (3)-2-4 输出换行; (3)-2-5 c1=c1+1,转(3)-2(循环,输出下一行); 如果c1 c则结束循环。(例4.32源程序代码ex4.32.c。),例4.32:算法步骤:,2022/11/16,华中科技大学计算机学院,57,(1)对于多重循环,特别要注意给与循环有关的变量赋初值的位置。以程序4.31为例:只需赋一次初值的操作应放在最外层循环开始执行之前,例如,赋值表达式s=0位于外循环for语句控制部分的表达式1;给内循环的有关变量赋初值应放在外循环体内、内循环开始执行之前,例如,赋值表达式语句term=1;和j=1;位于内循环do-while语句的前面,是外循环for语句循环体的一部分。(2)内、外循环变量不应同名,否则,将造成循环控制混乱,导致死循环或计算结果错误。,多重循环语句的使用要点 (略),2022/11/16,华中科技大学计算机学院,58,(3)应正确书写内、外循环的循环体:需要在内循环中执行的所有语句必须用括起来组成复合语句作为内循环体;属于外循环的语句应放在内循环体之外、外循环体之中。例如,程序4.31的赋值语句term=1;j=1;和sum+=term;都是组成外循环体的语句,其中term=1;和j=1;位于内循环do-while语句之前,sum+=term;语句位于do-while语句之后,它们均位于内循环体之外。(4)不应在循环中执行的操作应放在进入最外层循环之前或最外层循环结束之后。例如,程序4.31中对输入提示(input n:)的输出及读入项数(n)是在程序运行过程中仅需执行一次的操作,且需在循环开始之前执行;最后输出整个计算结果(sum)只需执行一次,且应在循环结束之后执行。,多重循环语句的使用要点(续),2022/11/16,华中科技大学计算机学院,59,本章习题,4.1, 4.3, 4.5, 4.6, 4.7,4.9, 4.11, 4.13, 4.15, 4.16,

    注意事项

    本文(C语言程序设计ppt课件 第4章.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开