欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言新教材PPT课堂课件-4(2)-循环结构.pdf

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

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

    C语言新教材PPT课堂课件-4(2)-循环结构.pdf

    1主主要要内内容容:4.4.1 while 4.4.1 while 语语句句4.4.2 do-while 4.4.2 do-while 语语句句4.4.3 for 4.4.3 for 语语句句4.4.4 break4.4.4 break和和continuecontinue语语句句 4.4.5 4.4.5 循循环环的的嵌嵌套套4.4.6 4.4.6 循循环环结结构构程程序序设设计计举举例例4.4 循循环环结结构构2循循环环控控制制lC C语语言言提提供供三三种种循循环环语语句句:while while 语语句句do-while do-while 语语句句for for 语语句句3举举例例:求求1100之之间间所所有有整整数数的的和和i100sum=sum+i;i=i+1;真真假假sum=0,i=1 输输出出sum的的值值 sum=sum+i;i=i+1;假假真真sum=0,i=1 输输出出sum的的值值i=100当当型型循循环环直直到到型型循循环环44.4.1 用用while 语语句句实实现现当当型型循循环环格格式式:while(while(表表达达式式)语语句句表表达达式式循循环环体体语语句句真真(非非0)假假(0)当当型型循循环环注注意意:循循环环体体可可能能一一次次也也不不被被执执行行进进入入循循环环的的条条件件5如如果果在在whilewhile语语句句之之前前对对变变量量sumsum赋赋初初值值为为1 1,是是否否可可以以?程程序序的的哪哪些些地地方方应应作作相相应应的的改改动动?举举例例:用用while语语句句求求1100之之间间整整数数和和#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(1+2+3+100=%dn,sum);语语句句sum=sum+i;sum=sum+i;和和语语句句i+;i+;能能否否对对调调位位置置?程程序序的的哪哪些些地地方方应应作作相相应应的的改改动动?例例4.18while语语句句6 4.4.2 用用do-while 语语句句实实现现直直到到型型循循环环格格式式:do do 语语句句 while(while(表表达达式式););表表达达式式循循环环体体语语句句真真(非非0)假假(0)继继续续循循环环的的条条件件注注意意:循循环环体体至至少少被被执执行行一一次次直直到到型型循循环环7举举例例:用用do-while语语句句求求1-100之之间间整整数数和和do-while语语句句#includevoidmain()inti,sum=0;i=1;dosum=sum+i;i+;while(i=100);printf(1+2+3+100=%dn,sum);例例4.18解解二二8 4.4.3 用用for 语语句句实实现现当当型型循循环环 格格式式:for(for(表表达达式式1 1;表表达达式式2 2;表表达达式式3 3)语语句句表表达达式式2循循环环体体语语句句真真(非非0)假假(0)求求解解表表达达式式1求求解解表表达达式式3实实质质是是当当型型循循环环进进入入循循环环的的条条件件9for语语句句的的最最常常用用格格式式在在forfor语语句句中中,通通常常表表达达式式1 1用用来来为为循循环环变变量量赋赋初初值值,表表达达式式2 2用用来来设设置置循循环环条条件件,表表达达式式3 3用用于于循循环环变变量量增增值值。for for 语语句句的的最最常常用用格格式式:for(for(循循环环变变量量赋赋初初值值;循循环环条条件件;循循环环变变量量增增值值 )语语句句例例:for(i=1;i=10;i+=4)printf(%d,i);输输出出 1 5 9例例4.234.23(例例4.184.18解解三三):求求11001100之之间间的的整整数数之之和和 sum=0;for(i=1;i=100;i+)sum=sum+i;printf(%d,i);1310for语语句句for语语句句的的执执行行过过程程输输出出:1#includevoidmain()inti;for(i=1;i=10;i+=4)printf(%d,i);printf(%d,i);5 9 1311典典型型算算法法:累累加加、连连乘乘累累加加算算法法之之累累加加通通式式:累累加加和和变变量量=累累加加和和变变量量+累累加加项项如如 sum=sum+i ;(i为为循循环环变变量量)sum=sum+x;(x为为输输入入值值或或某某计计算算结结果果)num=num+1;即即 num+;(计计数数)连连乘乘算算法法之之连连乘乘通通式式:连连乘乘积积变变量量=连连乘乘积积变变量量*连连乘乘项项如如 fac=fac*i ;(i为为循循环环变变量量)fac=fac*x;(x为为输输入入值值或或某某计计算算结结果果)12累累加加、连连乘乘算算法法举举例例【例例4.24】求求n!【例例4.19】、【例例4.22】求求的的近近似似值值【例例】求求若若干干数数之之总总和和及及平平均均值值【例例4.35】多多项项式式计计算算13P98例例4.24 求求 n!=123 n#includevoidmain()inti,n;longp=1;printf(inputaninteger:n);scanf(%d,&n);for(i=1;i=n;i+)p*=i;printf(n!=%ldn,p);阶阶乘乘结结果果用用int型型可可能能会会溢溢出出也可用while语句实现(例4.20),或用do-while语句实现举举例例:求求n!14举举例例:求求的的近近似似值值(1)#include#include void main()int i=1,n;double pi=0;printf(Input an integer:n);scanf(%d,&n);while(i=n)pi+=1.0/(i*i);i+;pi=sqrt(pi*6);printf(pi=%lfn,pi);/*累累加加和和pi,存存2/6*/P90P90例例4.194.19 利利用用以以下下公公式式求求的的近近似似值值(n n由由键键盘盘输输入入,n n值值越越大大的的值值越越精精确确)也可用for语句或do-while语句实现15举举例例:求求的的近近似似值值(2)累累加加式式累累加加式式准准备备下下一一项项准准备备下下一一项项循循环环条条件件循循环环条条件件P94P94例例4.224.22利利用用格格里里高高公公式式 求求的的近近似似值值,直直到到最最后后一一项项的的绝绝对对值值小小于于1010-6-6为为止止/*累累加加项项t,累累加加和和pi,分分母母n,符符号号位位s*/当当型型直直到到型型/*实实现现+1和和-1交交替替出出现现*/16求求的的近近似似值值(2)#include#include void main()float pi,t,n;int s;t=1;pi=0;n=1.0;s=1;do pi=pi+t;n=n+2;s=-s;t=s/n;while(fabs(t)=1e-6);pi=pi*4;printf(pi=%10.6fn,pi);/*实实现现+1和和-1交交替替出出现现*/*累累加加和和pi,累累加加项项t*/*分分母母n,符符号号位位s*/掌掌握握在在循循环环体体中中实实现现正正负负相相间间的的技技巧巧例例4.2217举举例例:多多项项式式计计算算#include void main()float sum,term,x;int n,k,sign;printf(Input n,x:n);scanf(%d,%f,&n,&x);sum=x;term=x;sign=1;for(k=2;k=n;k+)term*=x*x/(2*k-2)/(2*k-1);sign=-sign;sum+=sign*term;printf(sum=%fn,sum);P113P113例例4.354.35 计计算算18例例:求求1100之之间间的的整整数数之之和和#include#include void main()void main()intint i,sum;i,sum;sum=0;sum=0;for(i=1 ;i=100;i+)for(i=1 ;i=100;i+)sum=sum+i;sum=sum+i;printf(sumprintf(sum=%=%dn,sumdn,sum););表表达达式式1 1可可缺缺省省(但但其其后后的的分分号号不不能能省省略略),将将表表达达式式1 1作作为为语语句句放放到到循循环环之之前前。i=1i=1;4.4.3(2)4.4.3(2)for 语语句句的的灵灵活活使使用用19sum=0;sum=0;#include#include void main()void main()intint i,sum;i,sum;for(i=1;i=100;i+)for(i=1;i=100;i+)sum=sum+i,sum=sum+i,printf(sumprintf(sum=%=%dn,sumdn,sum););循循环环之之前前的的赋赋初初值值语语句句可可以以放放在在表表达达式式1 1中中,中中间间用用逗逗号号间间隔隔。例例:求求1100之之间间的的整整数数之之和和for 语语句句的的灵灵活活使使用用 for(sum=0for(sum=0,i=1;i=100;i+i=1;i=100;i+)20#include#include void main()void main()intint i,sum;i,sum;sum=0;sum=0;for(i=1;i=100;)for(i=1;i=100;)sum=sum+i;sum=sum+i;printf(sumprintf(sum=%=%dn,sumdn,sum););表表达达式式3 3可可缺缺省省(但但其其前前的的分分号号不不能能省省略略),将将表表达达式式3 3作作为为语语句句放放到到循循环环体体的的末末尾尾。i+i+for 语语句句的的灵灵活活使使用用例例:求求1100之之间间的的整整数数之之和和 i+i+;21#include#include void main()void main()intint i,sum;i,sum;for(sum=0,i=1;i=100;i+)for(sum=0,i=1;i=100;i+)printf(sumprintf(sum=%=%dn,sumdn,sum););循循环环体体中中的的内内容容可可以以放放在在表表达达式式3 3中中,但但要要在在圆圆括括号号的的后后面面加加一一个个分分号号。sum=sum+i;sum=sum+i;例例:求求1100之之间间的的整整数数之之和和for 语语句句的的灵灵活活使使用用for(sum=0,i=1;i=100;sum=sum+ifor(sum=0,i=1;i=100;sum=sum+i,i+)i+);22#include#include void main()void main()intint i,sum;i,sum;sum=0;sum=0;for(i=1 ;i=100;)for(i=1 ;i=100;)sum=sum+i;sum=sum+i;printf(sumprintf(sum=%=%dn,sumdn,sum););表表达达式式1 1、表表达达式式3 3可可同同时时缺缺省省,但但表表达达式式2 2前前后后的的分分号号都都不不能能省省略略。while(i=100)while(i=100)forfor循循环环可可替替代代whilewhile循循环环例例:求求1100之之间间的的整整数数之之和和for 语语句句的的灵灵活活使使用用i=1i=1;i+i+i+i+;23#include#include void main()void main()intint i,sum;i,sum;sum=0;sum=0;for(i=1;i+)for(i=1;i+)sum=sum+i;sum=sum+i;printf(sumprintf(sum=%=%dn,sumdn,sum););else break;/*else break;/*退退出出循循环环*/i=100i=100例例:求求1100之之间间的的整整数数之之和和for 语语句句的的灵灵活活使使用用表表达达式式2 2可可缺缺省省,放放在在循循环环体体之之中中,但但forfor语语句句中中的的两两个个分分号号都都不不能能省省略略。ifif (i=100)(i=100)此此处处为为空空相相当当于于1(永永真真条条件件)244.4.4 break语语句句和和continue语语句句lbreak 语语句句格格式式:break;功功能能:提提前前结结束束整整个个循循环环,从从循循环环体体中中无无条条件件跳跳转转到到循循环环语语句句后后面面执执行行。可可用用于于switch语语句句和和循循环环结结构构中中。lcontinue语语句句格格式式:continue;功功能能:结结束束本本轮轮循循环环,即即在在本本轮轮循循环环中中,不不再再执执行行循循环环体体中中continue后后面面的的语语句句。只只能能用用于于循循环环结结构构。25break语语句句和和continue语语句句的的比比较较(P105举举例例)输输出出:1 2!voidmain()intn;for(n=1;n=8;n+)if(n%3=0)break;printf(%4d,n);printf(!n);voidmain()intn;for(n=1;n=8;n+)if(n%3=0)cotinue;printf(%4d,n);printf(!n);输输出出:1 2 4 5 7 8!26break语语句句的的使使用用算算法法:假假设设将将512分分解解为为15i和512-15i两两个个数数,若若512-15i能能被被13整整除除,15i和512-15i就就是是一一组组解解#includevoidmain()inti;for(i=1;i+)if(!(512-i*15)%13)break;printf(%d+%d=512n,i*15,512-i*15);P102例例4.28 将将数数字字512表表示示成成两两个个数数的的和和,这这两两个个数数分分别别为为15和和13的的倍倍数数,只只需需找找到到一一个个解解即即可可。代代表表:(512-i*15)%13=027break语语句句的的使使用用算算法法:假假设设将将512分分解解为为i和512-i两两个个数数,若若i能能被被15整整除除且且 512-i能能被被13整整除除,i和512-i就就是是一一组组解解#includevoidmain()inti;for(i=1;i+)if(!(i%15)&!(512-i)%13)break;printf(%d+%d=512n,i,512-i);例例4.28 另另解解28例例4.28 改改为为找找到到所所有有的的解解 voidmain()inti;for(i=1;i512;i+)if(!(i%15)&!(512-i)%13)printf(%d+%d=512n,i,512-i);29break语语句句的的使使用用算算法法:假假设设将将512分分解解为为i和512-i两两个个数数,若若i能能被被15整整除除且且 512-i能能被被13整整除除,i和512-i就就是是一一组组解解#includevoidmain()inti;for(i=1;i+)if(!(i%15)&!(512-i)%13)break;printf(%d+%d=512n,i,512-i);例例4.28 另另解解30P121习习题题4.20 输输入入若若干干个个数数(以以0结结束束输输入入),求求总总和和并并统统计计数数的的个个数数#includevoidmain()inti;floatx,sum=0;for(i=1;i=100;i+)scanf(%f,&x);if(x=0)break;sum+=x;printf(sum=%.0f,count=%dn,sum,i);i-1)break语语句句的的使使用用31continue语语句句的的使使用用P103例例4.29 输输出出100200之之间间所所有有能能够够被被7或或9整整除除的的数数#includevoidmain()inti;for(i=100;i=200;i+)if(i%7!=0)&(i%9!=0)continue;printf(%5d,i);if(i%7=0)|(i%9=0)printf(%5d,i);等等效效于于:32continue语语句句的的使使用用例例4.29改改进进输输出出格格式式:#includevoidmain()inti,n=0;for(i=100;i=200;i+)if(i%7!=0)&(i%9!=0)continue;printf(%5d,i);n+;if(n%5=0)printf(n);/*当当n被被5整整除除时时换换行行,即即一一行行输输出出5个个数数*/33break语语句句和和continue语语句句的的使使用用voidmain()inti,a=0,b=0,c=0,d=0;for(i=1;i=4;i+)switch(i)case1:a=1;continue;case2:b=2;case3:c=3;break;case4:d=4;printf(%d%d%d%dn,a,b,c,d);输输出出:1230 1230 1234 P106举举例例344.4.5 4.4.5 循循环环嵌嵌套套l一一个个循循环环体体中中又又包包含含了了另另一一个个完完整整的的循循环环结结构构,叫叫做做循循环环的的嵌嵌套套。l三三种种循循环环结结构构可可以以互互相相嵌嵌套套。l循循环环嵌嵌套套的的执执行行过过程程是是:外外循循环环执执行行一一次次,内内循循环环执执行行一一个个全全过过程程。35#includevoidmain()inti,n=10,j;longs=0,t;for(i=1;i=n;i+)s+=t;printf(s=%ldn,s);举举例例:计计算算s=1!+2!+3!+s=1!+2!+3!+10!+10!P108例例4.31 双双重重循循环环实实现现:外外循循环环计计算算累累加加;内内循循环环求求i!t=1;for(j=1;j=i;j+)t=t*j;循循环环嵌嵌套套36#includevoidmain()inti,n=10;longs=0,t=1;for(i=1;i=n;i+)t*=i;s+=t;printf(s=%ldn,s);举举例例:计计算算s=1!+2!+3!+s=1!+2!+3!+10!+10!另另解解:用用单单重重循循环环实实现现(P98例例4.25)374.4.6 4.4.6 循循环环结结构构程程序序设设计计举举例例l累累加加、连连乘乘l特特殊殊图图形形输输出出l穷穷举举算算法法:百百钱钱买买百百鸡鸡,求求水水仙仙花花数数l数数的的分分离离:求求水水仙仙花花数数,例例4.334.33l迭迭代代、递递推推:求求FabonacciFabonacci数数列列,猴猴子子吃吃桃桃问问题题,牛牛顿顿迭迭代代法法求求方方程程根根l二二分分法法求求方方程程根根l数数的的判判别别:判判素素数数l辗辗转转相相除除法法求求最最大大公公约约数数l数数的的统统计计:求求最最大大、最最小小数数等等l梯梯形形法法求求定定积积分分38 举举例例:特特殊殊图图形形输输出出(1)#include void main()int i,j;for(i=1;i=8;i+)for(j=1;j=i;j+)printf(*);printf(n);*/*外外循循环环控控制制输输出出图图形形的的行行数数*/*内内循循环环控控制制每每行行输输出出的的字字符符*/输输出出i个个*号号输输出出一一个个换换行行符符39 举举例例:特特殊殊图图形形输输出出(2)#include void main()int i,j,k;for(i=1;i=8;i+)for(j=1;j=i;j+)printf();for(k=1;k=3;k+)printf(*);printf(n);*/*外外循循环环控控制制输输出出图图形形的的行行数数*/输输出出i个个空空格格输输出出3个个*号号输输出出一一个个换换行行符符40 举举例例:特特殊殊图图形形输输出出(3)#include void main()int i,j,k;for(i=1;i=8;i+)for(j=1;j=8-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);*/*外外循循环环控控制制输输出出图图形形的的行行数数*/输输出出(8-i)个个空空格格输输出出(2*i-1)个个*号号输输出出一一个个换换行行符符41 举举例例:特特殊殊图图形形输输出出(4)#include void main()int i,j,k;for(i=8;i=1;i-)for(j=1;j=8-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);*/*外外循循环环控控制制输输出出图图形形的的行行数数*/输输出出(8-i)个个空空格格输输出出(2*i-1)个个*号号输输出出一一个个换换行行符符P108例例4.3042穷穷举举法法举举例例:解解百百钱钱买买百百鸡鸡问问题题l百百钱钱买买百百鸡鸡问问题题(出出自自算算经经,古古代代数数学学家家张张丘丘建建):鸡鸡翁翁一一,值值钱钱五五;鸡鸡母母一一,值值钱钱三三;鸡鸡雏雏三三,值值钱钱一一。百百钱钱买买百百鸡鸡,问问鸡鸡翁翁、母母、雏雏各各几几何何。变变量量cockscocks:存存放放公公鸡鸡数数量量,取取值值020020变变量量henshens:存存放放母母鸡鸡数数量量,取取值值033033变变量量chickschicks:存存放放小小鸡鸡数数量量,取取值值01000100满满足足两两条条件件:cocks+hens+chicks=100(cocks+hens+chicks=100(只只)5*cocks+3*hens+chicks/3=100(5*cocks+3*hens+chicks/3=100(元元)P122习习题题4.2343百百钱钱买买百百鸡鸡程程序序1#include void main()int cocks,hens,chicks;for(cocks=0;cocks=20;cocks+)for(hens=0;hens=33;hens+)for(chicks=0;chicks=100;chicks+)if(cocks+hens+chicks=100&cocks*5+hens*3+chicks/3=100&chicks%3=0)printf(%d,%d,%dn,cocks,hens,chicks);44百百钱钱买买百百鸡鸡程程序序2#include void main()int cocks,hens,chicks;for(cocks=0;cocks=20;cocks+)for(hens=0;hens=33;hens+)chicks=100-cocks-hens;if(cocks*5+hens*3+chicks/3=100&chicks%3=0)printf(%d,%d,%dn,cocks,hens,chicks);穷穷举举法法其其它它应应用用:百百马马百百担担问问题题;鸡鸡兔兔同同笼笼问问题题;整整钱钱换换零零钱钱;密密码码破破译译;猜猜数数游游戏戏;求求水水仙仙花花数数45穷穷举举法法举举例例:求求水水仙仙花花数数#includevoid main()int i,j,k,m1,m2;printf(narcissus numbers are:);for(i=1;i=9;i+)/*百百位位数数*/for(j=0;j=9;j+)/*十十位位数数*/for(k=0;k=9;k+)/*个个位位数数*/m1=i*100+j*10+k;/*m1为为三三个个数数字字分分别别为为i,j,k的的三三位位数数*/m2=i*i*i+j*j*j+k*k*k;/*m2为为三三个个数数字字的的立立方方和和*/if(m1=m2)printf(%4d,m1);/*输输出出满满足足水水仙仙花花条条件件的的数数*/printf(n);P109例例4.32 一一个个三三位位数数若若其其各各位位数数字字立立方方和和等等于于该该数数本本身身,则则为为水水仙仙花花数数,如如:153=13+53+33 则则153是是水水仙仙花花数数。46 数数的的分分离离举举例例:for(i=100;i=999;i+)a=i的的百百位位数数b=i的的十十位位数数c=i的的个个位位数数i=a3+b3+c3YNi i是是水水仙仙花花数数求求水水仙仙花花数数另另解解47数数的的分分离离举举例例例例4.33 输输入入132767之之间间的的整整数数,把把这这个个整整数数显显示示为为一一系系列列数数字字,每每组组数数字字间间隔隔两两个个空空格格。算算法法一一:P110解解法法(了了解解)算算法法二二:用用数数组组处处理理-更更好好!48递递推推/迭迭代代算算法法利利用用递递推推(迭迭代代)公公式式由由前前一一项项或或前前几几项项推推算算出出后后一一项项 关关键键在在递递推推(迭迭代代)公公式式的的构构造造例例如如(P101)Fabonacci数数列列(兔兔子子数数列列)各各项项值值分分别别为为:1,1,2,3,5,8,第第1项项和和第第2项项值值都都是是1,从从第第3项项开开始始,每每一一个个项项值值都都是是它它的的相相邻邻前前2项项的的项项值值之之和和,即即49P101例例4.27 循循环环一一次次求求Fabonacci数数列列的的2个个数数#include void main()int i,x1=1,x2=1;for(i=1;i=10;i+)printf(%d%d ,x1,x2);x1=x1+x2;x2=x2+x1;递递推推/迭迭代代举举例例:求求Fabonacci数数列列前前20项项值值50求求Fabonacci数数列列前前20项项值值#include void main()int i,x1=1,x2=1;for(i=1;i=10;i+)printf(%10d%10d,x1,x2);if(i%2=0)printf(n);x1=x1+x2;x2=x1+x2;实实现现换换行行,保保证证每每行行输输出出2组组(4个个)数数据据例例4.27 改改进进输输出出格格式式保保证证每每个个数数据据占占10列列51求求Fabonacci数数列列前前20项项值值例例4.27另另解解:循循环环一一次次求求Fabonacci数数列列的的1个个数数52求求Fabonacci数数列列前前20项项值值#include void main()int i,x1=1,x2=1,x3;printf(n%10d%10d,x1,x2);/*循循环环之之前前先先输输出出头头2项项*/if(i%4=0)printf(n);/*实实现现每每行行输输出出4个个数数据据*/for(i=3;i=20;i+)x3=x1+x2;printf(%10d,x3);x1=x2;x2=x3;printf(n);例例4.27 另另解解53递递推推/迭迭代代举举例例:猴猴子子吃吃桃桃问问题题 P91-92P91-92例例4.214.21 猴猴子子摘摘下下了了一一堆堆桃桃子子,第第一一天天吃吃总总数数的的一一半半多多一一个个,第第二二天天吃吃剩剩下下的的一一半半多多一一个个,以以后后每每天天都都吃吃前前一一天天剩剩下下的的一一半半多多一一个个,到到第第十十天天想想再再吃吃时时剩剩一一个个,求求第第一一天天共共有有多多少少个个桃桃子子?设设第第1 11010天天未未吃吃前前的的桃桃子子数数分分别别为为X X1 1,X,X2 2,X,X1010 X Xn n=X=Xn-1n-1/2-1/2-1 X X1010=1=1迭迭代代公公式式为为:54 猴猴子子吃吃桃桃问问题题 P91-92例例4.21#include void main()int k,x1,x2;k=1;x2=1;/*已已知知第第10天天的的桃桃子子数数*/while(k=9)x1=(x2+1)*2;/*求求第第(10-k)天天 x2=x1;的的桃桃子子数数*/k+;printf(Total number=%dn ,x1);另另解解:更更简简洁洁!#include void main()int k,x;x=1;/*已已知知第第10天天的的桃桃子子数数*/for(k=9;k=1;k-)x=(x+1)*2;/*求求第第k天天的的桃桃子子数数*/printf(Total number=%dn ,x);55P122习习题题4.29 用用牛牛顿顿迭迭代代法法(牛牛顿顿切切线线法法)求求方方程程x3+4x2-10=0 在在0,3之之间间(或或1.5附附近近)的的根根。牛牛顿顿迭迭代代法法求求方方程程的的根根举举例例设设xk是是方方程程f(x)=0的的一一个个近近似似根根导导数数的的几几何何意意义义即即切切线线的的斜斜率率,得得出出:56因因此此,令令 =x3+4x2-10=(x+4)*x)*x-10 则则 =3x2+8x=(3*x+8)*x牛牛顿顿迭迭代代法法求求根根反反复复迭迭代代,直直到到前前后后两两次次求求出出的的x的的差差的的绝绝对对值值小小于于10-5一一元元多多项项式式的的分分层层计计算算比比直直接接计计算算减减少少计计算算量量。牛牛顿顿迭迭代代公公式式习习题题4.2957用用牛牛顿顿迭迭代代法法求求根根N-S图图习习题题4.2958二二分分法法求求方方程程的的根根举举例例P111例例4.34 用用二二分分法法求求方方程程x3+1.1x2+0.9x-1.4=0的的根根。100200Y-100 x1x2f(x1)xf(x2)f(x)f(x)X1、x2的中点x=(x1+x2)/2059二二分分法法求求根根思思路路基基本本思思路路:取取区区间间两两端端点点x1和和x2,(1)若若f(x1)、f(x2)符符号号相相反反,则则在在(x1,x2)区区间间内内有有一一实实根根;取取(x1,x2)的的中中点点x,若若f(x1)、f(x)符符号号相相反反,则则实实根根在在(x1,x)区区间间内内,改改设设x2=x,区区间间减减半半;若若f(x1)、f(x)符符号号相相同同,则则实实根根在在(x,x2)区区间间内内,改改设设x1=x,区区间间减减半半;如如此此反反复复,不不断断缩缩小小区区间间,直直到到区区间间很很小小(|x1-x2|10-6),或或者者|f(x)|10-6,则则根根为为x。(2)若若f(x1)、f(x2)符符号号相相同同,则则在在(x1,x2)区区间间内内无无实实根根。60二二分分法法求求根根程程序序#include#includevoid main()float x,x1,x2,y1,y2,y;do printf(Input x1,x2:n);scanf(%f,%f,&x1,&x2);y1=(x1+1.1)*x1+0.9)*x1-1.4;y2=(x2+1.1)*x2+0.9)*x2-1.4;while(y1*y2=0);/*使使输输入入的的x1、x2满满足足f(x1)*f(x2)0)x1=x;/*若若f(x)*f(x1)0,根根在在区区间间(x,x2)内内*/else x2=x;/*若若f(x)*f(x1)=1e-6);/*或或while(fabs(x1-x2)=1e-6);*/printf(A root of equation is:%8.2fn,x);例例4.34 61数数的的判判别别举举例例:判判断断整整数数m是是否否为为素素数数l素素数数即即为为质质数数,如如果果一一个个整整数数只只能能被被1 1或或者者它它本本身身整整除除,这这个个数数就就称称为为是是素素数数。l判判断断素素数数的的思思路路是是:让让m m被被2 2m/2m/2之之间间所所有有的的整整数数整整除除,如如果果m m能能被被2 2m/2 m/2 之之中中的的任任何何一一个个整整数数整整除除,则则m m一一定定不不是是素素数数;如如果果在在2 2m/2m/2之之间间不不存存在在能能被被m m整整除除的的整整数数,则则m m是是素素数数。P114P114例例4.364.3662判判断断整整数数m是是否否为为素素数数算算法法N-S图图m%i=0ik或或i=k+1,或或i=k+1循循环环结结束束后后根根据据 i的的值值来来决决定定m是是否否为为素素数数63判判断断整整数数m是是否否为为素素数数程程序序#includevoidmain()intm,i,k;scanf(%d,&m);k=m/2;for(i=2;ik)printf(n%disaprimenumber.n,m);elseprintf(n%disnotaprimenumbern,m);/*可可用用 k=sqrt(m);替替代代,减减少少判判断断次次数数*/64 for m=100 to 200 输输出出m 真真 假假 for i=2 to k k=sqrt(m)真真 假假 break 结结束束循循环环m%i=0ik举举例例:输输出出100200之之间间的的所所有有素素数数65P115例例4.37辗辗转转相相除除法法求求最最大大公公约约数数举举例例用用辗辗转转相相除除法法(欧欧几几里里德德算算法法)求求最最大大公公约约数数#include void main()long m,n,a,b,r;printf(nPlease input 2 integers:);scanf(%ld,%ld,&m,&n);a=mn?m:n;b=m=n?m:n;r=a%b;while(r!=0)a=b;b=r;r=a%b;printf(最最大大公公约约数数是是%ldn,b);printf(最最小小公公倍倍数数是是%ldn,m*n/b);66P116例例4.38 求求最最大大数数、最最小小数数、奇奇数数个个数数、偶偶数数个个数数统统计计问问题题举举例例:求求最最大大数数、最最小小数数等等#include void main()int i,max,min,oldn=0,even=0,x;for(i=1;imax)max=x;if(xmin)min=x;printf(max=%d,mix=%dn,max,min);printf(There are%d even numbers.n,evenn);printf(There are%d old numbers.n,oldn);67方方法法之之一一:小小梯梯形形面面积积之之和和area=hf(a)+f(a+h)/2+hf(a+h)+f(a+2h)/2+hf(a+2h)+f(a+3h)/2+hf(a+(n-1)+f(b)/2求求定定积积分分其其中中 f(x)=x2+4.8梯梯形形法法求求定定积积分分举举例例abxyhf(x)P117例例4.39函函数数f(xf(x)在在 a,ba,b 上上的的定定积积分分的的几几何何意意义义是是求求f(xf(x)曲曲线线和和直直线线x=ax=a,y=0y=0,x=bx=b所所围围成成的的曲曲边边梯梯形形面面积积。方方法法之之一一:小小梯梯形形面面积积之之和和area=hf(a)+f(b)/2+f(a+h)+f(a+2h)+f(a+(n-1)h)68#includevoidmain()inti,n;floata=0,b=1.5,h,x,area=0,s=0;printf(Pleaseinputn=);scanf(%d,&n);h=(b-a)/n;area=h*(a*a+4.8)+(b*b+4.8)/2;for(i=1;in;i+)x=a+i*h;s+=x*x+4.8;area+=s*h;printf(area=%fn,area);abxyhf(x)梯梯形形法法求求定定积积分分69几几种种循循环环的的比比较较1 1)whilewhile循循环环、do do whilewhile循循环环、forfor循循环环都都可可以以用用来来处处理理

    注意事项

    本文(C语言新教材PPT课堂课件-4(2)-循环结构.pdf)为本站会员(君****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开