C语言程序设计循环课件_第1页
C语言程序设计循环课件_第2页
C语言程序设计循环课件_第3页
C语言程序设计循环课件_第4页
C语言程序设计循环课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计循环结构第1页,共42页。while循环结构while (条件表达式)循环条件循环体含义:只要表达式结果为真,就执行循环体内的语句。 执行完循环体的语句后,再算一次表达式的值,只要结果为真,就继续执行循环体语句。直至条件不满足为止。if (条件表达式)含义:只要表达式结果为真,就执行复合语句体。 执行完后结束if语句,执行后面的内容。可能执行很多次只执行一次如何设定循环条件是保证while结构正常工作的关键。第2页,共42页。#include main ( ) int i, sum; sum=0; i=1; while (i=100) sum=sum+i; i=i+1; prin

2、tf (Sum=%d,sum);例:求1100之和,即循环变量设定循环条件循环体开始定义变量i,sumi=1sum=0sum=sum+1用printf输出sum结束i100?YNi+循环结构 条件表达式中的变量在循环体前设定初值,并在循环体内发生改变,是循环有始有终的前提。第3页,共42页。注意事项:如果循环体内只有一条语句,则可以不用大括号 ;语法上并没有要求一定要存在循环初始条件的设定,也没有要求循环条件中的变量必须在循环体内改变,但逻辑上要求有,否则将成为无效循环或死循环。循环变量在循环体内的改变应该有使循环条件不满足的趋势。第4页,共42页。例:读程序,说明程序的功能。#include

3、 main ( )int k, s,n ;scanf(%d,&n);s = 1; k = 1;while ( k = n/2 ) s=s*(2*k-1);k+;printf ( %dn,s);n以内所以奇数的乘积#include main ( )int k, s,n1,n2 ;scanf(%d,%d,&n1,&n2);s = 0; i = n1;while ( i=n2 ) if (i%2=0) s=s+i;i+;printf ( %dn,s);n1至n2间所有偶数之和第5页,共42页。例:计算两个数的最大公约数和最小公倍数。#include main( )int i, max,min;sca

4、nf(%d,%d,&max,&min);i=min;while (i0)if (max%i=0 & min%i=0) break;i-;printf(%d和%d的最大公约数是:%dn,max,min,i);i=1;while( 1 )if (min*i%max=0) break;i+;printf(“%d和%d的最小公倍数是:%dn,max,min,min*i);分析:用试验的方法计算最大公约数:用1min分别除max和min,看其余数是否同时为零;计算最小公倍数:用1?分别乘以max和min,看其乘积是否相等。问题:计算最大公约数时如何设计循环的初始值和循环条件?计算最小公倍数时如何设定循环

5、条件?第6页,共42页。dowhile循环结构do循环体while (条件表达式)含义:执行循环体内的语句,只要表达式结果为真,就反复执行,直到条件不满足为止。比较:1. dowhile循环至少执行一次循环体。2. while 可能一次也不执行循环体。 3. 两者之间可以通过初始条件的设定相互转化。while (条件表达式) 循环体第7页,共42页。例:判断某个数是否是质数。方法:根据定义,一个数如果只能被1和自身整除,则为质数。#include main( )int i,num;i=2;scanf(%d,&num);do if (num%i=0) break;i+; while(inum);

6、 if (inum) printf(Its not a prime number!);else printf(Its a prime number!);开始输入数字numi=2不是质数结束inumNYnum能被i整除i+YNinumNY是质数第8页,共42页。例:找出所有的水仙花数。水仙花数:153=13+53+33分析:穷举搜索法对每个可能的数字进行分解和计算,看其是否满足水仙花数的条件。搜索范围:100999开始i=100分解i结束i1000YY是水仙花?输出NN#include int main( )int n1,n2,n3,i;i=100;do n1=i/100;n2=(i-n1*10

7、0)/10;n3=i-i/10*10;if(n1*n1*n1+n2*n2*n2+n3*n3*n3=i) printf (%d=%d+%d+%dn,i,n1,n2,n3);i+;while (i1000);第9页,共42页。for 循环结构for (初值表达式; 循环条件; 增量表达式)循环体含义:计算初值表达式,作为循环变量的初始值设定;循环条件是否满足?若满足转向步骤3,否则转向步骤6;执行循环体;计算增量表达式,使循环变量变化,以趋于不满足循环条件;执行步骤2;结束循环,执行后面的语句。初值表达式;while (循环条件)增量表达式;相当于第10页,共42页。例:计算#include ma

