05第5章 循环结构.ppt

上传人:s****8 文档编号:67308030 上传时间:2022-12-24 格式:PPT 页数:35 大小:1.34MB
返回 下载 相关 举报
05第5章 循环结构.ppt_第1页
第1页 / 共35页
05第5章 循环结构.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《05第5章 循环结构.ppt》由会员分享,可在线阅读,更多相关《05第5章 循环结构.ppt(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第5章 循环结构5.1 while5.1 while语句语句5.2 do-while5.2 do-while语句语句5.3 for5.3 for语句语句5.4 5.4 循环嵌套循环嵌套5.5 break5.5 break语句与语句与continuecontinue语句语句5.6 5.6 程序举例程序举例例例例例5.15.1:计算:计算:计算:计算:1+2+3+1001+2+3+100int sum;int sum;sum=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+sum=1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16

2、+17+18+19+20+21+22+23+24+25+26+27+28+29+30+;/19+20+21+22+23+24+25+26+27+28+29+30+;/不合适不合适不合适不合适sum=0;sum=0;sum+=1;sum+=1;sum+=2;sum+=2;sum+=3;sum+=3;sum+=100;sum+=100;printf(sum=%dn,sum);printf(sum=%dn,sum);改进:改进:改进:改进:i=1;sum=0;i=1;sum=0;sum+=i;sum+=i;i+=1;i+=1;如果如果如果如果i=100,i=100,跳到跳到跳到跳到 输出输出输出输出

3、sumsum5.1 while语句1 1、格式:、格式:、格式:、格式:whilewhile (表达式表达式表达式表达式)循环体语句循环体语句循环体语句循环体语句2 2、功能:、功能:、功能:、功能:先计算表达式的值,值为非先计算表达式的值,值为非先计算表达式的值,值为非先计算表达式的值,值为非时重复执行循环体时重复执行循环体时重复执行循环体时重复执行循环体直到表达式值为直到表达式值为直到表达式值为直到表达式值为时退出循环,跳转到循环体之后的语时退出循环,跳转到循环体之后的语时退出循环,跳转到循环体之后的语时退出循环,跳转到循环体之后的语句执行句执行句执行句执行表达式成立?表达式成立?表达式成

4、立?表达式成立?循环体循环体循环体循环体真真真真(非非非非0)0)假假假假(0)(0)真真真真(非非非非0)0)假假假假(0)(0)例例例例5.1 5.1 计算:计算:计算:计算:1+2+3+1001+2+3+100i=100i=100?sum+=isum+=ii=i+1i=i+1while(i=100)while(i=100)sum+=i;sum+=i;i=i+1;i=i+1;例例例例5.15.1:计算:计算:计算:计算 1+2+3+1001+2+3+100while(i=100)while(i=100)sum+=i;sum+=i;i+;i+;i=1;i=1;sum=0;sum=0;#inc

5、lude#include void main()void main()int i,sum;int i,sum;printf(sum=%dn,sum);printf(sum=%dn,sum);sum=0sum=0;i=1i=1;?i+i+;sum+=isum+=i;?EG208.CEG208.C编程原则:编程原则:编程原则:编程原则:改变位置后,只要不改变位置后,只要不改变位置后,只要不改变位置后,只要不影响后面的使用(计算影响后面的使用(计算影响后面的使用(计算影响后面的使用(计算结果)即可。结果)即可。结果)即可。结果)即可。例例例例5.2 5.2 输入若干个数,以输入若干个数,以输入若干个

