C语言新教材PPT课堂课件-4(2)-循环结构.ppt
《C语言新教材PPT课堂课件-4(2)-循环结构.ppt》由会员分享,可在线阅读,更多相关《C语言新教材PPT课堂课件-4(2)-循环结构.ppt(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举例:求举例
2、:求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如果在如
3、果在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+;能否对调位置?能否对调位置?程序的哪些地方应作相应的改动?程序的哪些地方应作相应的改动?sum=0,i=1 当当i 1
4、00sum=sum+i i=i+1 输出输出sum的值的值例例4.18while语句语句6 4.4.2 用用do-while 语句实现直到型循环语句实现直到型循环格式格式:do do 语句语句 while(while(表达式表达式););表达式表达式循环体语句循环体语句真真(非非0)假假(0)继续循环继续循环的条件的条件注意:循环体至少被执行一次注意:循环体至少被执行一次 语句(循环体)语句(循环体)当当表达式为真表达式为真直直到到型型循循环环7举例:用举例:用do-while语句求语句求1-100之间整数和之间整数和 sum=0,i=1 sum=sum+i i=i+1 当当i=100 输出输
5、出sum的值的值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语句的最常用格式语句的最常用格式在在forf
6、or语句中,通常表达式语句中,通常表达式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+)su
7、m=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+;(计数)(计数)连乘算法之连乘通式:连乘算法
8、之连乘通式:连乘积变量连乘积变量=连乘积变量连乘积变量*连乘项连乘项如如 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
9、;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.
10、194.19 利用以下公式求利用以下公式求的近似值(的近似值(n n由键由键盘输入,盘输入,n n值越大值越大的值越精确)的值越精确)也可用for语句或do-while语句实现15举例:求举例:求的近似值(的近似值(2)累加式累加式累加式累加式准备准备下一项下一项准备准备下一项下一项循环条件循环条件循环条件循环条件P94P94例例4.224.22利用格里高公式利用格里高公式 求求的近似值,的近似值,直到最后一项的绝对值小于直到最后一项的绝对值小于1010-6-6为止为止/*累加项累加项t,累加和累加和pi,分母分母n,符号位符号位s*/当当型型直直到到型型/*实现实现+1和和-1交替出现交替出
11、现*/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()floa
12、t 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 ;
13、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
14、=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;)f
15、or(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
16、;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,s
17、um;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#inclu
18、de 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
19、(i=100)(i=100)此处为空相当于此处为空相当于1(永真条件)(永真条件)244.4.4 break语句和语句和continue语句语句lbreak 语句语句格式格式:break;功能功能:提前结束整个循环,从循环体中无条件提前结束整个循环,从循环体中无条件跳转到循环语句后面执行。跳转到循环语句后面执行。可用于可用于switch语句和循环结构中。语句和循环结构中。lcontinue语句语句格式格式:continue;功能功能:结束本轮循环,即在本轮循环中,不再结束本轮循环,即在本轮循环中,不再执行循环体中执行循环体中continue后面的语句。后面的语句。只能用于循环结构。只能用于循环
20、结构。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-
21、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和51
22、2-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能被能被1
23、3整除,整除,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,s
24、um,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+)
25、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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 新教材 PPT 课堂 课件 循环 结构
限制150内