C语言教程ch(3)_第1页
C语言教程ch(3)_第2页
C语言教程ch(3)_第3页
C语言教程ch(3)_第4页
C语言教程ch(3)_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、整理课件课本课本129129页习题:页习题:补充题:补充题: 某人新开了一个存款帐户,存入某人新开了一个存款帐户,存入10001000元,年元,年利率是利率是5%5%。假定所有利息收入都于满整年时,。假定所有利息收入都于满整年时,重新存入帐户,请计算并打印在为期重新存入帐户,请计算并打印在为期1010年的时年的时间里,每一年结束时的账面金额。间里,每一年结束时的账面金额。4月月1日日 上机上机3:循环结构程序设计:循环结构程序设计整理课件#include void main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,su

2、m);#include void main() int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(%d,sum);#include void main() int i,sum=0; for(i=1; i=100;i+) sum=sum+i; printf(%d,sum);#include void main() int i,sum=0; i=1;loop: if(i=100) sum=sum+i; i+; goto loop; printf(%d,sum);#include void main() int i,sum=0; i=1

3、;loop: sum=sum+i; i+; if(i=100)goto loop; printf(%d,sum);break;continue;整理课件第六章第六章 循环控制循环控制本章主要内容:本章主要内容: 用用while语句实现循环语句实现循环 用用dowhile语句实现循环语句实现循环 用用for语句实现循环语句实现循环 循环的嵌套循环的嵌套 break语句和语句和continue语句语句 程序举例程序举例整理课件 1一般形式一般形式 : goto 语句标号语句标号 ;6.2 goto语句以及用语句以及用goto语句构造循环语句构造循环2说明说明 : 1) 语句标号定名规则语句标号定名

4、规则与变量名相同与变量名相同 ; 2)不提倡使用)不提倡使用goto语句语句 ;整理课件1形式形式 : while(条件表达式)(条件表达式)循环体语句循环体语句2作用作用 :实现:实现“当型当型”循环循环 当条件满足时,执行语句当条件满足时,执行语句3特点特点 :先判断表达式,后执行语句:先判断表达式,后执行语句 6.3 while语句语句整理课件循环体语句条件表达式循环体语句条件表达式while语句的图形表达真假while的后续语句整理课件例例0:用:用 while 语句实现在屏幕上输出语句实现在屏幕上输出10行行“I love programming!”。分析分析: 设计变量并赋初值设计

5、变量并赋初值 用用int型变量型变量i表示行数,初值为表示行数,初值为1设计循环条件设计循环条件 i10设计循环体设计循环体 printf(“I love programming!n”); i+;用循环语句实现用循环语句实现整理课件#include void main() int i; i=1; while(i=10) printf(“I love programming!n”); i+; 循环变量循环变量赋初值赋初值循环变量循环变量增值增值循环条件循环条件循环体循环体条件表达式条件表达式必须加括号,括必须加括号,括号后不能有;号后不能有;循环体包含多条语循环体包含多条语句时,句时, 不能少不

6、能少整理课件使用说明:使用说明:1) 在在while的循环体中一定要有使循环趋于结束的的循环体中一定要有使循环趋于结束的语句;否则将形成语句;否则将形成死循环死循环;2) 注意循环操作的范围、花括号、分号的使用;注意循环操作的范围、花括号、分号的使用;3) 注意与循环变量赋初值的位置及初值的正确性;注意与循环变量赋初值的位置及初值的正确性;整理课件例例1:用:用 while 语句实现语句实现 1+2+3+100分析分析: 设计变量并赋初值设计变量并赋初值 1. 用用int型变量型变量sum存放和,初值为存放和,初值为0 2. 用用int型变量型变量i表示累加变量,初值为表示累加变量,初值为1设

7、计循环体设计循环体 sum=sum+i; i+;设计循环条件设计循环条件 i100用循环语句实现用循环语句实现整理课件程序流程图:程序流程图:开始初始化 sum=0; i=1;判断:i=100 ?sum=sum+i;i=i+1;输出 sum结束真假真sum=sum+i;i=i+1;判断:i=100 ?整理课件#include void main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循环变量循环变量赋初值赋初值循环变量增值循环变量增值循环条件循环条件循环体循环体整理课件#include void main(

8、 ) int sum=0, i=1; while (i=100) sum=sum+i; i+; printf(sum%dn,sum); 程序程序: i+; sum+=i;i=0;100整理课件例例 2求求1到到100之间的奇数之和,偶数之积之间的奇数之和,偶数之积 。sum=0 mul=1 i=100i%2=010mul=mul*isum=sum+i输出输出sum, muli+;i=1整理课件void main( ) double mul=1; int i=1,sum=0; while (i=100) if (i%2=0) mul=mul*i; else sum=sum+i; i+; prin