6、数,以输入若干个数,以0 0作为结束标志,计算并输出这些数作为结束标志,计算并输出这些数作为结束标志,计算并输出这些数作为结束标志,计算并输出这些数的平均值(的平均值(的平均值(的平均值(0 0不计算在内)。不计算在内)。不计算在内)。不计算在内)。分析:定义三个变量:分析:定义三个变量:分析:定义三个变量:分析:定义三个变量:x x:存放输入的数:存放输入的数:存放输入的数:存放输入的数sumsum:存放各数的和;:存放各数的和;:存放各数的和;:存放各数的和;countcount:计数:计数:计数:计数while(while(x!=0 x!=0)sum+=x;sum+=x;count+=1

7、;count+=1;scanf(%f,&x);scanf(%f,&x);scanf(%f,&x);scanf(%f,&x);sum=0;sum=0;count=0;count=0;EG209.CEG209.C#include#include void main()void main()float sum,x,count;float sum,x,count;sum=0;sum=0;count=0;count=0;scanf(%f,&x);scanf(%f,&x);/读入第一个读入第一个读入第一个读入第一个 x x while(x!=0)while(x!=0)sum+=x;sum+=x;count

8、+=1;count+=1;scanf(%f,&x);scanf(%f,&x);/读入其它的读入其它的读入其它的读入其它的 x x printf(aver=%.2fn,printf(aver=%.2fn,count=0count=0?0 0:sum/countsum/count););EG209.CEG209.C注意:注意:1.1.循环结束的条件?循环结束的条件?2.2.循环体要完成哪些操作?循环体要完成哪些操作?3.3.在循环体的最后读入下一在循环体的最后读入下一个值,以不断的得到新值个值,以不断的得到新值4.4.whilewhile语句之前应该完成语句之前应该完成哪些操作?哪些操作?例例例例

9、5.3 5.3 输入一行字符,以输入一行字符,以输入一行字符,以输入一行字符,以nn作为结束标志,计算字符个数。作为结束标志,计算字符个数。作为结束标志,计算字符个数。作为结束标志,计算字符个数。scanf(scanf(%c%c,&ch);,&ch);while(chwhile(ch!=!=nn)count+=1;count+=1;scanf(%c,&ch);scanf(%c,&ch);#include#include void main()void main()char ch;char ch;int count=0;int count=0;printf(count=%dn,count);pr

10、intf(count=%dn,count);#include#include void main()void main()int count=0;int count=0;while(while(getchar()getchar()!=n)!=n)count+;count+;printf(count=%dn,count);printf(count=%dn,count);字符输入函数字符输入函数字符输入函数字符输入函数getchar()getchar()用法:用法:用法:用法:ch=getchar()ch=getchar()作用:从键盘读入一个字符赋值给变量作用:从键盘读入一个字符赋值给变量作用:

11、从键盘读入一个字符赋值给变量作用:从键盘读入一个字符赋值给变量chch字符输出函数字符输出函数字符输出函数字符输出函数putchar()putchar()用法:用法:用法:用法:putchar(ch)putchar(ch);或:或:或:或:putchar(A)putchar(A);EG210.CEG210.C3 3、whilewhile语句的特点:语句的特点:语句的特点:语句的特点:先判断表达式,然后执行循环体。若表先判断表达式,然后执行循环体。若表先判断表达式,然后执行循环体。若表先判断表达式,然后执行循环体。若表达式一开始就不成立,则循环体一次也不达式一开始就不成立,则循环体一次也不达式一

12、开始就不成立,则循环体一次也不达式一开始就不成立,则循环体一次也不执行执行执行执行。表达式成立?表达式成立?表达式成立?表达式成立?循环体循环体循环体循环体真真真真(非非非非0)0)假假假假(0)(0)4 4、注意:、注意:、注意:、注意:、在循环之前需要给某些变量赋值(循环变量赋初值);、在循环之前需要给某些变量赋值(循环变量赋初值);、在循环之前需要给某些变量赋值(循环变量赋初值);、在循环之前需要给某些变量赋值(循环变量赋初值);、循环体中应有使循环趋于结束的语句;、循环体中应有使循环趋于结束的语句;、循环体中应有使循环趋于结束的语句;、循环体中应有使循环趋于结束的语句;、循环部分为多个

13、语句时,必须用大括号构成复合语句。、循环部分为多个语句时,必须用大括号构成复合语句。、循环部分为多个语句时,必须用大括号构成复合语句。、循环部分为多个语句时,必须用大括号构成复合语句。i=1;sum=0;i=1;sum=0;while (while (i=100i=100)sum=sum+i;sum=sum+i;i+;i+;sum=0;count=0;sum=0;count=0;scanf(%f,&x);scanf(%f,&x);while(while(x!=0 x!=0 )sum+=x;sum+=x;count+=1;count+=1;scanf(%f,&x);scanf(%f,&x);sc

14、anf(%c,&ch);scanf(%c,&ch);while(chwhile(ch!=!=nn)count+=1;count+=1;scanf(%c,&ch);scanf(%c,&ch);5.2 do-while语句1 1、格式:、格式:、格式:、格式:dodo 循环体语句循环体语句循环体语句循环体语句whilewhile(表达式表达式表达式表达式);2 2、功能:、功能:、功能:、功能:先执行一遍循环体,然后计算表达式的值,若值为真先执行一遍循环体,然后计算表达式的值,若值为真先执行一遍循环体,然后计算表达式的值,若值为真先执行一遍循环体,然后计算表达式的值,若值为真(非(非(非(非0 0

15、 0 0),返回重复执行循环体;直到表达式的值为假(),返回重复执行循环体;直到表达式的值为假(),返回重复执行循环体;直到表达式的值为假(),返回重复执行循环体;直到表达式的值为假(0 0 0 0)时结)时结)时结)时结束循环。束循环。束循环。束循环。表达式成立吗?表达式成立吗?表达式成立吗?表达式成立吗?循环体循环体循环体循环体真真真真(非非非非0)0)假假假假(0)(0)3 3、特点:、特点:、特点:、特点:先执行循环体,后判断表达式(循环条件)是否成立,先执行循环体,后判断表达式(循环条件)是否成立,先执行循环体,后判断表达式(循环条件)是否成立,先执行循环体,后判断表达式(循环条件)

16、是否成立,即循环体至少执行一次。即循环体至少执行一次。即循环体至少执行一次。即循环体至少执行一次。4 4、推荐书写格式:、推荐书写格式:、推荐书写格式:、推荐书写格式:dodo .while(.);while(.);例例例例5.45.4:计算:计算:计算:计算1+2+3+1001+2+3+100真真真真(非非非非0)0)假假假假(0)(0)sum+=isum+=ii+i+i=100?i=100?do do sum+=i;sum+=i;i+;i+;while(i=100)while(i=100);#include#include void main()void main()int i=1,sum

17、=0;int i=1,sum=0;printf(sum=%dn,sum);printf(sum=%dn,sum);EG211.CEG211.C5 5、do-whiledo-while语句较少使用,但需要先执行循环体时使用语句较少使用,但需要先执行循环体时使用语句较少使用,但需要先执行循环体时使用语句较少使用,但需要先执行循环体时使用例:输入两个数例:输入两个数例:输入两个数例:输入两个数x x和和和和y y,要求,要求,要求,要求x x、y y异号。即同号则要求继续输异号。即同号则要求继续输异号。即同号则要求继续输异号。即同号则要求继续输入,直到异号为止。入,直到异号为止。入,直到异号为止。入

18、,直到异号为止。float x,y;float x,y;dodo printf(Input x,y:);printf(Input x,y:);scanf(%f%f,&x,&y);scanf(%f%f,&x,&y);whilewhile();/*();/*同时不允许出现同时不允许出现同时不允许出现同时不允许出现0*/0*/x*y=0 x*y=0EG212.CEG212.C5.3 for语句1 1、格式:、格式:、格式:、格式:forfor (表达式表达式表达式表达式1 1;表达式表达式表达式表达式2 2;表达式表达式表达式表达式3 3)循环体语句循环体语句循环体语句循环体语句表达式表达式表达式表

19、达式2 2成立吗?成立吗?成立吗?成立吗?求解表达式求解表达式求解表达式求解表达式3 3真真(非非0)0)假假(0)(0)求解表达式求解表达式求解表达式求解表达式1 1循环体语句循环体语句循环体语句循环体语句2 2、功能:、功能:、功能:、功能:、先求解表达式、先求解表达式、先求解表达式、先求解表达式1 1(给循环控制变量赋初值)(给循环控制变量赋初值)(给循环控制变量赋初值)(给循环控制变量赋初值)、求解表达式、求解表达式、求解表达式、求解表达式2 2,若为真(非,若为真(非,若为真(非,若为真(非0 0),执行循环体;),执行循环体;),执行循环体;),执行循环体;若为假(若为假(若为假(

20、若为假(0 0),),),),结束循环结束循环结束循环结束循环、求解表达式、求解表达式、求解表达式、求解表达式3 3(改变了表达式(改变了表达式(改变了表达式(改变了表达式2 2中某个变量的值)中某个变量的值)中某个变量的值)中某个变量的值)、返回、返回、返回、返回for(i=1for(i=1;i=100i=100;i+)i+)sum+=i;sum+=i;例例例例5.55.5:计算:计算:计算:计算 sum=1+2+3+100sum=1+2+3+100#include#include void main()void main()int i,sum=0;int i,sum=0;for(i=1;i

21、=100;i+)for(i=1;i=100;i+)sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum=%dn,sum);EG213.CEG213.C例例例例5.65.6:计算:计算:计算:计算 1+3+5+7+n(n1+3+5+7+n(n为奇为奇为奇为奇数数数数)#include#include void main()void main()int i,sum=0,n;int i,sum=0,n;scanf(%d,&n);scanf(%d,&n);for (i=1;for (i=1;i=ni=n;i+=2i+=2)sum=sum+i;sum=sum+i;pr

22、intf(sum=%dn,sum);printf(sum=%dn,sum);forfor语句可以写成以下形式:语句可以写成以下形式:语句可以写成以下形式:语句可以写成以下形式:sum=0;sum=0;i=1;i=1;for(;i=n;i+=2)for(;i=n;i+=2)sum+=i;sum+=i;sum=0;sum=0;i=1i=1;for(;i=n;)for(;i=n;)sum+=i;sum+=i;i+=2;i+=2;for(for(i=1,sum=0i=1,sum=0;i=n;i+=2);i=n;i+=2)sum+=i;sum+=i;EG214.CEG214.C例例例例5.7 5.7 打

23、印九九乘法表。打印九九乘法表。打印九九乘法表。打印九九乘法表。for(for(i=1i=1;i=9i=9;i+i+)for(j=1;for(j=1;j=ij=i;j+);j+)printf(%d*%d=%-4d,i,j,i*j);printf(%d*%d=%-4d,i,j,i*j);printf(n);printf(n);#include#include void main()void main()int i,j;int i,j;例例例例5.8 5.8 打印打印打印打印101-200101-200之间的全部素数。之间的全部素数。之间的全部素数。之间的全部素数。判断判断判断判断mm是否是素数可以

24、让是否是素数可以让是否是素数可以让是否是素数可以让mm被被被被2 2、3 3、4 4 去除,若去除,若去除,若去除,若 能能能能被其中的任何一个数整除,则证明不是素数;相反,若不能被其中的任何一个数整除,则证明不是素数;相反,若不能被其中的任何一个数整除,则证明不是素数;相反,若不能被其中的任何一个数整除,则证明不是素数;相反,若不能被所有数整除,则证明是素数。被所有数整除,则证明是素数。被所有数整除,则证明是素数。被所有数整除,则证明是素数。for(m=101;m=200;m+=2)for(m=101;m=200;m+=2)k=(int)k=(int)sqrt(m)sqrt(m);for(i

25、=2;for(i=2;i=ki=k;i+);i+)if(if(m%i=0m%i=0)break;break;if()if()printf(%-5d,m);printf(%-5d,m);i=k+1i=k+15.4 循环嵌套一个循环体内又包含另一个一个循环体内又包含另一个一个循环体内又包含另一个一个循环体内又包含另一个完整的完整的完整的完整的循环结构循环结构循环结构循环结构,称为,称为,称为,称为循环嵌循环嵌循环嵌循环嵌套套套套。内层的循环中还可以嵌套循环,构成。内层的循环中还可以嵌套循环,构成。内层的循环中还可以嵌套循环,构成。内层的循环中还可以嵌套循环,构成多重循环多重循环多重循环多重循环。三

26、种循环可以相互嵌套。三种循环可以相互嵌套。三种循环可以相互嵌套。三种循环可以相互嵌套。例:例:例:例:while()while()while()while()for(;)for(;)for(;)for(;)while()while()for(;)for(;)例例例例5.9 5.9 输出如图所示的等腰三角形:输出如图所示的等腰三角形:输出如图所示的等腰三角形:输出如图所示的等腰三角形:*特点:第特点:第特点:第特点:第i i i i行有行有行有行有_个星号!个星号!个星号!个星号!一共有一共有一共有一共有6 6 6 6行行行行,第第第第i i i i行的第行的第行的第行的第1 1 1 1个星号前

27、有个星号前有个星号前有个星号前有_个空格个空格个空格个空格2*i-12*i-16-i6-ifor(i=1;i=6;i+)for(i=1;i=6;i+)输出输出输出输出 6-i6-i 个空格个空格个空格个空格 输出输出输出输出 2*i-12*i-1 个个个个*换行换行换行换行#include#include void main()void main()int i,j;int i,j;for(i=1;i=6;i+)for(i=1;i=6;i+)putchar(n);putchar(n);for(j=1;for(j=1;j=6-ij=6-i;j+);j+)putchar(putchar(3232);

28、);for(j=1;for(j=1;j=2*i-1j=2*i-1;j+);j+)putchar(*);putchar(*);EG217.CEG217.C几种循环的比较:、C C语言中的三种循环结构都由表达式控制执行一个循语言中的三种循环结构都由表达式控制执行一个循语言中的三种循环结构都由表达式控制执行一个循语言中的三种循环结构都由表达式控制执行一个循环体,环体,环体,环体,一般情况下可以相互代替一般情况下可以相互代替一般情况下可以相互代替一般情况下可以相互代替;、用、用、用、用whilewhile和和和和do-whiledo-while循环时,循环变量初始化的操作应循环时,循环变量初始化的操作

29、应循环时,循环变量初始化的操作应循环时,循环变量初始化的操作应在在在在whilewhile和和和和do-whiledo-while语句之前完成;而语句之前完成;而语句之前完成;而语句之前完成;而forfor语句一般在表达式语句一般在表达式语句一般在表达式语句一般在表达式1 1中实现循环变量的初始化;中实现循环变量的初始化;中实现循环变量的初始化;中实现循环变量的初始化;、当、当、当、当循环次数及控制条件循环次数及控制条件循环次数及控制条件循环次数及控制条件要要要要在程序运行过程中确定在程序运行过程中确定在程序运行过程中确定在程序运行过程中确定时,时,时,时,选用选用选用选用whilewhile

30、或或或或do-whiledo-while语句;语句;语句;语句;、在、在、在、在初值、增量及控制条件明显初值、增量及控制条件明显初值、增量及控制条件明显初值、增量及控制条件明显,或,或,或,或循环次数已经给定循环次数已经给定循环次数已经给定循环次数已经给定的情况下,选用的情况下,选用的情况下,选用的情况下,选用forfor语句;语句;语句;语句;、在循环的执行过程中,应、在循环的执行过程中,应、在循环的执行过程中,应、在循环的执行过程中,应不断的改变循环控制表达式不断的改变循环控制表达式不断的改变循环控制表达式不断的改变循环控制表达式的值的值的值的值,以便逐步形成使它为,以便逐步形成使它为,以

31、便逐步形成使它为,以便逐步形成使它为的条件,否则将可能出现的条件,否则将可能出现的条件,否则将可能出现的条件,否则将可能出现死死死死循环循环循环循环;、三种循环可以相互嵌套,形成多重循环,外循环可以、三种循环可以相互嵌套,形成多重循环,外循环可以、三种循环可以相互嵌套,形成多重循环,外循环可以、三种循环可以相互嵌套,形成多重循环,外循环可以包含多个或多重内循环,包含多个或多重内循环,包含多个或多重内循环,包含多个或多重内循环,循环之间可以并列但不能相交循环之间可以并列但不能相交循环之间可以并列但不能相交循环之间可以并列但不能相交,并列的循环控制变量可以同名并列的循环控制变量可以同名并列的循环控

32、制变量可以同名并列的循环控制变量可以同名,但,但,但,但嵌套的循环控制变量不嵌套的循环控制变量不嵌套的循环控制变量不嵌套的循环控制变量不能同名能同名能同名能同名;、不允许不允许不允许不允许用其它的控制语句用其它的控制语句用其它的控制语句用其它的控制语句把程序流程从循环体外转入把程序流程从循环体外转入把程序流程从循环体外转入把程序流程从循环体外转入循环体内循环体内循环体内循环体内,但必要时可以用,但必要时可以用,但必要时可以用,但必要时可以用breakbreak、gotogoto等语句把流程从等语句把流程从等语句把流程从等语句把流程从循环体内转到循环体外。循环体内转到循环体外。循环体内转到循环体

33、外。循环体内转到循环体外。5.5 break语句和continue语句5.5.1 break5.5.1 break语句语句1 1、格式:、格式:、格式:、格式:break;break;2 2、功能:、功能:、功能:、功能:中止当前循环语句或中止当前循环语句或中止当前循环语句或中止当前循环语句或switchswitch语句的执行语句的执行语句的执行语句的执行3 3、说明:、说明:、说明:、说明:、若是多重循环,、若是多重循环,、若是多重循环,、若是多重循环,breakbreak只能使流程跳出离只能使流程跳出离只能使流程跳出离只能使流程跳出离breakbreak最近最近最近最近的一层;的一层;的一

34、层;的一层;、breakbreak只用于只用于只用于只用于switchswitch语句和循环语句。语句和循环语句。语句和循环语句。语句和循环语句。例例例例5.8 5.8 打印打印打印打印101-200101-200之间的全部素数。之间的全部素数。之间的全部素数。之间的全部素数。EG218.CEG218.Cfor(m=101;m=200;m+=2)for(m=101;m=200;m+=2)k=(int)sqrt(m);k=(int)sqrt(m);for(i=2;i=k;i+)for(i=2;i=k;i+)if(m%i=0)if(m%i=0)break;break;if(i=k+1)if(i=k

35、+1)printf(%-5d,m);printf(%-5d,m);5.5.2 continue5.5.2 continue语句语句1 1、格式:、格式:、格式:、格式:continue;continue;2 2、功能:、功能:、功能:、功能:提前结束本次循环的执行提前结束本次循环的执行提前结束本次循环的执行提前结束本次循环的执行(不再执行循环体中(不再执行循环体中(不再执行循环体中(不再执行循环体中continuecontinue后后后后面的语句),面的语句),面的语句),面的语句),接着进行下一次是否执行循环的判定接着进行下一次是否执行循环的判定接着进行下一次是否执行循环的判定接着进行下一次

36、是否执行循环的判定3 3、说明:、说明:、说明:、说明:、continuecontinue语句只能用于循环语句中,它是一种具有特语句只能用于循环语句中,它是一种具有特语句只能用于循环语句中,它是一种具有特语句只能用于循环语句中,它是一种具有特殊功能的转移语句;殊功能的转移语句;殊功能的转移语句;殊功能的转移语句;、continuecontinue与与与与breakbreak不同:不同:不同:不同:continuecontinue语句只是结束本次循语句只是结束本次循语句只是结束本次循语句只是结束本次循环环环环,而不是终止整个循环的执行;而,而不是终止整个循环的执行;而,而不是终止整个循环的执行;

37、而,而不是终止整个循环的执行;而breakbreak语句则结束整个循语句则结束整个循语句则结束整个循语句则结束整个循环环环环,不再判断循环条件是否成立。,不再判断循环条件是否成立。,不再判断循环条件是否成立。,不再判断循环条件是否成立。例例例例5.9 5.9 把把把把1010到到到到2020之间能被之间能被之间能被之间能被3 3整除的数输出整除的数输出整除的数输出整除的数输出#include stdio.h#include stdio.hvoid main()void main()int n;int n;for(n=10;n=20;n+)for(n=10;n=1E-6)=1E-6)sum+=t

38、;sum+=t;n+=2;n+=2;t=1/n;t=1/n;sum=0;n=1;t=1;sum=0;n=1;t=1;#include#include void main()void main()double n,t,sumdouble n,t,sum;sum=0;sum=0;n=t=1;n=t=1;while(while(t=1E-6t=1E-6 )sum+=t;sum+=t;n=n+2;n=n+2;t=1/n;t=1/n;printf(sum=%fn,sum);printf(sum=%fn,sum);EG221.CEG221.CEG222.CEG222.C例例5.11 5.11 用以下公式计

39、算用以下公式计算 的近似值。知直到最后一项的绝对值的近似值。知直到最后一项的绝对值小于小于1010-8-8。while(fabs(t)=1E-8)while(fabs(t)=1E-8)sum+=t;sum+=t;i+=2;i+=2;sign*=-1;sign*=-1;t=sign*1/i;t=sign*1/i;sum=0;i=1;sum=0;i=1;t=1;sign=1;t=1;sign=1;问题问题问题问题:用哪种循环语句?用哪种循环语句?用哪种循环语句?用哪种循环语句?表达式如何写?表达式如何写?表达式如何写?表达式如何写?fabs(t)fabs(t)=1E-8=1E-8如何使符号发生变化

40、?如何使符号发生变化?如何使符号发生变化?如何使符号发生变化?变量的类型?变量的类型?变量的类型?变量的类型?EG222.CEG222.C例例例例5.12 5.12 用迭代法求方程用迭代法求方程用迭代法求方程用迭代法求方程x=cosxx=cosx的根,要求误差小于的根,要求误差小于的根,要求误差小于的根,要求误差小于1010-6-6。double x1,x2;double x1,x2;x1=0;x2=cos(x1);x1=0;x2=cos(x1);while(fabs(x2-x1)=1E-6)while(fabs(x2-x1)=1E-6)x1=x2;x1=x2;x2=cos(x1);x2=co

41、s(x1);printf(x=%fn,x2);printf(x=%fn,x2);迭代法求根的步骤为:迭代法求根的步骤为:迭代法求根的步骤为:迭代法求根的步骤为:(1)(1)令令令令x x1 1=0,x=0,x2 2=cosx=cosx1 1;(2)(2)如果如果如果如果|x|x2 2-x-x1 1|=10|=10-6-6,执行,执行,执行,执行x x1 1=x=x2 2,并重复执行步骤,并重复执行步骤,并重复执行步骤,并重复执行步骤(1)(1);否;否;否;否则执行步骤则执行步骤则执行步骤则执行步骤(3)(3)。(3)(3)计算结束,输出结果。计算结束,输出结果。计算结束,输出结果。计算结束,

42、输出结果。EG222.CEG222.C例例例例5.13 5.13 计算计算计算计算FibonacciFibonacci数列,直到某项大于数列,直到某项大于数列,直到某项大于数列,直到某项大于10001000为止,并输为止,并输为止,并输为止,并输出该项的值。出该项的值。出该项的值。出该项的值。int f1,f2,f;int f1,f2,f;dodo f=f1+f2;f=f1+f2;f1=f2;f1=f2;f2=f;f2=f;while(f=1000);while(f=1000);printf(%dn,f);printf(%dn,f);递推的步骤为:递推的步骤为:递推的步骤为:递推的步骤为:(1

43、)(1)令令令令f1=1,f2=1;f1=1,f2=1;(2)(2)f=f1+f2,f1=f2,f2=f;f=f1+f2,f1=f2,f2=f;(3)(3)如果如果如果如果f1000f1000,重复执行步骤,重复执行步骤,重复执行步骤,重复执行步骤(2)(2);否则执行步骤;否则执行步骤;否则执行步骤;否则执行步骤(4)(4)。(4)(4)计算结束,输出计算结束,输出计算结束,输出计算结束,输出f f的值。的值。的值。的值。EG222.CEG222.C例例例例5.14 5.14 计算计算计算计算s=1+2+3+is=1+2+3+i,直到累加和大于,直到累加和大于,直到累加和大于,直到累加和大于

44、50005000为止,并输为止,并输为止,并输为止,并输出出出出s s和和和和i i的值。的值。的值。的值。int i,s;int i,s;i=1;i=1;s=0;s=0;while(s=5000)while(s5000)if(s5000)break;break;printf(s=%d,i=%dn,s,i);printf(s=%d,i=%dn,s,i);EG222.CEG222.C例例例例5.15 5.15 用迭代法求某数用迭代法求某数用迭代法求某数用迭代法求某数a a的平方根。求平方根的迭代公式为:的平方根。求平方根的迭代公式为:的平方根。求平方根的迭代公式为:的平方根。求平方根的迭代公式为

45、:double a,x0,x1;double a,x0,x1;scanf(%lf,&a);scanf(%lf,&a);x0=a/2;x1=(x0+a/x0)/2;x0=a/2;x1=(x0+a/x0)/2;while(fabs(x0-x1)=1E-6)while(fabs(x0-x1)=1E-6)x0=x1;x0=x1;x1=(x0+a/x0)/2;x1=(x0+a/x0)/2;printf(%lfn,x1);printf(%lfn,x1);迭代法求根的步骤为:迭代法求根的步骤为:迭代法求根的步骤为:迭代法求根的步骤为:(1)(1)x x0 0取一个值为初值,如取一个值为初值,如取一个值为初值

46、,如取一个值为初值,如a/2;a/2;(2)(2)利用迭代公式利用迭代公式利用迭代公式利用迭代公式x1=(x0+a/x0)/2x1=(x0+a/x0)/2,求出,求出,求出,求出x1;x1;(3)(3)令令令令x0=x1x0=x1,再利用迭代公式求,再利用迭代公式求,再利用迭代公式求,再利用迭代公式求出一个新的出一个新的出一个新的出一个新的x1;x1;(4)(4)如果如果如果如果|x|x0 0-x-x1 1|10|10-6-6,则,则,则,则x x1 1就是所就是所就是所就是所求的平方根,执行步骤求的平方根,执行步骤求的平方根,执行步骤求的平方根,执行步骤(5)(5),否,否,否,否则重复行步骤则重复行步骤则重复行步骤则重复行步骤(3)(3)。(5)(5)计算结束,输出结果。计算结束,输出结果。计算结束,输出结果。计算结束,输出结果。T h e E n d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com