C语言的基本控制结构.ppt_第1页
C语言的基本控制结构.ppt_第2页
C语言的基本控制结构.ppt_第3页
C语言的基本控制结构.ppt_第4页
C语言的基本控制结构.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,算法进行某一工作的方法和步骤称为算法算法的组成要素操作算术运算、关系运算、函数运算等控制结构顺序结构选择结构循环结构,第2章C语言的基本控制结构,2,算法的图形表示,流程图图形元素,算法的描述,3,用流程图表示算法,4,用N-S图表示算法,5,2.1顺序结构,顺序结构是指按照语句的书写顺序依次执行每条语句的语句结构,语句格式:,6,赋值运算,基本的赋值运算x=y+100;x=x+10;=是赋值号(赋值运算符),不是等号赋值号左侧必须是已定义的变量名不能是表达式右侧表达式中的每个因子项必须有明确的值若右侧表达式的结果与左侧变量的类型不一致,编译器将会把表达式结果的类型转换成左侧变量的类型赋值运算的结果是表达式的结果赋值运算为右结合:a=b=c=d=5;,7,例1-4:根据给定的圆半径,计算圆的面积和周长,#includemain()floatradius,area,perimeter;radius=20;area=radius*radius*3.14159;perimeter=2*radius*3.14159;printf(Theradiusofthecircleis%fn,radius);printf(Theareaofthecircleis%fn,area);printf(Theperimeterofthecircleis%fn,perimeter);,8,复合赋值运算格式:变量名运算符=表达式等价于变量名=变量名运算符表达式例如:a+=5;等价于a=a+5;a-=5;等价于a=a-5;a*=5;等价于a=a*5;a/=5;等价于a=a/5;a%=5;等价于a=a%5;,9,2.2选择结构,选择结构是指根据某种条件选取不同操作的处理方式选择结构两个基本部分组成对选择条件的描述对处理分支的描述,10,关系运算与逻辑运算,关系运算符,如果关系运算的结果为1,表示“真”如果关系运算的结果为0,表示“假”字符型数据用它们的ASCII码进行比较,11,关系表达式关系表达式是用关系运算符将两个表达式连接起来的式子关系表达式的值是0或1,关系表达式表达式的值Aa假(0)38假(0)5.2!=4.1真(1)m=M假(0)xy取决于x和y的值a+bb+c取决于a、b和c的值,12,举例,ab=c等价于(ab)=cab!=bb)!=(ba值为0(假)(a的ASCII码是97)z=(1+3)c)printf(“nEnterainteger:”);scanf(“%d”,例2-1分析整数绝对值的计算过程,21,#includemain()intx,y;printf(“nEnter2integers:”);scanf(“%d%d”,例2-2通过键盘输入的坐标点,判断该坐标点处于第几象限,22,多路选择和switch语句运算,switch语句的语法格式,switch()case:case:.case:default:,执行的基本过程,23,switch语句说明所有的case常量不允许重复在实际应用中,为使每个分支互不影响,在每个case分支的语句序列的最后加break语句,其作用是跳出switch语句,不再执行下面的case分支;否则将继续向下执行,而不再判断case常量,24,例2-3输入一个格式为x+y的表达式,输出结果,#includemain()doublea,b,c;charop;printf(“nEnteraexpression”);scanf(“%lf%c%lf”,25,switch语句中只有一个表达式,有多种取值(离散值),用于区分各种不同情况嵌套if结构有多个表达式,表达式的值只当作“真”或“假”处理在只有一个判断,但有多种可能性的情况下,才可以使用switch结构当有多种不同条件需要判断时,应使用if的嵌套if嵌套结构适用于所有多分支情况;switch语句只适用于特定的多分支情况,switch与嵌套if的区别,26,作业,上机题P59本章习题4P59上机练习1P61编程题1,27,2.3循环结构,C语言中有3种循环语句while语句for语句do-while语句循环都是有条件的,只有条件满足时才应该循环。当条件不满足时则应停止循环。因此在循环体中,或循环语句本身应能够改变循环条件。可以用break语句从循环中跳出,28,语法格式while(),while语句,循环中的语句也称为“循环体”若循环体中含多条语句,则应用括起,思考题:循环体有可能一次都不执行吗?,29,分析若用1000个变量存放1000个数太烦琐。每个数只用一次(累加),不必保存,只需保存累加和与数据的个数一个变量保存累加和;一个变量接受键盘输入的数;一个变量用于计数思路在循环中每次输入一个数据,立即累加起来,同时计数,1000次后停止循环循环之后用累加和除以1000,例2-5:从键盘输入1000个整数,计算它们的平均值,30,#includemain()intsum=0,k=1,x;printf(“nEnter1000integers:”);while(k=1000)scanf(“%d”,要点用于累加的变量sum在循环中使用了自己上一次的值,所以要在循环之前赋初始值,31,while语句的特点,表达式为“真”则执行循环体一次;为“假”则结束循环先判断表达式的值,后执行循环体循环体内应有改变循环条件的语句,并且有机会执行如果循环中使用的某些变量需要有初始值,则初始值的赋值应在while语句之前完成,32,for语句,语法格式for(;),33,for(表达式1;表达式2;表达式3)循环体,for循环语句个部分的含义,只在循环开始时计算一次,用于设置初值,在每次执行循环体之前计算,根据计算结果决定是否执行循环体,是循环的条件,在循环中反复执行的程序内容,在循环体执行完一次后计算,用于修改循环条件,34,for循环常见的应用形式,for(循环变量赋初值;循环条件;循环变量增量)例如s=0;for(i=1;i=100;i+)s=s+i;可以计算1+2+3+100,结果在s中再如t=1;n=5;for(i=1;i=ch,要点计数器num要赋初始值,且初始值为0只有符合条件的字符才计数判输入是否为回车符决定是否继续循环,42,do-while语句的特点,先执行循环体一次,然后判断循环条件表达式为“真”则循环循环体内应有改变循环条件的语句,并且有机会执行如果循环中使用的某些变量需要有初始值,则初始值的赋值应在do-while语句之前完成,43,while和do.while循环语句的区别,while语句先判断,后执行循环体do.while语句先执行循环体,后做判断while语句的循环体有可能一次也不执行do.while语句的循环体至少执行一次do.while语句的最后要有一个分号,44,三种循环语句的比较,三种循环都判断表达式的值,表达式为“真”时才执行循环体一次while、for循环先判断循环条件,然后执行循环体一次;dowhile循环则先执行循环体一次,再判断条件while和dowhile循环只判断条件,设置循环的初始状态的语句要写在循环之前;在循环体内要有改变循环条件的语句for循环的初值设置和改变循环条件的语句都可以写在for语句中,而不必写在循环之前和循环之内,如果在循环体内有改变循环条件的语句,则会与for中的表达式3同时起作用,例2-8:输入一个整数n,打印输出一个由n个字符星号*组成的等腰三角形;例如,当输入4时,输出如下所示的三角形,循环语句应用实例,*_*_*_*_*_*_*,分析三角形的行数为n每行第1个字符的位置不同(前面的空格数不同)每行第1个和最后1个字符为“*”其他字符由“_”、“*”相间排列第i行有i个“*”,i-1个“_”思路2层循环,外循环改变行,循环n次;内循环输出每行的字符内循环的循环次数与行数有关内循环要考虑输出不同的字符,46,#includemain()intn,i,j;printf(“Enterthesideofthetriangle:”);scanf(“%d”,*_*_*_*_*_*_*,47,循环语句小结,循环都是有条件的,只有条件满足(表达式为“真”)时才执行循环体一次;当条件不满足时则停止循环。因此在循环体中,或循环语句本身应能够改变循环条件有3种循环语句for语句、while语句、do-while语句for、while先判断循环条件,后执行循环体;dowhile先执行循环体一次,再判断条件while和dowhile只判断条件,设置循环初始状态的语句要写在循环之前,在循环体内要有改变循环条件的语句for循环的初值设置和改变循环条件的语句都可以写在for语句中,而不必写在循环之前和循环之内可以用break语句跳出循环,48,本章作业,自测题P58本章习题1、2、3P56本章自测题一、选择题,二、填空题上机题P56上机练习2P57编程题2,49,分析本题与例2-5类似。每个数只用一次,不必保存,只需保存累加和与满足条件的数据的个数一个变量保存累加和;一个变量接受键盘输入的数;一个变量用于计数思路在循环中每次输入一个数据,若是偶数则累加起来,并计数,100次后停止循环累加和除以偶数的个数用判断一个数除以2的余数是否为0的方法判断该数是否为偶数,P55-6从键盘输入100个整数,统计其中偶数的平均值,50,#include#defineN100(或10个)main()intx,k,sum=0,n=0;for(k=0;k0)printf(%fn,1.0*sum/n);,要点用求余数的方法判断是否为偶数只对偶数累加、计数在循环内累加、计数;在循环后求平均累加器、计数器要在循环之前赋初值累加器、计数器的初值为0要考虑所有数都不符合条件的情况,51,P55-8从键盘输入1个正整数,判断是否为素数,分析用素数的定义来判别,用2x/2试除x,若都不能整除,则x是素数,否则不是素数一次试除成功(不能整除),并不能说明x是素数,只有所有试除都成功,才能断定x是素数;但一次试除失败(能整除),则可断定x不是素数思路在循环中进行试除若某次试除失败,则结束循环,输出“不是素数”若试除完毕,均未出现失败,则输出“是素数”即:有2种情况结束循环(均应反映在循环条件中)试除失败(非正常结束循环)正常结束循环循环结束后判是哪种情况,输出相应信息,52,#includemain()intx,k,yes;yes=1;k=2;printf(Enteraninteger(1):);scanf(%d,要点yes=1表示是素数;yes=0表示不是素数先假定x是素数,再试图否定它,若不能否定,则x是素数当某次试除失败,要令yes=0yes=1的赋值要在循环之前完成,53,P55-9输出100以内所有素数,每行5个,分析在上例基础上令x从2变化到100即可(增加一层循环)输出改为只输出素数,对每行输出进行计数思路增加一层循环(外循环),循环变量x从2到100增加一个计数器,控制每行输出个数,54,#includemain()intx,k,yes,n=0;for(x=2;xb)x=a;y=b;elsey=a;x=b;,if(ab)x=a;y=b;elsey=a;x=b;,56,控制结构的嵌套,各种选择结构、循环结构可以自我嵌套,也可以相互嵌套必须完整嵌套选择结构嵌套其他结构只能完整嵌套在一个分之中循环结构嵌套其他结构完整放在循环体内,57,if与else的配对关系,外层if没有else,58,例:按下面的N-S图写出程序,if(表达式1)if(表达式2)语句1else语句2,if(表达式1)if(表达式2)语句1else语句2,if(表达式1)if(表达式2)语句1else;else语句2,或:,错误的程序:,正确的程序:,59,当只有一个分支嵌有if语句时,通常把内嵌的if语句嵌在else子句中,if(!表达式1)语句2elseif(表达式2)语句1,if(表达式1)语句1elseif(表达式2)语句2elseif(表达式m)语句melse语句m+1,此格式的另一种写法:,上例可以按下面的方法设计程序,60,循环的嵌套以及与选择结构的嵌套,for(;)for(;),for(;)if(条件)else,if(条件)for(;)else,61

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论