9、tf(sum=%dn,sum); printf(mul=%en,mul); 整理课件 void main( ) int i,k1,k2,k; i=1;k1=1;k2=2; while (i=5) k=k1+k2; k1=k2; k2=k; i+; printf(%5d,k); 例例 3读程序练习:读程序练习: 3 5 8 13 21整理课件 1形式:形式:do 语句语句 while(表达式);(表达式);2作用:实现作用:实现“直到型直到型”循环循环3特点:先执行语句,后判断条件,特点:先执行语句,后判断条件, 直到条件不满足为止。直到条件不满足为止。 6.4 do-while语句语句整理课件

10、循环体语句条件表达式循环体语句条件表达式do_while语句的图形表达真假整理课件void main( ) int i,sum=0; i=1; do sum=sum+i; i+; while (i=100); printf(sum=%d,sum); 例例 1用用do_while 语句实现语句实现 1+2+3+100i+;sum+=i;i=0;100整理课件while循环与循环与do_while循环小结循环小结:1. 循环体内必须有使循环趋于终止的条件循环体内必须有使循环趋于终止的条件 while (i=100) sum=sum+i; i+;do sum=sum+i; i+; while (i=

11、100);2. 注意循环初值与循环条件注意循环初值与循环条件i=1;while (i=100) sum=sum+i; i+;i=0;while (i100) i+; sum=sum+i;整理课件3. do_while 循环的循环体至少执行一循环的循环体至少执行一 次次, while循环的循环体可能一次循环的循环体可能一次 也不执行。也不执行。 4. 在循环体至少执行一次的前提下,在循环体至少执行一次的前提下, do_while与与while 循环等价。循环等价。 整理课件例例3: 求求 n! void main( ) int i=1,n; double m=1; scanf(%d,&n); w

12、hile(i=n) m=m*i; i+; printf(%10.0fn,m); printf(“i=%dn”,i); void main( ) int i=1,n; double m=1; scanf(%d,&n); do m=m*i; i+; while(i=n); printf(%10.0fn,m); printf(“i=%dn”,i);整理课件 1. 一般形式:一般形式: for (表达式表达式1; 表达式表达式2; 表达式表达式3) 语句语句 for 的循环体的循环体括号不可少括号不可少分号不可少分号不可少 6.5 for语句语句整理课件求表达式求表达式1判表达式判表达式2语句语句求表

13、达式求表达式3for语句的下一语句的下一个语句个语句 真真,非非0假假,值为值为0for语句执行过程示意for (表达式表达式1; 表达式表达式2; 表达式表达式3) 语句语句表达式表达式1只只执行执行1次;次;表达式表达式3和和内嵌语句执内嵌语句执行多次行多次整理课件通常:通常:表达式表达式1用于对循环控制变量赋初值用于对循环控制变量赋初值 表达式表达式2给出循环控制条件给出循环控制条件; 表达式表达式3使循环控制变量增值;使循环控制变量增值;循环类型循环类型:当型:当型整理课件例例:#include void main()int i, sum=0;for (i=1;i=100;i+) su

14、m=sum+i;printf(“sum=%dn”,sum);整理课件例:例:for(i=0; i=10; i=i+2) printf(“%3d”, i); printf(“ni=%d”, i); 运行结果:运行结果: 0 2 4 6 8 10 i=12例:例:for(i=10; i; i-) printf(“%d,”, i); 运行结果:运行结果:10,9,8,7,6,5,4,3,2,1,整理课件例:例:for(i=1, j=6; ij; i+, j-) printf(“%d*%d=%dn”, i, j, i*j);运行结果:运行结果:1*6=6 2*5=10 3*4=12 例:空循环构成一个

15、延时器例:空循环构成一个延时器 long t; for(t=0; t=83000000; +t) ; 整理课件 3. 说明说明 : 1)表达式)表达式1可省略,但分号不能省可省略,但分号不能省 ;如如 :int i=1,sum=0; for (;i=100;i+) sum=sum+i; 2)若表达式)若表达式2省略,循环条件永远为真省略,循环条件永远为真 ;如如: for(i=1; ;i+)printf(“%d,”,i); 死循环死循环整理课件3)表达式)表达式3也可省略,但应设法保证循环正常结束也可省略,但应设法保证循环正常结束 ;如如 : for (i=1;i=100;) sum=sum+

