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

    c语言第3章结构化程序设计.ppt

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

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

    c语言第3章结构化程序设计.ppt

    第三章 C语言的流程控制,本章学习重点:if语句的三种定义格式及使用switch语句的定义格式及使用while、do-while和for循环语句的结构及应用循环语句嵌套结构及流程控制语句的使用break语句和continue语句及goto语句的使用,本章目录,第五讲选择结构第六讲循环结构第七讲循环语句的嵌套和流程转向语句 本章小结,结束,结构体程序设计有三种基本结构:顺序结构 选择结构循环结构,返回到本章目录,以下四个流程图结构分别为顺序结构、选择结构、当型循环结构、直到型循环结构,返回到本章目录,第五讲 选择结构,一、基本if语句二、标准if语句三、复合if语句四、if语句的嵌套五、switch语句,返回到本章目录,思考题3-1:从键盘上输入一个整数,如果大于等于零输出“Positive Number”(正数),如果小于零输出“Negative Number”(负数)(要求用基本的if语句实现)。(一)程序分析(1)从键盘输入一个整数;(2)判断该数是大于等于零或者小于零;(3)输出对应结果。,一、基本if语句,返回到本章目录,(二)编写程序代码main()int x;/*定义整型变量x*/printf(input x:);/*提示从键盘输入一个数*/scanf(%d,/*如果小于0,输出结果为负数*/,返回到本章目录,(三)调试运行结果输入x的值为5,输出“5 is Positive Number!”;再次运行程序,输入一个x的值为-3,输出“-3 is Negative Number!”。程序运行结果如下:,返回到本章目录,1)基本if语句定义格式为if(表达式)语句;例如:if(ab)t=a;a=b;b=t;其中,if是C语言的关键字,表达式两侧的圆括号不可少,一条“语句”称为if子句。如果在if子句中需要多条语句,则应该使用花括号把一组语句括起来组成复合语句,这样在语法上仍满足“一条语句”的要求。,1.if语句基本形式,if(表达式)语句;,返回到本章目录,2)if语句的执行过程 首先计算紧跟在if后面一对圆括号中表达式的值,如果表达式的值为非零(“真”),则执行其后的if子句,然后去执行if语句后的下一个语句。如果表达式的值为零(“假”),则跳过if 子句,直接执行if语句后的下一个语句。,返回到本章目录,3)基本if语句的流程示意图 流程图如图3-2所示。表达式假(=0),真(0)语句 图3-2 基本if语句的流程示意图,返回到本章目录,4)说明 if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号将需要执行的多个语句括起,形成一个复合语句。if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,返回到本章目录,二、标准if语句,思考题3-2:从键盘上输入一个数,如果大于等于零输出“Positive Number”(正数),否则输出“Negative Number”(负数)(要求用标准if语句实现)。(一)程序分析(1)从键盘输入一个数;(2)判断该数是否大于等于零;(3)输出结果。,返回到本章目录,二、标准if语句,思考题3-2:从键盘上输入一个数,如果大于等于零输出“Positive Number”(正数),否则输出“Negative Number”(负数)(要求用标准if语句实现)。(一)程序分析(1)从键盘输入一个数;(2)判断该数是否大于等于零;(3)输出结果。,返回到本章目录,(二)编写程序代码main()int x;printf(input x:);scanf(%d,/*输出x小于0的结果为负数*/,返回到本章目录,(三)调试运行结果 输入x的值为5,输出“5 is Positive Number!”;再次运行程序,输入一个x的值为-3,输出“-3 is Negative Number!”。程序运行结果如下:,返回到本章目录,1)标准if语句定义格式例如:if(a!=0)printf(a!=0n);else printf(a=0n);,2.if语句标准形式,if(表达式)语句1;else 语句2;,返回到本章目录,在这里,“语句1”称为if子句,“语句2”称为else 子句,这些子句只允许是一条语句,若需要多条语句时,则应该使用花括号把这些语句括起来组成复合语句。注意,else不是一条独立的语句,它只是if 语句的一部分,不允许有这样的语句:else printf(*);在程序中else必须与if配对,共同组成一条if-else语句。,返回到本章目录,2)if-else语句的执行过程 首先计算紧跟在if 后面一对圆括号内表达式的值。如果表达式的值为非零,执行if子句,然后跳过 else子句,去执行if语句后的下一条语句;如果表达式的值为零,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。3)说明 if后面圆括号中的表达式,可以是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表达式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型等)。,返回到本章目录,无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能省略。例如:if(x!=0)printf(%f,x);else printf(%f,y);,返回到本章目录,4)基本if语句的流程示意图,返回到本章目录,三、复合if语句,思考题3-3:从键盘上输入一个整数,如果大于零输出“Positive Number”(正数),如果小于零输出“Negative Number”(负数),否则输出“Zero”(零)。(一)程序分析(1)从键盘输入一个整数;(2)判断该数是大于零、小于零还是等于零;(3)输出结果。,返回到本章目录,流程图,返回到本章目录,(二)编写程序代码main()int x;printf(input x:);scanf(%d,/*否则输出结果为零*/,返回到本章目录,(三)调试运行结果 输入x的值为5,输出“5 is Positive Number!”;再次运行程序,输入一个x的值为-3,输出“-3 is Negative Number!”;第三次运行程序,输入x的值为0,输出“0 is Zero!”。程序运行结果如下:,返回到本章目录,1)复合if语句定义格式,3.if语句复合形式,if(表达式1)语句1;else if(表达式2)语句2;else if(表达式n)语句n;else 语句n+1;,返回到本章目录,2)复合if语句执行过程 首先计算表达式1的值,若表达式的值为“真”(表达式具有非0值),则执行语句1;否则继续判断表达式2,若表达式的值为“真”,则执行语句2;否则继续判断下一个条件,直到最后前面n个条件都不成立时,执行else后面的语句n+1。,返回到本章目录,3)复合if语句的流程图,返回到本章目录,四、if语句的嵌套,4.if语句的嵌套,1)复合if语句定义格式在if语句中,语句1和语句2本身也可以是if语句,此时称为if语句的嵌套。2)嵌套的格式if语句可以内嵌在if子句中,又可以内嵌在else子句中。,返回到本章目录,例如:,if()if()语句1;else 内嵌if 语句2;else if()语句3;else 内嵌if 语句4;,返回到本章目录,3)嵌套的说明 以上形式的嵌套if语句执行过程可以这样理解:从上向下逐行对if后的表达式进行检测。当某一个表达式的值为非零时,就执行与此有关子句中的语句,阶梯形中的其余部分被越过去。如果所有表达式的值都为零,则执行最后的else子句;此时,如果程序中最内层的if语句没有else子句,即没有最后的那个else子句,那么将不进行任何操作。注意:C语言的语法规定,else子句总是与前面最近的未曾配对(不带else)的if组成一对。,返回到本章目录,五、switch语句,思考题3-4:设计一个程序,用switch语句实现由键盘输入一个成绩,输出该成绩的等级。其中A代表90分以上,B代表8089,C代表7079,D代表6069,E代表60分以下。如果成绩不在0-100之间则输出错误信息。(一)程序分析(1)定义score变量,存放由键盘输入的学生成绩;(2)输入学生成绩给变量score;(3)根据学生score整除10得到其十位上的数字,确定该成绩范围,并输出其等级。,返回到本章目录,(二)编写程序代码,main()float score;printf(nPlease input a score:);scanf(%f,返回到本章目录,(三)调试运行结果 程序运行结果分析:运行6次程序,每次输入一个区间的成绩(其中最后一次输入一个错误成绩,不在0-100之间)。程序运行结果如下:,返回到本章目录,5switch语句(多分支选择语句),1)switch语句定义格式,switch(表达式)case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break;case 常量表达式n:语句组n;break;default:语句组n+1;break;,返回到本章目录,2)说明 switch语句又称为开关语句,语句的执行过程如下:程序执行至switch语句首先对括号内的表达式进行计算,然后按顺序找出与常量表达式值相匹配的case,以此作为入口,执行case语句后面的各个语句组,直到遇到break或switch语句的右花括号终止语句。如果没有任何一个case能与表达式值相匹配,则执行default语句后的语句组,若default及其后语句组省略,则不执行switch中任何语句组,而继续执行下面的程序。,返回到本章目录,3)使用switch语句注意的问题(1)default语句及后面语句组可以省略。(2)switch后圆括号内表达式可以是整数表达式、字符表达式或枚举表达式。case后面是整数或字符,也可以是不含变量和函数的常量表达式。同一个switch语句中的case后的值不能相同。(3)case及后语句和default及后语句出现次序可以任意。(4)case与其后的常量表达式之间要有空格,否则系统会识别不出该常量表达式。(5)执行完一个case语句后,程序自动转到后面的语句执行,直到遇到break或switch语句的右花括号终止语句。,返回到本章目录,【练习3-1】从键盘上输入一个成绩(0100之间),输出这个分数对应的等级。其中A代表90分以上,B代表8089,C代表7079,D代表6069,E代表60分以下,如果成绩不在0100之间则输出错误信息。要求用复合if语句来实现。解:源程序如下:main()float score;printf(nPlease input a score:);scanf(%f,if(score=0&score=100),练一练,返回到本章目录,if(score=90)printf(n%.2f class is A!,score);else if(score=80)printf(n%.2f class is B!,score);else if(score=70)printf(n%.2f class is C!,score);else if(score=60)printf(n%.2f class is D!,score);else printf(n%.2f class is E!,score);else printf(nThe score is wrong!);,返回到本章目录,程序运行结果分析:运行6次程序,每次输入一个区间的成绩(其中最后一次输入一个错误成绩,不在0100之间)。程序运行结果如下:,返回到本章目录,【练习3-2】从键盘上输入一个数学四则运算表达式(a+b、a-b、a*b或a/b),要求计算出该表达式的值。解:分析题意,应该设两个整型变量a和b,再设一个存放运算符的字符型变量ch,然后根据ch的值来进行相应的运算,将结果输出即可。程序如下:main()int a,b;char ch;printf(nPlease input a formula(a+b,a-b,a*b,a/b):);scanf(%d%c%d,返回到本章目录,switch(ch)case+:printf(%d+%d=%d,a,b,a+b);break;case-:printf(%d-%d=%d,a,b,a-b);break;case*:printf(%d*%d=%d,a,b,a*b);break;case/:printf(%d/%d=%.2f,a,b,(float)a/b);break;/*因为结果为小数,所以要将a强制转换成小数形式,结果才正确*/default:printf(the formula is wrong!);,返回到本章目录,程序运行5次,分别输入4个表达式:4+5、4-5、4*5、4/5和4&5(错误的表达式),程序运行结果如下:,返回到本章目录,【练习3-3】编写一程序,从键盘上输入一个年份year(4位十进制数),判断其是否为闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。解:闰年是年份能被4整除但不能被100整除的数,或是能被400整除的数。我们设年份为year,这样就构成了一个判断闰年的条件表达式如下:(year%4=0&year%100!=0)|(year%400=0),返回到本章目录,源程序如下:main()int year;printf(Please input the year:);scanf(%d,返回到本章目录,第一次输入年份“1998”,输出结果“1998 is not a leap year.”,第二次输入年份“2000”,输出结果“2000 is a leap year.”。程序运行结果如下:,返回到本章目录,本 讲 小 结,C语言提供了可以进行逻辑判断的选择语句,由选择语句构成的选择结构将根据逻辑判断的结果决定程序的不同流程。选择结构是结构化程序设计的三种基本结构之一。通过本节学习,掌握if语句的三种格式,理解if语句的嵌套,掌握switch语句基本格式及解决问题的方法。,返回到本章目录,第六讲 循环结构,一、while语句二、do-while语句三、for循环语句,返回到本章目录,一、while语句,思考题3-5:设计一个程序,用while循环语句实现1100自然数的和。(一)程序分析 这是一个求100个数的累加和问题。加数从1变化到100,可以看到加数是有规律变化的,后一个加数比前一个加数增1,因此可以在循环体中使用一个整型变量i,每循环一次使i增1,一直循环到i的值超过100,用这个办法就解决了所需的加数问题。但是要特别注意的是变量i需要有一个正确的初值,这里初值应当设为1。,返回到本章目录,设用一个变量sum存放这100个数的和值,sum的初值为0,可以先求0加1(i的初值为1)的和并将其放在sum中,然后把sum中的数加上2再存放在sum中,依次类推,sum累加的过程要放在循环中,由计算机判断所加的数是否已经超过100,加数则放在变量i中,并在循环过程中每一次增1。,返回到本章目录,(二)编写程序代码main()int sum=0,i=1;/*sum的初值为0*/while(i=100)/*当i小于或等于100时执行循环体*/sum+=i;i+;/*在循环体中累加一次,并将i值自增1*/printf(1+2+100=%dn,sum);(三)调试运行结果,返回到本章目录,1while循环语句,1)while语句基本形式如下:,while(表达式)循环体,while是C语言的关键字。while后圆括号中的表达式,可以是C语言中任意合法的表达式,由它来控制循环体是否执行。在语法上,要求循环体可以是一条简单的可执行语句;若循环体内需要多个语句,应该用大括号括起来,组成复合语句。,返回到本章目录,2)while语句的执行过程 计算while后圆括号中表达式的值。当值为非零时,执行循环体语句。执行完后再次判断表达式的值,当表达式的值为非零时,继续执行循环体;当值为零时,退出循环。3)使用while语句注意的问题(1)循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句的形式出现。如果不用花括号,则while语句的范围只到while后面第一个分号处。(2)在循环体中应该有使循环趋向于结束的语句。如无此语句,循环将永不结束。,返回到本章目录,二、do-while语句,思考题3-6:设计一个程序,用do-while循环语句实现1100自然数的和。(一)程序分析(1)定义变量sum和i,分别存放累计和及循环次数;(2)累计和变量sum赋初值0,循环次数i赋初值1;(3)do-while循环求和;(4)输出累计和结果sum。,返回到本章目录,(二)编写程序代码main()int sum=0,i=1;do sum+=i;i+;while(i=100);printf(1+2+100=%dn,sum);(三)调试运行结果,返回到本章目录,2do-while循环语句,1)do-while语句基本形式,do 循环体 while(表达式);,2)do-while语句执行过程(1)执行do后面循环体中的语句。(2)计算while后圆括号中表达式的值。当值为非零时,转去执行步骤;当值为零时,结束do-while循环。,返回到本章目录,由do-while构成的循环与while循环十分相似,它们之间的重要区别是:while循环控制出现在循环体之前,只有当while后面表达式的值为非零时,才可能执行循环体;在do-while构成的循环中,总是先执行一次循环体,然后再求表达式的值,因此,无论表达式的值是零还是非零,循环体至少执行一次。和while循环一样,在do-while循环体中,一定要有能使while后表达式的值变为0的操作,否则,循环将会无限制地进行下去,进入死循环。,返回到本章目录,3)do-while语句的使用说明:(1)do是C语言的关键字,必须和while联合使用。(2)do-while循环由do开始,至while结束。while(表达式)后的“;”不可丢,它表示do-while语句的结束。,do-while语句的程序流程图,返回到本章目录,(3)while后圆括号中的表达式可以是C语言中任意合法的表达式,由它控制循环是否执行。(4)按语法,在do和while之间的循环体只能是一条可执行语句;若循环体内需要多个语句,应该用大括号括起来,组成复合语句。,返回到本章目录,三、for循环语句,思考题3-7:设计一个程序,用for循环语句实现1100自然数的和。(一)程序分析,(1)定义变量sum和i,分别存放累计和及循环次数;(2)累计和变量sum赋初值0;(3)for循环求和;(4)输出累计和结果sum。,返回到本章目录,(二)编写程序代码main()int sum,i;for(i=1,sum=0;i=100;i+)sum=sum+i;printf(1+2+3+100=%dn,sum);(三)调试运行结果,返回到本章目录,3for循环语句,1)for语句基本形式,例如:for(k=0;k10;k+)printf(*);以上for循环在一行上输出10个“*”号。,for(赋初值语句;条件表达式;自增(减)语句)循环体,返回到本章目录,for是C语言的关键字,其后的圆括号中通常含有三个表达式,各表达式之间用“;”隔开。这三个表达式可以是任意形式的表达式,通常主要用于for循环的控制。紧跟在for之后的循环体,在语法上要求是一条语句;若在循环体内需要多条语句,应该用大括号括起来组成复合语句。,返回到本章目录,2)for语句执行过程,(1)执行“赋初值语句”为循环体变量赋初值(注意,该语句在整个循环中只在开始时执行一次)。(2)判断“条件”是否成立:若其值为非零,转步骤;若其值为零,转步骤。(3)执行一次for循环体。(4)执行“自增(减)语句”;转向步骤。(5)结束循环,执行for循环之后的语句。,返回到本章目录,3)for语句的使用说明,(1)for语句中的表达式可以部分或全部省略,但两个“;”不可省略。例如:for(;)printf(*);三个表达式均省略,但因缺少条件判断,循环将会无限制地执行,而形成无限循环(通常称为死循环)。(2)for后括号中的表达式可以是任意有效的C语言表达式。,返回到本章目录,例如:for(sum=0,i=1;i=100;sum=sum+i,i+)其中表达式1和表达式3都是一个逗号表达式。注意:C语言中的for语句书写灵活,功能较强。在for后的圆括号中,允许出现各种形式的与循环控制无关的表达式,虽然这在语法上是合法的,但这样会降低程序的可读性。建议初学者在编写程序时,在for后面的圆括号内仅含有能对循环进行控制的表达式,其他操作尽量放在循环体内完成。,返回到本章目录,【练习3-4】分别用while和do-while两种循环语句编程实现s=1*2*10的积的程序解:设一个循环体变量i和存放乘积的变量sum,初始设i等于1,sum等于1。使用循环语句,将每次的i值乘到sum上,然后将i值自加1,直到i大于10时循环结束(注意乘积sum的数值如果大于int型数据的取值范围时,应将其类型设为长整型long)。(1)使用while循环解题程序如下:,练一练,返回到本章目录,main()int i=1;long sum=1;while(i=10)sum*=i;i+;printf(1*2*10=%ldn,sum);程序运行结果如下:,返回到本章目录,(2)使用do-while循环解题程序如下:main()int i=1;long sum=1;do sum*=i;i+;while(i=10);printf(1*2*10=%ldn,sum);程序运行结果同使用while语句的程序运行结果。,返回到本章目录,注意:如果将sum定义为int型变量时,会出现溢出现象,结果错误。还要注意长整型变量sum在输出时格式控制符要写成“%ld”才能正确输出结果。,返回到本章目录,【练习3-5】编程实现从键盘输入任意数给变量x,求从1到x的和。解:设一个用于存放输入值的变量x,再设一个循环体变量i和存放和的变量sum。先从键盘中输入x的值,然后设i初始值等于1,sum等于0。再使用循环语句,将每次的i值加到sum上,然后将i值自加1,直到i大于x时循环结束。解题程序如下:main()int i=1,x,sum=0;,返回到本章目录,printf(ninput a positive integer number:);scanf(%d,输入j值为5,程序运行结果如下:,返回到本章目录,本讲小结,本讲介绍了用while、do-while、for循环语句设计程序,注意while语句是先判断后执行循环,而do-while是执行一次循环后再判断条件,for语句是循环结构中功能最强、最灵活、使用最多的语句。注意三种循环语句的书写格式及在什么情况下使用哪种语句。,返回到本章目录,一、循环语句嵌套二、流程转向语句goto语句三、break语句四、continue语句,第七讲循环语句的嵌套和 流程转向语句,返回到本章目录,思考题3-8:打印杨辉三角形。(一)程序分析 杨辉三角形中,每个数值可以由组合来计算。,一、循环语句的嵌套,返回到本章目录,已知:假定第一行中的数字距离左边首列为40个空格符,每一行的第一个值应向左移2个空格符,每个数字之间留4个空格符。,【思考题3-8】的程序流程图,返回到本章目录,(二)编写程序代码,main()int c,m,n,i;for(m=0;m=10;m+)/*输出杨辉三角形*/c=1;/*每行的第一个数字赋值为1*/for(i=0;i40-2*m;i+)printf();/*输出该行左边的空格*/printf(%d,c);/*输出该行的第一个数字1*/for(n=1;n=m;n+)/*输出该行的其余数字*/c=c*(m-n+1)/n;printf(%4d,c);/*P38*/printf(n);/*每行结束输出换行符*/,返回到本章目录,(三)调试运行结果 程序运行结果如下:,返回到本章目录,1循环语句的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。三种循环(while循环、do-while循环和for循环)可以互相嵌套。例如,以下几种都是合法的形式:,返回到本章目录,返回到本章目录,二、流程转向语句goto语句,思考题3-9:设计一个程序,用goto语句实现1100自然数的和。,(一)程序分析,(1)定义变量sum和i,分别存放累计和及循环次数;(2)累计和变量sum赋初值0,循环次数i赋初值1;(3)使用if语句和goto语句构成循环求和;(4)输出累计和结果sum。解决该程序的方法利用了流程转向语句goto语句,在“小讲堂”中将对goto语句做详细说明。,返回到本章目录,(二)编写程序代码main()int sum=0,i=1;a1:sum=sum+i;i+;if(i=100)goto a1;/*流程转向语句,一般与if语句一起构成循环*/printf(1+2+100=%dn,sum);,返回到本章目录,(三)调试运行结果,程序运行结果如下:,返回到本章目录,2goto语句,1)goto语句形式例如:goto lable;lable:“语句标号”用标识符表示,它的定名规则与变量名相同。例如,在【思考题3-9】中,a1就是标号。一般来说,如果要使用goto语句构成循环,一般是用if语句和goto语句配合使用的。当if语句条件为真时无条件转到标号所在程序行进行执行。,goto 语句标号;,返回到本章目录,2)语句执行流程 在程序执行过程中,如果遇到goto语句,则程序执行流程无条件地转向语句标号后的语句继续执行。3)说明(1)语句标号仅仅对goto语句有效,对其他语句不影响。(2)同一个程序中,不允许有同名标号。(3)goto语句通常与条件语句配合使用,可用来实现条件转移、构成循环、跳出循环体等功能。,返回到本章目录,三、break语句,思考题3-10:设计一个程序,判断一个整数是否为素数。(一)程序分析 素数就是除了1和它本身,不能被任何数整除的数。因此,如果一个数x是素数,就不能被2x-1之间的任何一个数整除。进一步思考,如果x在2 之间有一个数a可以被其整除,则在 x-1之间也会有一个数b存在,满足x=ab成立。,返回到本章目录,所以在查找时,只要x在2 之间没有任意一个数能被整除,则x在 x-1区间内也不会有任意一个数能被整除(即循环终值为而不是x-1)。所以程序中使用x%i的余数是否为0来判断x是否能被i整除。退出循环后,如果i,表示x不能被2 中任何一个数整除,则x是素数,否则x不是素数。,返回到本章目录,【思考题3-10】的程序流程图,返回到本章目录,#include math.hmain()int i,x;printf(nPlease input a integer number(1):);scanf(%d,(三)调试运行结果,(二)编写程序代码,返回到本章目录,3break语句,1)break语句基本形式,break;,2)break语句的使用说明(1)只能在循环体内和switch语句体使用break语句。(2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句。当break出现在循环体中,但并不在switch语句内时,则在执行break后,跳出本层循环体。,返回到本章目录,3)使用break语句注意的问题(1)循环体中break语句只能退出所在循环,不能退出整个程序。(2)break语句只能用于switch和循环语句,不能用于其他。,返回到本章目录,四、continue语句,思考题3-11:设计一个程序,求1100中所有奇数和。,(一)程序分析,(1)定义存放结果变量sum和循环次数变量i。(2)给sum赋初值0。(3)循环中使用if判断是否为奇数,若为奇数则参与求和运算。(4)输出sum的值。,返回到本章目录,main()int sum,i;sum=0;for(i=1;i=100;i+)if(i%2=0)continue;sum+=i;printf(n1+3+5+99=%dn,sum);(三)调试运行结果,(二)编写程序代码,返回到本章目录,4continue循环语句,1)continue基本形式,continue;,2)continue语句的使用说明其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。注意:执行continue语句并没有使整个循环终止,而是结束本次循环,继续判断循环条件。,返回到本章目录,【练习3-6】输出100200之间的全部素数。所谓素数m是指,除1和m之外,不能被2m-1之间的任何整数整除(前面讲过查找区间可以缩小为2)。解:显然,只要设计出判断某数m是否是素数的算法,外面再套一个for循环即可。判断某数m是否是素数的算法:根据素数的定义,用2之间的每一个数去整除m,如果都不能被整除,则表示该数是一个素数。判断一个数是否能被另一个数整除,可通过判断它们整除的余数是否为0来实现。,返回到本章目录,解法程序如下:#include main()int m,n,i=0;for(m=100;m=200;m+=2)for(n=2;n=sqrt(m);n+)if(m%n=0)break;,返回到本章目录,if(nsqrt(m)printf(%5d,m);i+;if(i%10=0)printf(n);程序运行结果如下:,返回到本章目录,【练习3-7】输出100200之间不能被3整除的数。解:设两个整型变量n和k,n为循环变量,k为格式控制变量。令n的初值为100,n小于等于200的时候,判断n是否能被3整除,能整除,则提前结束本次循环。如果不能整除,则输出该值,并将k自加1。当k整除10时,输出一个换行符。,返回到本章目录,解法程序如下:main()int n,k=0;for(n=100;n=200;n+)if(n%3=0)continue;printf(%5d,n);k+;printf(%5d,n);k+;if(k%10=0)printf(n);,返回到本章目录,程序运行结果如下:,返回到本章目录,【练习3-8】百钱百鸡问题:假设1只公鸡卖3文钱,1只母鸡卖1文钱,3只小鸡卖1文钱,如果用100文钱买100只鸡,问公鸡、母鸡和小鸡各占多少只?解:因为一共有100只鸡,所以假设公鸡、母鸡和小鸡的数量为i、j和k,则有等式i+j+k=100成立。又因为一共是100文钱买100只鸡,所以每种鸡的数量乘以其花的钱数之和为100文钱,即有3*i+j+k/3=100成立。又因为C语言中的“/”两侧都是整数时,运算为整除,结果不准确,而3只小鸡卖1文钱,所以小鸡的数量k应该是3的倍数,所以有k%3=0成立。这三个等式同时成立时的i、j和k值即为符合条件的三种鸡的数量。,返回到本章目录,源程序如下:main()int i,j,k;clrscr();/*清屏*/for(i=1;i=33;i+)for(j=1;j=100;j+)for(k=1;k=100;k+)if(i+j+k=100,返回到本章目录,程序运行结果如下:,返回到本章目录,本 讲 小 结,break语句和continue语句主要用于循环的流程控制,二者在用法上有显著差别。break语句用于结束其所在的switch分支结构或循环结构。continue语句用于结束本次循环。,返回到本章目录,本章小结,本章主要介绍了选择结构和循环结构程序设计的语法结构、使用方法及注意事项,以及与之相关的流程控制语句。通过本章学习,应熟练掌握选择结构中if语句、switch语句的意义和使用方法,熟练掌握for循环、while循环和do-while循环的基本结构和应用,掌握break和continue语句的使用方法及流程转向语句goto语句的适用范围及用法。,返回到本章目录,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开