8、in( )int i,n,sign;float e,pi;scanf(%d,&n);pi=0.0;sign=1;for (i=1;in;i=i+1)e=1.0/(2*i-1);pi=pi+sign*e;sign=-sign;printf(pi=%fn,pi*4);第11页,共42页。例:计算Fibonacci数列。Fibonacci数列:1, 1, 2, 3, 5, 8, 13, 21开始输入数列长度:n循环初值:3循环条件:n循环增量:1结束前两个值: f1=1;f2=1;temp=f1+f2;输出 temp值f1=f2;f2=temp;循环体分析:1. 初始值为1,1;2. 后面的数字是前

9、两个数之和。#include main ( )int f1,f2,temp,i,n;scanf(%d,&n);f1=1;f2=1;printf(%d,%d,f1,f2);for(i=3;i=n;i+)temp=f1+f2;printf (,%d,temp);f1=f2;f2=temp;第12页,共42页。for循环的特点同时设定初值、循环条件、循环增量。可以实现while结构和dowhile结构。三种循环可以相互替代。第13页,共42页。作业:P129,6.7P129,6.8第14页,共42页。for 循环的不同形式标准for循环:for ( 初值表达式; 条件表达式; 增量表达式 )省略初值

10、表达式:主要用于无初始值设定或复杂初始化的情况。for ( ; 条件表达式; 增量表达式 )省略条件表达式:在循环体内控制结束条件,主要用于多条件情况。for (初值表达式 ; ; 增量表达式 )省略增量表达式:主要用于不确定循环增量的情况。for (初值表达式 ; 条件表达式 ; )以上各种省略情况可以组合出现。例如:for (初值表达式 ; ; )for (; 条件表达式 ; )for ( ; ; )第15页,共42页。不同类型for循环应用举例省略增量表达式:for (i=1;i0) i=i+2; else i=i+1; 省略条件表达式:for (i=1; ; i+) if (x0) b

11、reak; if (m0 break; 省略初值表达式:f1=1; f2=1;for ( ; f2100;) 注意:for循环应用很灵活,是否需要省略某个表达式,完全根据题目的要求和解题的思路确定,没有硬性规定。省略前两个表达式的时候,分号不能省略。第16页,共42页。例:找出大于300的最小的水仙花数。水仙花数:153=13+53+33#include int main( )int n1,n2,n3,i;for ( ) n1=i/100;n2=(i-n1*100)/10;n3=i-i/10*10;if(n1*n1*n1+n2*n2*n2+n3*n3*n3=i) printf (%d=%d+%

12、d+%dn,i,n1,n2,n3);break;分析:循环初始值i=300;循环终值?结束条件?循环增量?i=300; ; i+第17页,共42页。while ( )while ( )do ( )while ( ) while ( )while ( )for ( )for ( )while ( )for ( )do while ( )dofor ( ) while ( )循环的嵌套一个循环体内包含另一个完整的循环,称为循环的嵌套。第18页,共42页。循环的嵌套说明:1. 三种不同类型的循环可以任意嵌套;2.循环嵌套必须层次分明,不允许交叉嵌套。3. 循环嵌套的层数没有限制;4. 为保证层次分明

13、,建议按标准格式书写程序。for ( )while ( )for ( )第19页,共42页。多重循环的执行次数sum=0;for (i=1;i100;i+) for (j=1;j50;j+) sum=sum+1; sum=0;for (i=1;i100;i+) for (j=1;ji;j+) sum=sum+1; sum=0;for (i=1;i100;i+) for (j=1;j500) break;循环执行次数:99*49=4851循环执行次数:0+1+2+3+98=4851循环执行次数:难以确定第20页,共42页。#include main ( )int col,line,num;sca