16、i; i+;4)可只给循环条件)可只给循环条件;i=1; for (;i=100;) sum=sum+i; i+; 整理课件 5)三个表达式都可省)三个表达式都可省 ; for (;) 相当于相当于 while (1) 6)表达式)表达式1和表达式和表达式3可以是逗号表达式可以是逗号表达式 ;如如 : for (i=1,sum=0;i=100;i+) sum=sum+i;整理课件7)表达式)表达式2一般为关系表达式或逻辑表达式,但一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为也可以是数值表达式或字符表达式,只要其值为非零非零就执行循环体就执行循环体 。 如如: fo

17、r (;(c=getchar( )!=n;) printf(%c,c);整理课件注注: 1. 尽量避免用尽量避免用实型变量实型变量控制循环次数。控制循环次数。 2. 在循环体内尽量避免改变循环变量的在循环体内尽量避免改变循环变量的 值值, 否则将难以预知循环次数。否则将难以预知循环次数。void main( ) int i; for(i=1;i=20;i+) i=i+5; printf(%5d,i); printf(n);运行结果为:运行结果为: 6 12 18 24修改了循环变量修改了循环变量整理课件 概念概念 :一个循环体内又包含另一个完整:一个循环体内又包含另一个完整的循环结构的循环结构

18、 。 说明说明 :1)三种循环可以互相嵌套)三种循环可以互相嵌套 2)嵌套可以是多层的)嵌套可以是多层的 6.6 循环的嵌套循环的嵌套 外循环外循环 内循环内循环 外循环外循环 内循环内循环1 内循环内循环2三重循环三重循环整理课件错误的循环交叉形式:错误的循环交叉形式: 例:do-while嵌套 例:do-while、for混合嵌套 do do do for(e1;e2;e3) while(e1); while(e); while(e); 整理课件 * * * * * * * * * * * * * * * * * * * * * * * * *void main( ) int i,j; f

19、or (i=1;i=5;i+) for (j=1;j=5;j+) printf ( *); printf(n); 整理课件#includevoid main( ) int i,j,n; scanf(“%d”,&n); for (i=1;i=n;i+) for (j=1;j=n;j+) printf ( *); printf(n); 整理课件四种循环一般可互相代替四种循环一般可互相代替 3. while和和do-while循环的循环体中应包括使循循环的循环体中应包括使循环趋于结束的语句。环趋于结束的语句。4. 6. while和和for循环是当型循环循环是当型循环, do-while循环是直到型

20、循环循环是直到型循环 6.7 几种循环的比较几种循环的比较整理课件一、一、break语句语句 作用作用 : 1) 从循环体内跳出,即提前结束循环从循环体内跳出,即提前结束循环 ,接着,接着执行循环下面的语句执行循环下面的语句 ; 2) break语句语句只能只能 用于用于循环语句和循环语句和 switch 语语句句 。6.8 break语句和语句和continue语句语句整理课件#include void main( )int r; float area; for(r=1; r100) break; printf(“r=%d,area=%-7.2fn”, r, area); printf(“r

21、=%d”,r);计算半径为计算半径为1 1到到1010的的各圆面积,直到面各圆面积,直到面积大于积大于100100为止。为止。 r= 6 整理课件注意:注意:在循环中使用了在循环中使用了break语句后,循环语句的语句后,循环语句的结束可能有两种:结束可能有两种:正常结束(正常出口);由于循环条件表达正常结束(正常出口);由于循环条件表达式为假式为假1. 非正常结束(异常出口):由非正常结束(异常出口):由break语句引语句引起起整理课件使用说明:使用说明:1) 内循环中的break仅跳出内循环结构; if(e) break;2) 被循环语句嵌套的switch中出现的break,仅跳 出sw

22、itch;switch(e) break; 整理课件二、二、continue 语句语句作用作用 :结束:结束本次本次循环,即跳过循环体中下面尚未循环,即跳过循环体中下面尚未 执行的语句,接着执行下一次是否执行循环的判执行的语句,接着执行下一次是否执行循环的判 定。定。 for (n=100;n=200;n+) if (n%3=0) continue; printf(“%d”,n); if (n%3!=0) printf(“%d”,n);整理课件例:for中用 continue 例:while中用continue for(e1; e2; e3 ) while( e1 ) if (e) conti

