C语言程序设计基础.ppt_第1页
C语言程序设计基础.ppt_第2页
C语言程序设计基础.ppt_第3页
C语言程序设计基础.ppt_第4页
C语言程序设计基础.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

共42页第1页,第六章,C语言程序设计,循环结构,共42页第2页,本章要点建立循环程序设计的基本概念和逻辑思维掌握循环程序设计的方法,共42页第3页,什么是循环?为什么要使用循环?,?,循环的基本概念,循环是有规律的重复操作。将复杂问题分解为简单的操作过程,程序只对简单过程描述,这些过程的多次重复就可完成对问题的求解。重复的频繁性决定了循环在程序设计中必不可少!,问题1:,问题2:求学生平均成绩分数相加后除以课数,做99次加法,问题3:找出数x中能同时被3和7整除的数找数,问题分解循环控制,共42页第4页,if-goto循环while循环for循环dowhile循环,先判断后循环,先循环后判断,特点:,难点:,循环嵌套,C提供四种循环控制:,共42页第5页,6.1if-goto语句循环,一般形式:goto标号;标号:语句其中:标号用标识符表示,即由字母、数字和下划线组成,且首字符必须为字母或下划线。不能用整数作标号。用途:1.与if语句一起构成循环结构。2.从循环体中跳到循环体外(一般指最深层)。3.改变程序自上而下的执行顺序。,缺点:滥用goto语句,可使程序无规律、可读性差。,共42页第6页,#includestdio.hmain()inti=1,s=0;L1:if(i=100)s=s+i;i+;gotoL1;printf(s=%dn,s);,零,非零,求和s=1+2+100,运行结果:S=?,例1,共42页第7页,1.while循环语句的形式while(表达式)语句,先判断条件,后执行语句,表达式,语句,零,非零,2.执行过程,注意:循环体若包含一个以上语句,应该用花括号括起来(使用复合语句)。循环体内应注意设置修改循环条件的语句。否则循环无法终止。如果表达式的值第一次计算就等于0,则循环体一次也不执行。,6.2while循环语句,共42页第8页,求,#includestdio.hmain()inti=1,sum=0;while(i=100)sum=sum+i;i+;printf(%d,sum);,例2,思考:删除i+;后果?调换i+;与求和语句的后果?,共42页第9页,输出华氏-摄氏温度转换表,例3,华氏温度3035之间的每一度都转换成相应的摄氏温度。转换公式:C=5*(F-32)/9,#includestdio.hmain()intF;floatC;F=30;while(F=35)C=5*(F-32)/9.0;printf(F=%dC=%fn,F,C);F=F+1;,共42页第10页,输出华氏-摄氏温度转换表,运行结果FC-1.1-0.60.00.61.1351.7,共42页第11页,输入一批正数,输入0时表示输入结束,求这些正数的和。,#includestdio.hmain()ints=0,x;scanf(%d,例4,思考:取消循环内的输入语句后果?,共42页第12页,1.dowhile循环语句的形式do语句while(表达式);,先执行语句,后判断条件,2.执行过程,说明:(1)dowhile循环语句首先执行循环体,然后计算表达式并检查循环条件,所以循环体至少执行一次。(2)退出dowhile循环的条件与退出while循环的条件相同。,6.3dowhile循环语句,共42页第13页,用do-while型循环求n!S=123(n-1)n,#includemain()inti=1,n;longs=1;scanf(%d,例5,不能省略,共42页第14页,用迭代法求a的算数平方根。公式:xn=0.5*(xn-1+a/xn-1)确定初值为x0,取a/2为x0的初值,迭代结束条件:|x1-x0|=10-5.,#include#includemain()floata,x0,x1;scanf(%f,例6,共42页第15页,注意:当while后的表达式为真时,while语句和dowhile语句的结果相同,否则不同。,main()inti,s=0;scanf(%d,输入:1打印:55输入:11打印:0,main()inti,s=0;scanf(%d输入:1打印:55输入:11打印:11,共42页第16页,6.4for循环语句,1.for循环语句的形式for(表达式1;表达式2;表达式3)语句,2.执行过程,说明:(1)计算表达式1;(2)计算表达式2,值非零执行循环体,计算表达式3,重复(3)表达式1仅被执行一次;表达式2决定了是否继续执行循环;表达式3则不断修改循环控制变量的值。(4)三个表达式均可省略,分号不能省略。for循环体可以是复合语句。,共42页第17页,3.说明:(1)基本的应用形式:for(循环变量赋初值;循环条件;循环变量增值),求级数12+22+32+前10项之和。main()inti,sum=0;for(i=1;i=10;i+)sum=sum+i*i;printf(%d,sum);,共42页第18页,(2)三个表达式均可缺省,但起分割作用的两个分号不可省略。例如:for(;)相当于while(1)语句,(3)表达式1和表达式3可为逗号表达式。例:inti,j,sum;for(sum=0,i=0,j=100;i=j;i+,j-)sum=sum+i+j;,共42页第19页,输出100以内所有偶数的和与所有奇数的和。#includemain()inti,s1=0,s2=0;for(i=1;i=100;i+)if(i%2=0)s2=s2+i;elses1=s1+i;printf(s1=%d,s2=%dn,s1,s2);,例7,共42页第20页,用for循环编写输出华氏-摄氏温度转换表,输出华氏-摄氏温度的转换表,要求输入华氏温度取值范围。转换公式:C=5*(F-32)/9,#includemain()intf1,f2;floatc;,例8,共42页第21页,分析:求前n项和,要循环n次,每次累加1项。除第1项外,每次循环分母都递增2,符号交替变化。#includemain()inti,n,t=1,flag=1;doublesum=0,item;scanf(%d,例9,输入一个正数n,计算1-1/3+1/5-1/7+的前n项之和。,运行结果:输入:5sum=0.834921,共42页第22页,6.5三种循环语句的比较,for语句和while语句先判断条件,后执行语句,故循环体有可能一次也不执行,而dowhile语句的循环体至少执行一次。必须在while语句和dowhile语句之前对循环体变量赋初值,循环体中必须包含能最终改变循环条件真假的操作;而for语句可在表达式1中对循环变量赋初值,表达式3中修改循环变量的值。在循环次数已经确定的情况下,一般用for语句;而对于循环次数不确定,只给出循环结束条件的问题,习惯用while或dowhile语句解决。,共42页第23页,1.定义:在循环体内又包含一个循环结构,称为循环嵌套。三种循环都可以嵌套。下面几种都是合法的嵌套形式:,for(;)while()for循环体嵌套while循环体,for(;)for(;)for循环体嵌套for循环,6.6循环语句的嵌套,共42页第24页,dodowhile();while();do_while循环体嵌套do_while循环,while()dowhile();while循环体嵌套do_while循环,while()for(;)while循环体嵌套for循环,dofor(;)while();do_while循环体嵌套for循环,共42页第25页,2.嵌套结构规则,外循环,内循环,交叉循环,外循环入口,内循环出口,内循环出口,外循环出口,共42页第26页,for语句的循环嵌套:,for(i=1;i=2;i+)for(j=1;j=2;j+)printf(%3d,i+j);printf(n);,for(i=1;i=2;i+)for(j=1;j=2;j+)printf(%3d,i+j);printf(n);,output:2334,output:2334,共42页第27页,编写程序输出图形,讨论1.输入m(行数);2.for(k=1;k=m;k+)打印k个*;换新行;,细化:1.输入m;2.for(k=1;k=m;k+)for(j=1;j=k;j+)printf(*);printf(n);,*,说明:1.循环变量可以控制循环次数;2.外循环变量可作为内循环次数的控制变量,例10,共42页第28页,#includemain()intk,m,j;scanf(%d,整理得到程序如下:,共42页第29页,使用循环嵌套计算:1!+2!+3!+100!,#includemain()inti,j;doublesum=0,item;for(i=1;i=100;i+)item=1;for(j=1;j=i;j+)item=item*j;sum=sum+item;printf(sum=%fn,sum);,例11,共42页第30页,for循环嵌套while循环:输入6名学生5门课程的成绩,分别统计每名学生5门课程的平均成绩。,#includemain()inti,j;floatscore,sum,ave;for(i=1;i=6;i+)sum=0;j=1;while(j=5)scanf(%f,例12,共42页第31页,例12输出5以内的数字金字塔。#includestdio.hmain()voidpyramid(intn);/*函数声明*/pyramid(5);/*函数调用*/voidpyramid(intn)inti,j;for(i=0;i=n;i+)/*需要输出的行数*/for(j=1;j=n-i;j+)/*输出每行前空格*/printf();for(j=1;j=i;j+)/*输出每行数字*/printf(%d,i);printf(n);,打印以下图形:122333444455555,共42页第32页,6.7break和continue语句,1.break语句语法:break;功能:终止包含该语句的最内层循环。main()intn;for(n=100;n=200;n+)if(n%3=0)break;printf(%6d,n);,2.continue语句语法:continue;功能:结束循环体的本次执行。main()intn;for(n=100;n=200;n+)if(n%3=0)continue;printf(%6d,n);,该语句只能出现在for,while或dowhile语句中。,该语句只能出现在switch,for,while或dowhile语句中。,共42页第33页,for循环结构中的break结构,for循环结构中的continue结构,共42页第34页,循环结束的条件:发生下列情况之一时,循环结束执行:表达式的值为0;循环体内遇到break语句;循环体内遇到goto语句,且与该goto语句配合使用的标号所指定的语句在本循环体外;,共42页第35页,3.空语句形式:;(只由一个分号构成)功能:什么也不做。(可出现在程序中任何语句可以出现的地方)例:求级数12+22+32+,前10项之和。main()inti,sum=0;for(i=1;i=10;sum+=i*i,i+);printf(sum=%dn,sum);,注意:空语句的正确用法!,共42页第36页,1.输入一个整数m,判断是否为素数。若m不能被2m-1之间的任何一个整数整除,则m为素数。算法分析:(1)设k=m-1,用2至m-1依次去除m,若m能被2k之中任何一个整数整除,则不必除下去,肯定不是素数,跳出循环,(i=k+1.在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,因此输出“是素数”。,编程举例,共42页第37页,程序如下:#includestdio.hmain()intm,i,k;scanf(%d,共42页第38页,分析:程序采用逐位分离的方法。设x为正整数,x%10分离1位,x=x/10为下次分离做准备,直到x=0.#includestdio.hmain()intx;printf(Enterx:);scanf(%d,2.输入一个正整数,将其逆向输出。,共42页第39页,3.求sin(x)的近似值(x是弧度)。sinx=x-x3/3!+x5/5!-x7/7!+(-1)n+1x2n-1/(2n-1)!+分析:本例可作为循环累加问题处理,考虑适当的精度要求。设i为项数,s为累加和,s=s+级数的下一项第i项的绝对值:x2i-1/(2i-1)!第i项的运算符号(-1)i+1第i+1项的绝对值等于x2(i+1)-1/(2(i+1)-1)!=x2i+1/(2i+1)!因此,第i+1项的绝对值等于第i项的绝对值乘x2再除以(2i)*(2i+1)级数的下一项可用下面表达式实现:-(上一项的值)*x*x/(2+i)*(2*i+1);,共42页第40页,程序如下:#includestdio.hmain()inti;doublex,t,s=0.0;scanf(%lf,程序运行演示,共42页第41页,小结,1.循环程序设计的要点循环初值,循环条件,循环体设定2.C语言循环程序设计的三种结构for,while,do-while3.程序设计的一般步骤分析给定问题的详细步骤,总结出解决问题的一般方法;画出程序流程图或写出程序草案;编制程序;输入程序、进行语法检查;运行、测试程序(使用多组数据进行

温馨提示

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

评论

0/150

提交评论