14、nf(%d,&num);for (line=1;line=num;line+) for (col=1;col=num-line;col+ )printf( );for (col=1;col=2*line-1;col+)printf(*);printf(n);例:打印三角形*分析:屏幕显示原则:只能在当前光标位置显示。光标不能向左回退,不能向上回退。逐行打印,每行打印若干空格和若干星号。打印若干行。计算: 行数:键盘输入n。 每行空格数:132231 每行星号数:112335 回车,右边的空格不考虑。y=n-行号y=行号*2-1作业:书上P130, 6.14第21页,共42页。例题:用二分法求方

15、程的根。方程:r1r2xyy10r*=(r2+r1)/2y*0r*=(r2+r1)/2y*0第22页,共42页。#include #include int main( )float r1,r2,rt,f1,f2,ft;do printf (Enter x1 & x2:);scanf(%f,%f,&r1,&r2);f1=2*r1*r1*r1-4*r1*r1+3*r1-6;f2=2*r2*r2*r2-4*r2*r2+3*r2-6;while (f1*f20);do f1=2*r1*r1*r1-4*r1*r1+3*r1-6;f2=2*r2*r2*r2-4*r2*r2+3*r2-6;rt=(r1+r2

16、)/2;ft=2*rt*rt*rt-4*rt*rt+3*rt-6;if (ft*f11.0e-5);printf(x=%6.2fn,rt);无限循环,直至输入的猜测区间内有根存在。do rt=(r1+r2)/2;ft=2*rt*rt*rt-4*rt*rt+3*rt-6;if (ft*f11.0e-5);第23页,共42页。continue 和break语句continue无条件结束本次循环,跳到循环起始语句,开始下一次循环。break无条件跳出循环,执行循环后面的语句。for ( )continue;while ( )break;注意:break语句只能跳出它所在的那层循环,不存在跳出所有循环

17、的break。第24页,共42页。例:用continue语句改写寻找水仙花数的程序。#include int main( )int n1,n2,n3,i,t;i=100;do n1=i/100;n2=(i-n1*100)/10;n3=i-i/10*10;t=n1*n1*n1+n2*n2*n2+n3*n3*n3; if (t =i) printf (%d=%d+%d+%dn,i,n1,n2,n3);i+;while (i1000);if (t !=i) i+; continue;printf ( );第25页,共42页。#include int main( )int n1,n2,n3,i,t;i

18、=999;do n1=i/100;n2=(i-n1*100)/10;n3=i-i/10*10;t=n1*n1*n1+n2*n2*n2+n3*n3*n3; if (t =i) printf (%d=%d+%d+%dn,i,n1,n2,n3);i-;while (i100);例:找出最大的水仙花数。if (t =i) printf ();break;i-;第26页,共42页。程序的调试方法与技巧构建( build )编译系统进行基本的语法检查,并报告error和warning,只有消除语法错误的程序才可能运行。断点设置在程序的某行设置断点后,程序运行到该行时会暂停,可以查看变量的当前值,也可以修改

19、变量值。没有语法错误的程序不一定能正常执行,也不一定能实现正确的功能,可能存在大量的逻辑错误,软件调试工作占到软件编制工作的80%。VC开发环境提供了“断点设置”和“单步跟踪”功能,为软件的调试提供了方便的工具。第27页,共42页。在光标所在行设置断点。可以根据需要设置多个断点。断点标记第28页,共42页。在调试状态下执行程序第29页,共42页。弹出执行窗口,等待键入数据第30页,共42页。箭头表明当前程序暂停的位置(即将要执行的语句)。变量(Variables)窗口中显示程序用到的变量及其当前值。第31页,共42页。再次按F5,程序执行到新的断点,并再次暂停。变量值发生了变化,并用红色显著地标识出来。第32页,共42页。再次按F5,程序随着循环的执行再次停到了第一个断点的位置。变量窗口不但可以显示变量值,还可以动态地修改。第33页,共42页。当不再需要断点时,可随时将光标放在断点行,按F9取消断点。当找到错误的原因时,可按shift+F5中断程序的调试,返回到源程序窗口进行修改。第34页,共42页。程序的调试方法与技巧单步跟踪“单步跟踪”可以逐行执行程序,每执行一条语句后都会暂停,相当于在每条语句上都设置了断点。第35页,共42页。将光标放在欲使程序暂停的地方,在菜单中选中Run to Cursor项,则

温馨提示

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

评论

0/150

提交评论