23、nue; if(e) continue; 整理课件三、三、break语句和语句和continue语句的区别是语句的区别是 : 1)continue 语句只结束语句只结束本次循环本次循环,不终止整,不终止整个循环的执行;个循环的执行; 2)break 语句是语句是终止整个循环终止整个循环的执行,不再的执行,不再进行条件判断。进行条件判断。 整理课件例:例: 从键盘上任意输入一个正整数,判断其是否为素数。从键盘上任意输入一个正整数,判断其是否为素数。素数:除了素数:除了1和它本身之外没有其他因子的数。换句和它本身之外没有其他因子的数。换句话说只要有因子(除了话说只要有因子(除了1和它本身之外)则该

24、数一定和它本身之外)则该数一定不是素数不是素数判断判断m是否素数:是否素数:(穷举法穷举法) for(i=2;im-1整理课件void main( ) int m,i; scanf(%d,&m); for(i=2;im-1) printf(%d is a prime,m); else printf(%d is not a prime,m); 非正常出口方法方法1整理课件void main( ) int m, i, k=1; scanf(%d,&m); for(i=2;i=m-1;i+) if(m%i=0) k=0; if(k) printf(%d is a prime,m); else pri

25、ntf(%d is not a prime,m);方法方法2标志变量标志变量整理课件例例1用公式求用公式求的近似值,直到最后一项的的近似值,直到最后一项的绝对值小于绝对值小于10-6为止为止 。 /41-1/3+1/5-1/7+算法分析:算法分析: 1. 循环累加循环累加 pi=pi+t; 2. 交替改变符号交替改变符号 s= -s; 3. 每项分子为每项分子为 1 ,分母分母 n=n+2; 6.9 程序举例程序举例整理课件 #include void main( ) int s; float n,t,pi; t=1;pi=0;n=1;s=1; while (fabs(t)=1e-6) pi=

26、pi+t; n=n+2; s=-s; t=s*/n; printf(pi=%10.6fn,4*pi); 程序程序 :整理课件例例 2求求Fibonacci数列:数列:1,1,2,3,5,8,.的前的前40个数个数 。 f1 f2 1 1f1=f1+f2; f2=f2+f1; fi=fi-1+fi-2f12f23.整理课件 void main( ) long int f1,f2; int i; f1=1; f2=1; for (i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if (i%2= =0) printf(n); f1=f1+f2; f2=f2+f1; 整

27、理课件与此解题方法类似的有与此解题方法类似的有:(递推法递推法)1、编写求、编写求 20+21+22+2 3+263 的程序的程序 。2、求、求1!+2!+3!+20!。3、有一个分数序列、有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13求出这个数列的前求出这个数列的前20项之和项之和4、求、求: Sn=a+aa+aaa+aaaaaa,其中其中a是一是一个数字个数字,n表示表示a的位数,的位数,n要求由键盘输入。要求由键盘输入。等等。等等。整理课件void main( ) int i,j,m=0; for(j=100;j=200;j+) for(i=2;ij-1) prin

28、tf(%5d,j); m+; if(m%10=0) printf(n); printf( m=%dn,m);例例3:求:求100200之间的所有素数及素数的个数。之间的所有素数及素数的个数。输出输出10个素数后换行个素数后换行整理课件与此解题方法类似的有与此解题方法类似的有:(穷举法、列举法穷举法、列举法)1、输出所有的水仙花数。、输出所有的水仙花数。2、找出、找出11000之间的全部同构数之间的全部同构数 。一个数等于。一个数等于它的平方数的右端,就称为同构数。如它的平方数的右端,就称为同构数。如 :5的平方的平方是是25,25的平方是的平方是625。3、编程找出、编程找出1000之内的所有

29、完数。一个数恰好等之内的所有完数。一个数恰好等于它的因子之和,这个数就称为于它的因子之和,这个数就称为“完数完数”。例如:。例如:6的因子为的因子为1,2,3,而,而6=1+2+3,因此,因此6是完数。是完数。整理课件例例4:从键盘输入字符直到输入字符:从键盘输入字符直到输入字符#为止,并统计为止,并统计 输入字母的个数。输入字母的个数。特点:特点:循环次数事先无法确定循环次数事先无法确定#include void main( ) char ch; int count=0; do ch=getchar( ); if(ch=A&ch=a&ch=z) count+; while(ch!=# ); printf(”count=%dn”, count); 整理课件例例4:从键盘输入字符直到输入字符:从键盘输入字符直到输入字符#为止,并统计为止,并统计 输入字母的个数。方法输入字母的个数。方法2:#include void main( )

温馨提示

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

评论

0/150

提交评论