C语言新教材PPT课堂课件-4(2)-循环结构.pdf
《C语言新教材PPT课堂课件-4(2)-循环结构.pdf》由会员分享,可在线阅读,更多相关《C语言新教材PPT课堂课件-4(2)-循环结构.pdf(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、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举举例例:求求1
2、100之之间间所所有有整整数数的的和和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语语句句之之前前对对变变量量su
3、msum赋赋初初值值为为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 语语句句实实现现直直到到型型循
4、循环环格格式式: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 语语句句实实现现当当型型循循环环 格格式式:
5、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(循循环环变变量量赋赋初初值值;循循环环条条件件;循
6、循环环变变量量增增值值 )语语句句例例: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典典型型算算法法:累累加加、连连乘乘累累加加算算法法之之累累加加
7、通通式式:累累加加和和变变量量=累累加加和和变变量量+累累加加项项如如 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】求求的的近近似似值值【例例】求求若若干干数数之之总总和和
8、及及平平均均值值【例例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;prin
9、tf(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利利用用格格里
10、里高高公公式式 求求的的近近似似值值,直直到到最最后后一一项项的的绝绝对对值值小小于于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交交替替出出现现
11、*/*累累加加和和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.
12、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 语
13、语句句的的灵灵活活使使用用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
14、=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之之间间的的整整数数之之和
15、和 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
16、=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循
17、循环环可可替替代代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之之间间的的整整数数之
18、之和和for 语语句句的的灵灵活活使使用用表表达达式式2 2可可缺缺省省,放放在在循循环环体体之之中中,但但forfor语语句句中中的的两两个个分分号号都都不不能能省省略略。ifif (i=100)(i=100)此此处处为为空空相相当当于于1(永永真真条条件件)244.4.4 break语语句句和和continue语语句句lbreak 语语句句格格式式:break;功功能能:提提前前结结束束整整个个循循环环,从从循循环环体体中中无无条条件件跳跳转转到到循循环环语语句句后后面面执执行行。可可用用于于switch语语句句和和循循环环结结构构中中。lcontinue语语句句格格式式:continue
19、;功功能能:结结束束本本轮轮循循环环,即即在在本本轮轮循循环环中中,不不再再执执行行循循环环体体中中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!26bre
20、ak语语句句的的使使用用算算法法:假假设设将将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语语句句的的使使
21、用用算算法法:假假设设将将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
22、语语句句的的使使用用算算法法:假假设设将将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
23、=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语语句句的的使使
24、用用例例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;ca
25、se4: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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 新教材 PPT 课堂 课件 循环 结构
限制150内