书签 分享 收藏 举报 版权申诉 / 30
上传文档赚钱

类型c语言教案第四章.ppt

  • 上传人(卖家):hwpkd79526
  • 文档编号:5657089
  • 上传时间:2023-04-29
  • 格式:PPT
  • 页数:30
  • 大小:863KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《c语言教案第四章.ppt》由用户(hwpkd79526)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言 教案 第四
    资源描述:

    1、2023-4-291C语言程序设计 第第四四章章 程序流程控制程序流程控制n算法算法的基本概念以及表示方法,简单介绍流程图的基本概念以及表示方法,简单介绍流程图nC C程序的程序的3 3种基本流程种基本流程控制结构:控制结构:顺序结构、选择结构顺序结构、选择结构(也叫分支结构)、循环结构(也叫分支结构)、循环结构,每种结构的控制语句:,每种结构的控制语句:if、switch控制选择结构控制选择结构for、while、dowhile控制循环结构控制循环结构break、continue、goto等等语句的用法语句的用法循环嵌套程序的设计及运行过程循环嵌套程序的设计及运行过程n一些常用算法的基本思想

    2、:一些常用算法的基本思想:分段函数求解问题分段函数求解问题判断一个整数是否为质数判断一个整数是否为质数求两个正整数的最大公约数求两个正整数的最大公约数各种求和问题各种求和问题掷骰子游戏的多种解法掷骰子游戏的多种解法求阶乘求阶乘打印规则的图形打印规则的图形穷举问题的多种求解方法穷举问题的多种求解方法n算法算法(AlgorithmAlgorithm)就是为解决一个具体问题而采取)就是为解决一个具体问题而采取的有限的操作步骤,算法通过的有限的操作步骤,算法通过语句语句来实现来实现 n计算机算法分两类:计算机算法分两类:数值运算算法数值运算算法、非数值运算算法非数值运算算法n程序程序=数据结构数据结构

    3、+算法算法n算法的正确性衡量标准:算法的正确性衡量标准:有穷性:有穷性:算法包含有限步操作算法包含有限步操作确定性:确定性:每一步都应确定无歧义每一步都应确定无歧义 有效性:有效性:每一步都应能有效执行且能得到确定的结果每一步都应能有效执行且能得到确定的结果 0 0或多个输入或多个输入:程序允许无输入程序允许无输入 1 1或多个输出:或多个输出:任何程序都必须有输出,哪怕是提示信息任何程序都必须有输出,哪怕是提示信息 解决求数值解的问题解决求数值解的问题 解决需要用分析推理、逻解决需要用分析推理、逻辑推理才能解决的问题辑推理才能解决的问题 数据的描述和组织形式数据的描述和组织形式 对操作或行为

    4、的描述,对操作或行为的描述,即操作步骤即操作步骤 n常用的算法描述方法有:自然语言、常用的算法描述方法有:自然语言、传统流程图传统流程图、NSNS流程图、伪代码等,这里只介绍传统流程图。流程图、伪代码等,这里只介绍传统流程图。n例:求例:求n!n!的算法思想:的算法思想:nn!=1n!=1*2 2*3 3*n nn由于计算机执行乘法时每次只能求两个数相乘,因此由于计算机执行乘法时每次只能求两个数相乘,因此上面的公式在程序中必定需要通过上面的公式在程序中必定需要通过反复相乘反复相乘来实现。来实现。n需要设定一个变量需要设定一个变量n n,表明求多少的阶乘;,表明求多少的阶乘;n第二个变量第二个变

    5、量,存当前累乘的结果;,存当前累乘的结果;n第三个变量第三个变量存当前将要与累乘器相乘的因子,并且该存当前将要与累乘器相乘的因子,并且该因子的变化是从因子的变化是从1 1到到n n每次增加每次增加1 1n流程图如下页所示流程图如下页所示no开始开始n0?输入输入n图图4.2 计算计算n!的传统流程图的传统流程图fac=1,i=1fac=fac*ii=i+1i=n?yes输 出输 出 f a c值值no结束结束输 出 错 提输 出 错 提示示yes开始开始结束框结束框输入输入/输出框输出框判判断断框框一般一般处理框处理框循环循环结构结构3 3种基本结构的种基本结构的特点:单入口,特点:单入口,单

    6、出口单出口流程线流程线选择选择结构结构顺序结构顺序结构nC C语言的语句有语言的语句有五大类:五大类:n(1)9种种控制语句控制语句:这一类语句用于实现流程控制,选择结构和循:这一类语句用于实现流程控制,选择结构和循环结构必须通过控制语句实现。环结构必须通过控制语句实现。ifelse语句语句:是实现选择结构最常用的语句:是实现选择结构最常用的语句switch语句:语句:用于控制某些多分支的选择结构用于控制某些多分支的选择结构 for()语句语句:最常用最灵活的循环控制语句,当型循环:最常用最灵活的循环控制语句,当型循环while()语句语句:循环结构最安全的控制语句,当型循环:循环结构最安全的

    7、控制语句,当型循环dowhile()语句语句:控制先执行后判断的直到型循环结构:控制先执行后判断的直到型循环结构continue语句语句:表示提前结束本次循环,忽略其后循环体中的其他语句:表示提前结束本次循环,忽略其后循环体中的其他语句break语句语句:可用于:可用于switchswitch语句语句(结束结束switch)switch)或循环体中或循环体中(结束本层循环结束本层循环)goto语句语句:流程跳转语句,很灵活,可实现各种结构,建议少用或不用:流程跳转语句,很灵活,可实现各种结构,建议少用或不用 return语句语句:专门用于函数返回,被调函数执行到:专门用于函数返回,被调函数执行

    8、到returnreturn就返回到调用点就返回到调用点 n(2)变量声明语句变量声明语句:用来定义变量,形如:用来定义变量,形如:int a,b;n(3)表达式语句表达式语句:C C语言中任何一个表达式最后加上分号构成表达式语句,语言中任何一个表达式最后加上分号构成表达式语句,赋值语句和函数调用语句赋值语句和函数调用语句是最常用的表达式语句是最常用的表达式语句n(4)复合语句复合语句:以一对大括号括起的以一对大括号括起的0 0或多条语句,在语法上仍为一条语句或多条语句,在语法上仍为一条语句 n(5)空语句空语句:只有一个分号构成的语句,表示什么也不做只有一个分号构成的语句,表示什么也不做 n顺

    9、序结构的特点顺序结构的特点:语句按顺序依次执行,不涉及到任何:语句按顺序依次执行,不涉及到任何条件的判断。条件的判断。n顺序结构所使用的语句顺序结构所使用的语句:变量声明语句、读写函数调用:变量声明语句、读写函数调用语句、赋值语句、语句、赋值语句、returnreturn语句等。无需用其他流程控制语句等。无需用其他流程控制语句语句n优点优点:结构简单易懂:结构简单易懂n缺点缺点:对程序的健壮性、完备性往往无法兼顾:对程序的健壮性、完备性往往无法兼顾n例:例:程序程序4.1 4.1 从键盘上输入从键盘上输入a a,b b,c c的值,并以它们为的值,并以它们为三角形的三条边,求三角形的面积。三角

    10、形的三条边,求三角形的面积。n 算法思想:算法思想:根据数学知识,设一个变量根据数学知识,设一个变量s s用于求三角形用于求三角形周长的一半,即周长的一半,即s=(a+b+c)/2s=(a+b+c)/2,再利用一般三角形求面,再利用一般三角形求面积的公式求解:积的公式求解:c)b)(sa)(ss(sn程序程序4.1 4.1 求任意三角形的面积求任意三角形的面积n#includen#include /包含平方根函数包含平方根函数sqrt的声明的声明nint main()nn double a,b,c,s,area;/定义定义5个个double变量变量n printf(“Please input

    11、a,b,c:n”);/屏幕提示屏幕提示 scanf(%lf%lf%lf,&a,&b,&c);/输入输入a,b,c的值的值n s=(a+b+c)/2;/求周长的一半求周长的一半n area=sqrt(s*(s-a)*(s-b)*(s-c);/求面积求面积n printf(area=%fn,area);/输出面积输出面积 n return 0;n输入输入 3 4 5输出输出area=6.000000 编程提示编程提示:存原始数据的变:存原始数据的变量,用读入方式使其获得量,用读入方式使其获得的值更灵活,也可赋值,的值更灵活,也可赋值,但是通用性下降但是通用性下降编程提示编程提示:如果变量的值需要根

    12、据其他:如果变量的值需要根据其他变量或一定的计算规则计算出来,则变量或一定的计算规则计算出来,则使用赋值语句而不能读入使用赋值语句而不能读入问题问题1 1:可能会输入负数可能会输入负数问题问题2 2:即使输入的都是正数,即使输入的都是正数,未必能构成一个三角形未必能构成一个三角形顺序结构顺序结构无法解决需要作出判无法解决需要作出判断的问题!断的问题!n选择结构的特点选择结构的特点:通过某一个或若干条件的约束,有选:通过某一个或若干条件的约束,有选择性地执行特定语句择性地执行特定语句-在符合一定条件时,执行特定在符合一定条件时,执行特定操作;在不符合条件时,操作;在不符合条件时,不执行操作不执行

    13、操作或或执行另外的操作执行另外的操作 n选择结构使用的流程控制语句选择结构使用的流程控制语句:ifif语句、语句、switchswitch语句语句n优点优点:保证程序的健壮性、完备性:保证程序的健壮性、完备性nifelseifelse语句形式语句形式:n ifif(表达式表达式)语句块语句块1 1n else else 语句块语句块2 2 n执行过程执行过程:先计算先计算表达式表达式,若若非非0(0(真真)n则执行语句则执行语句块块1 1;如果表达式为如果表达式为0(0(假假)n则执行语句则执行语句块块2 2 不平衡的不平衡的ifelseifelse语句语句(单分支单分支if if)ifels

    14、eifelse语句语句(双分支双分支if if)表达式可以是任何类型的表达式可以是任何类型的,条件表达式和逻辑表达式条件表达式和逻辑表达式最常用最常用语句块通常用复合语语句块通常用复合语句实现句实现,若复合语句若复合语句内只有一条语句内只有一条语句,则则一对大括号可以不写一对大括号可以不写表达式表达式真真假假语句块语句块1 1语句块语句块2 2不平衡的不平衡的ifelseifelse语句语句(if if语句语句)不执行操作不执行操作n程序程序4.1 4.1 求任意三角形的面积求任意三角形的面积n#includen#include /包含平方根函数包含平方根函数sqrt的声明的声明nint ma

    15、in()n double a,b,c,s,area;/定义定义5个个double变量变量n printf(“Please input a,b,c:n”);/屏幕提示屏幕提示 scanf(“%lf%lf%lf”,&a,&b,&c);/输入输入a,b,c的值的值n s=(a+b+c)/2;n area=sqrt(s*(s-a)*(s-b)*(s-c);/求面积求面积n printf(“area=%fn”,area);/输出面积输出面积 n n return 0;n问题问题1 1:可能会输入负数可能会输入负数问题问题2 2:即使输入的都是正数,即使输入的都是正数,未必能构成一个三角形未必能构成一个三

    16、角形顺序结构顺序结构无法解决需要作出判无法解决需要作出判断的问题!断的问题!程序程序4.2 4.2 改进程序改进程序4.14.1,在构成三角形时求面积,否则给提示信息,在构成三角形时求面积,否则给提示信息if (a0&b0&c0&a+bc&a+cb&b+ca)else printf(Error input!n);此此elseelse分支分支不能省略不能省略,否则在不能,否则在不能构成三角形时将没有任何输出,构成三角形时将没有任何输出,就不是一个正确的算法了就不是一个正确的算法了n程序程序4.3 4.3 生成生成5050以内的两个随机数,比较大小,输出较大者及以内的两个随机数,比较大小,输出较大

    17、者及两者之差的值。若第两者之差的值。若第1 1个数大于第个数大于第2 2个数,输出个数,输出you are lucky!you are lucky!n#includen#include /含含srand和和rand函数的原型函数的原型n#include /含含time函数的原型函数的原型nint main()nint a,b;/定义两个整型变量定义两个整型变量a和和bnsrand(time(NULL);/调用当前系统时钟产生随机种子调用当前系统时钟产生随机种子a=rand()%50;/产生一个产生一个50以内的随机数赋给以内的随机数赋给anb=rand()%50;/产生另一个产生另一个50以内

    18、的随机数赋给以内的随机数赋给bnif(ab)/如果如果a大于大于bn printf(“the larger number is a:%dn”,a);/输出较大者输出较大者n printf(a-b=%dn,a-b);/输出输出a与与b的差值的差值n else /如果如果a不大于不大于b,即即ab)printf(“you are lucky!n”);/if语句语句nreturn 0;n若删除此句,则每次产生的随若删除此句,则每次产生的随机数都是一样的,这是调用系机数都是一样的,这是调用系统时钟产生随机种子统时钟产生随机种子上机运行观察结果上机运行观察结果上机测试观察运行结果并分析:上机测试观察运行

    19、结果并分析:(1)(1)删除删除srand(time(NULL);(2)(2)删除删除elseelse后的一对大括号后的一对大括号若删除此一对括号,则语句若删除此一对括号,则语句printf(“b-a=%dn”,b-a);成为成为一条不受条件控制的语句一条不受条件控制的语句nifelseifelse语句形式语句形式:ifif(表达式表达式)语句块语句块1 1 elseelse 语句块语句块2 2 nifif语句形式语句形式:ifif(表达式表达式)语句块语句块1 1n最常用的嵌套最常用的嵌套ifelseifelse语句形式语句形式:ifif(表达式表达式1)1)语句块语句块1 1 elseel

    20、se ifif(表达式表达式2)2)语句块语句块2 2 else else 语句块语句块n n在语句块处还可以嵌入在语句块处还可以嵌入ifif或或ifelseifelse语句,形成形式多语句,形成形式多样的嵌套样的嵌套ifif语句,以解决多语句,以解决多分支分支(=3=3)的处理问题的处理问题elseelse总是与其前面与之最靠近的并且未与其它总是与其前面与之最靠近的并且未与其它elseelse匹配过的匹配过的ifif相对应;相对应;每个每个elseelse都代表了与其对应都代表了与其对应ifif完全相反的条件,编完全相反的条件,编程时应充分利用程时应充分利用elseelse所代表的条件简化程

    21、序所代表的条件简化程序整个嵌套的整个嵌套的ifelseifelse语句从语句从语法上仍为一条语句语法上仍为一条语句n程序程序4.4 4.4 用嵌套用嵌套ifif进行符号函数求解进行符号函数求解n#include nint main()n int x,sign;n printf(Please input x:);n scanf(%d,&x);n if(x0)n sign=1;n elsen if(x=0)n sign=0;n else sign=-1;n printf(x=%d,sign=%dn,x,sign);n return 0;n 1sign=0 -1/语句语句2 2处嵌入处嵌入ifels

    22、eifelse此此else代表的条件是代表的条件是x=0此此else代表的条件是代表的条件是x=0)if(x0)sign=1;else sign=0;else sign=-1;语句语句1 1处嵌入处嵌入ifelseifelse此此else代表的条件是代表的条件是x100|score=90)grade=A;nelse if(score=80)grade=B;n else if(score=70)grade=C;nelse if(score=60)grade=D;n else grade=E;nprintf(“%d-%cn”,score,grade);/输出百分成绩及等级输出百分成绩及等级nn.A

    23、 90score100 B 80score90grade=C 70score80 D 60score70 E 0score60 有效的分数应满足有效的分数应满足:0=score=100此此else代表的条件为代表的条件为:0=score&score=100 完整的条件为完整的条件为:90=score&score=100 此此else代表的条件为代表的条件为:0=score&score90 完整的条件为完整的条件为:80=score&score90 此此else代表的条件为代表的条件为:0=score&score80 完整的条件为完整的条件为:70=score&score80 此此else代表的

    24、条件为代表的条件为:0=score&score70 完整的条件为完整的条件为:60=score&score70 此此else代表的条件为代表的条件为:0=score&score100|score=90)grade=A;nelse if(score=80)grade=B;n else if(score=70)grade=C;nelse if(score=60)grade=D;n else grade=E;nprintf(“%d-%cn”,score,grade);nn.switch(score/10)/为减少常量的个数为减少常量的个数 case 10:case 9:grade=A;break;c

    25、ase 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;case 5:case 4:case 3:case 2:case 1:case 0:grade=E;break;方法二:用方法二:用switchswitch语句实现百分制转五级分制语句实现百分制转五级分制这些这些breakbreak都都不能省略不能省略此此breakbreak可以省略可以省略在在VC+下运行程序观察结果,下运行程序观察结果,遗遗憾:憾:每次运行程序只能输入一个每次运行程序只能输入一个成绩,一次运行无法输入多个百成绩,一次运行无法输入多个百分成绩进行转换!分

    26、成绩进行转换!n循环结构的特点循环结构的特点:某些操作:某些操作在一定条件约束下在一定条件约束下在程序中在程序中可被可被重复重复执行,或者执行,或者重复执行到满足一定的条件时停止重复执行到满足一定的条件时停止 n循环结构使用的流程控制语句循环结构使用的流程控制语句:for for语句、语句、whilewhile语句、语句、dowhiledowhile语句;语句;n辅助语句辅助语句:breakbreak语句、语句、continuecontinue语句语句nfor语句形式语句形式:for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3)3)语句块语句块n执行过程见右边流程图执行过程见右

    27、边流程图n注意:注意:forfor语句中的语句中的3 3个表达式可以个表达式可以省略省略 1 1个或多个个或多个,最多,最多3 3个都可省略,但是个都可省略,但是 分号不能省分号不能省,且应保证执行,且应保证执行结果不变结果不变,不能死循环不能死循环 当型循环当型循环 直到型循环直到型循环 用于求初值,用于求初值,只计算一次只计算一次用来作为控制循环的条件,用来作为控制循环的条件,非非0 0值则执行语句块;若为值则执行语句块;若为0 0,则结束则结束forfor语句语句语句块执行结束后自动执语句块执行结束后自动执行此表达式,然后再重新行此表达式,然后再重新计算表达式计算表达式2 2就是循环体,

    28、通常用复合语就是循环体,通常用复合语句,只能是一条语句句,只能是一条语句整个整个forfor语句在语法语句在语法上就是一条语句上就是一条语句假假表达式表达式2 2真真语句块语句块表达式表达式1 1表达式表达式3n程序程序4.6 4.6 从键盘上输入一个非负整数从键盘上输入一个非负整数n n,求,求n!n!n#includenint main()n int n,i;/定义两个整型变量,定义两个整型变量,i表示乘数表示乘数 n double fac=1;n printf(Please input n:n);/提示输入数据的信息提示输入数据的信息n scanf(“%d”,&n);/从键盘上输入一个整

    29、数值从键盘上输入一个整数值n if(n=0n for(i=1;i=n;i+)/用用for语句实现循环语句实现循环n fac*=i;/累乘器作为被乘数与乘数累乘器作为被乘数与乘数i相乘相乘n printf(%d!=%en,n,fac);/累乘器中的结果是累乘器中的结果是n!的值的值n n return 0;n若输入为:若输入为:-5 输出结果为:输出结果为:Error input!若输入为:若输入为:4 输出结果为:输出结果为:4!=2.400000e+001若输入为:若输入为:100 输出结果为:输出结果为:100!=9.332622e+157facfac的类型应当定义为的类型应当定义为dou

    30、bledouble类型,因类型,因为为阶乘的结果阶乘的结果很容易非常很容易非常大大,应当定义,应当定义范围最广范围最广的数据类型作为累乘器的类型,的数据类型作为累乘器的类型,并且一定要并且一定要初始化为初始化为1 1 对对n n作判断,保证程序的健壮性作判断,保证程序的健壮性 用用%e%e以指数形式输出一个以指数形式输出一个较大的结果比较合理较大的结果比较合理 执行的操作不变,执行的操作不变,但是变量是在不断但是变量是在不断变化的变化的forfor语句中表达式省略示例语句中表达式省略示例=1;1;+;fac*=i+;if(in)break;循环次循环次数确定数确定n程序程序4.74.7 输入输

    31、入1 1个正整数个正整数m m,判断,判断m m是否为质数,输出判断结果是否为质数,输出判断结果 n质数的概念质数的概念:除了除了1 1和它自己外,不能被任何其他整数所整除和它自己外,不能被任何其他整数所整除 n算法思路算法思路:设一个变量设一个变量prime表示结果表示结果,值为值为1表示表示是是质数质数,值为值为0则则不是不是质数质数 最初可以最初可以先假定先假定m是质数是质数,即即prime初值为初值为1,设一个变量设一个变量i作为除作为除数数,从从2变化到变化到m-1,只要其中有一个只要其中有一个能被能被m整除整除(即满足即满足m%i=0),就说明就说明m不是不是质数质数,立即修改立即

    32、修改prime为为0,否则继续取下一除数计算否则继续取下一除数计算 n除数终值到底取多少除数终值到底取多少:除数的终值需要到除数的终值需要到m-1m-1吗吗?数学已上证明数学已上证明,除数最大只要到除数最大只要到sqrt(msqrt(m)就已经保证所有可能的因子均已被判断就已经保证所有可能的因子均已被判断n循环条件的控制循环条件的控制:本题是循环本题是循环次数不可确定次数不可确定的循环问题的循环问题,用用forfor语句也可以解决语句也可以解决.以上分析表明循环终止有以上分析表明循环终止有两种可能两种可能:(1):(1)被某一被某一个个i i整除整除,(2)i,(2)i的值已变到终值处的值已变

    33、到终值处.因此循环条件体现为两个条件因此循环条件体现为两个条件共同控制共同控制,即即:prime&iprime&i=(=(int)sqrt(mint)sqrt(m)n特殊正整数的处理特殊正整数的处理:当当m为为1时时,直接给出直接给出prime=0,不必循环不必循环n程序程序4.74.7 从键盘输入一个正整数从键盘输入一个正整数m m,判断,判断m m是否为质数,输出判是否为质数,输出判断结果断结果 n#includen#include /包含包含sqrtsqrt的原型的原型 nint main()n int m,i,k,prime=1;n scanf(%d,&m);n if(m=0)prin

    34、tf(Input error!n);return 0;n if(m=1)prime=0;n k=(int)sqrt(m);/求求m的平方根的平方根n for(i=2;prime&ikik而终止而终止,前前者表明者表明mm不是质数不是质数,后者表明后者表明mm是质数是质数,prime,prime保持初值保持初值1 1判断判断mm是否能被是否能被i i整除整除,若能则若能则primeprime赋值为赋值为0,0,不是质数不是质数循环终止时循环终止时primeprime可能为可能为1 1可能为可能为0,0,根据其值输出不同的结论根据其值输出不同的结论循环体是这一条循环体是这一条if if语句语句nw

    35、hile语句语句:与与for语句一样能控制语句一样能控制当型循环当型循环nwhile语句的形式语句的形式:while(表达式表达式)语句块语句块n执行过程见右边流程图执行过程见右边流程图nfor语句与语句与while语句的语句的等价关系等价关系:(1)for中的中的表达式表达式1相当于出现在相当于出现在 while之前之前的对循环变量的的对循环变量的初始化初始化 (2)for语句的语句的表达式表达式2相当于相当于while语句的语句的表达式,表达式,都表都表示当该表达式为真时执行循环体示当该表达式为真时执行循环体 (3)for语句的语句的语句块和表达式语句块和表达式3一起,相当于一起,相当于w

    36、hile循环循环的的语句块,语句块,是被反复执行的是被反复执行的循环体循环体假假表达式表达式真真语句块语句块循环控制条件循环控制条件循环体,通常用一循环体,通常用一条复合语句条复合语句n程序程序4.6 4.6 从键盘上输入一个非负整数从键盘上输入一个非负整数n n,求,求n!n!n#includenint main()n int n,i;n double fac=1;n printf(Please input n:n);n scanf(“%d”,&n);n if(n0)printf(Error input!n);n elsen for(i=1;i=n;i+)n fac*=i;n printf(

    37、%d!=%en,n,fac);n n return 0;n方法二:改用方法二:改用whilewhile循环求阶乘循环求阶乘i=1;while(i=n)fac*=i;i+;再论再论for与与while:虽然都可处理当型循环,虽然都可处理当型循环,for语句一定可以转化为等效的语句一定可以转化为等效的whie语句,但是并不是所有的语句,但是并不是所有的while都可以等效转为都可以等效转为for。因为在。因为在while语句中,可以有条件地修改循环控制变量的值,而语句中,可以有条件地修改循环控制变量的值,而for语句语句中修改循环控制条件一般通过表达式中修改循环控制条件一般通过表达式3,是无条件执

    38、行的。从,是无条件执行的。从这个意义上看,这个意义上看,while的使用范围比的使用范围比for更广,但更广,但for语句更简洁语句更简洁nwhile语句与语句与for语句都控制语句都控制当型循环当型循环,共同特点:共同特点:先判断先判断循环条件循环条件,为真才执行循环体为真才执行循环体,故循环体故循环体最少执行最少执行0次次ndowhile语句控制语句控制直到型循环,直到型循环,其特点是:其特点是:先执行循先执行循环体,再判断条件,当条件为真时环体,再判断条件,当条件为真时继续执行循环体,条继续执行循环体,条件为假,循环结束。因此件为假,循环结束。因此循环体至少执行循环体至少执行1次。次。n

    39、dowhile语句的形式语句的形式:do 语句块语句块 while(表达式表达式);n执行过程见右边流程图执行过程见右边流程图假假表达式表达式真真 语句块语句块循环控制条件循环控制条件循环体,可以循环体,可以是多条语句是多条语句此处一定要此处一定要有分号有分号ndowhiledowhile语句一个非常实用的用法:语句一个非常实用的用法:保证读入的数据符合要求,保证读入的数据符合要求,也就是说,如果读入的数不符合要求,则提示重新读入,直到满也就是说,如果读入的数不符合要求,则提示重新读入,直到满足要求为止足要求为止 n例例4.74.7:判断一个输入的正整数判断一个输入的正整数m m是否为质数是否

    40、为质数n当时对输入的当时对输入的m m,如果小于等于,如果小于等于0 0,则简单地返回不做任何处理。,则简单地返回不做任何处理。现在使用现在使用dowhiledowhile可以要求读到可以要求读到m m大于大于0 0为止。为止。nnint main()n int m,i,k,prime=1;n scanf(%d,&m);n if(m0:n);scanf(%d,&m);while(m用用if或或switch求解多分支问题求解多分支问题判断某一个整数是否为质数判断某一个整数是否为质数-寻找一定范围内所有的质数,寻找一定范围内所有的质数,哥德巴赫猜想哥德巴赫猜想求两个整数的最大公约数求两个整数的最大

    41、公约数-求两数的最小公倍数,多个数求两数的最小公倍数,多个数的最大公约数的最大公约数按位分离十位数的每一位数字按位分离十位数的每一位数字-进制转换问题进制转换问题项数确定或要求精度的格里高利公式项数确定或要求精度的格里高利公式求和求和-求和题的解法求和题的解法模拟投骰子游戏的多种实现模拟投骰子游戏的多种实现-猜字谜游戏的灵活设计猜字谜游戏的灵活设计打印等腰三角形打印等腰三角形-规则图形的打印方法规则图形的打印方法百鸡百钱问题的多种解法百鸡百钱问题的多种解法-穷举题的一题多解及算法效率穷举题的一题多解及算法效率n掌握掌握一些实用一些实用技术:技术:用用dowhiledowhile语句语句保证读入符合特定要求的数据保证读入符合特定要求的数据调用调用srand(time(NULLsrand(time(NULL)产生随机种子,保证数的随机性产生随机种子,保证数的随机性调用调用rand()rand()函数函数产生一定范围的随机整数产生一定范围的随机整数2023-4-2930The end of chapter 4The end of chapter 4

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:c语言教案第四章.ppt
    链接地址:https://www.163wenku.com/p-5657089.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库