计算机二级C++五.ppt_第1页
计算机二级C++五.ppt_第2页
计算机二级C++五.ppt_第3页
计算机二级C++五.ppt_第4页
计算机二级C++五.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 循环结构(一),回顾,关系运算符与逻辑运算符。 关系表达式与逻辑表达式的值。 if else结构(C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句) switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作 条件运算符是 ifelse 语句的另一种表现形式(表达式?表达式2:表达式3),1.x=0;y=2;z=3; switch(x) case 0: switch(y=2) case 1:printf(“*”);break; case 2:pr

2、intf(“%”);break; case 1:switch(z) case 1:printf(“$”); case 2:printf(“*”);break; case 3:printf(“#”); ,2.有如下嵌套的if语句 if(ab) if(ac) k=a; else k=c; else if(bc) k=b; else k=c; 以下选项中与上述if语句等价的语句是 A、k=(ab)?a:b;k=(bc)?b:c; B、k=(ab)?(bc)?a:b):(bc)?b:c); C、k=(ab)?(ac)?a:c):(bc)?b:c); D、k=(ab)?a:b;k=(ac)?a;c,目标

3、,熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别,C 语言中的各种循环,while,do- while,for,需要多次重复执行一个或多个任务的问题考虑使用 循环来解决,while 循环 5-1-2,while (表达式) 语句; ,while 循环的一般语法:,int k=0; while (k 100) printf(“*”); k+; ,计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。,工作原理,示例(输出100个*),whil

4、e 循环,规则1:, while(循环条件) ,循环条件中使用的变量需要经过初始化,while 循环,规则2:,while (index 100) . . . . . . index+; ,while 循环主体中的语句必须修改循环条件的值,否则会形成死循环,while (1),while 循环示例2,编写程序,求,,直到累加和大于或,等于1000为止。,规律:假设用sum表示累加和,i表示底数 1.底数逐次加1。 i+ 2.sum的值随着i的变化而变化。 3.下一个sum的值=当前sum值+当前i*i 4.当sum1000时,不断累加直到累加和大于或等于1000为止。(while(sum100

5、0),#include main() int i ,sum; i=0;sum=0; while(sum10000) sum+=i*i; i+; printf(“n=%d sum=%dn”,i-1,sum); ,i=1,sum=sum+i*i;结果sum=1*1 i=2,sum=sum+i*i结果sum=1*1+2*2 i=3,sum=sum+i*i结果sum=1*1+2*2+3*3 .,例题5.2 用,公式求,的近似值,,直到最后一项的绝对值小于1e-6为止,#include #include main() int s=1; float n=1.0,t=1.0,pi=0; while(fabs

6、(t)=1e-6) pi=pi+t; n+=2.0; s=-s; t=s/n; pi=pi*4; printf(“pi=%fn”,pi); ,do-while 循环,do 语句; while (表达式);,while 循环的一般语法:,int i=0,s=0; do i+;s+=i; while (i10);,它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。,工作原理,示例,例题5.4计算Fibonacci数列,直到某项循环大于1000为止,并输出该项的值,Fibonacci数列:,程序中定义了三个变量,f1,f2,f,给f1赋初值0,f2赋初值1,

7、然后进行以下步骤: (1) f=f1+f2;f1=f2;f2=f; (2) 判断f2是否大于1000,若不大于,重复步骤1,否则执行步骤3 (3) 循环结束,输出f2的值 #include main() int f1=0,f2=1,f; do f=f1+f2;f1=f2;f2=f; while(f=1000); printf(“f=%dn”,f2); ,比较 while 和 do-while循环,while(循环条件) 循环体; ,do 循环体; while( 循环条件);,do-while 循环是先执行后判断,所以,即使开始条件为假,循环体也至少会被执行一次。,while循环是先判断后执行,

8、所以,如果条件为假,则循环体一次也不会被执行。,比较 while 和 do-while 循环的工作原理,总结,循环结构的特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止 while 循环用于在给定条件为真的情况下重复执行一组操作,while循环先判断后执行 do-while循环先执行后判断,因此循环将至少执行一次 在循环中,需要修改循环变量的值以改变循环条件,否则有可能形成死循环,第五章 循环结构(二),目标,熟练使用for循环 理解 break 和 continue 语句的用法 熟练使用嵌套循环,for( 表达式1 ; 表达式2 ; 表达式3 ) 语句; ,for 循环的一般语

9、法:,for 循环,i = 0; j= 1; k= 100;,i = 10; j0,i +; j = j + 1; k-,分号用于分隔 for 循环的 三个表达式,1、计算表达式1的值,通常为循环变量赋初值; 2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次, 否则跳出循环; 3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行; 例如:for(k=0;k10;k+)printf(“*”); 输出结果:*,工作原理,1,2,3,4,for 循环的表达式,for 循环中有三个表达式 for 语句中的各个表达式都可以省略 分号分隔符不能省略,for

10、( ; ; ) ; ,可省略,不能省略,例题5.5编写程序,求1+2+3+100,#include main() int i,sum; sum=0; for(i=1;i=100;i+) sum+=i; printf(“sum=%dn”,sum); ,#include main() int i=1,sum; sum=0; while(i=100) sum+=i; i+; printf(“sum=%dn”,sum); ,思考题:求一个数的阶乘 n!,例如 10!,省略表达式1,int num=0; for(;num = 10 ;num +) printf(%dn,num*2); ,int a=0,

11、n; printf(n 输入n的值: ); scanf(%d,相当于省去了为循环变量赋初值,此时应在for语句之前给循环变量赋初值,省略表达式2,for(num=1;num+) . ,即不判断循环条件,也就是认为表达式2始终为真, 这时应在循环体内设法结束循环,否则将成为死循环,省略表达式3,for(i=1;i=100;) sum=sum+1; i+; ,即省去修改循环变量的值,但此时应在循环体内设法更改循环变量的值,省略三个表达式,for( ; ; ) printf(这将一直进行下去); i = getchar(); if(i = X | i = x) break; ,即不为循环变量赋初值,

12、不设置循环条件(认为表达式2为真值),不修改循环变量的值,无终止地执行循环体。此时应在循环体内设法结束循环,否则会成为死循环,5.4循环结构的嵌套,在一个循环体内有完整的包含了另一个循环,称为循环嵌套。前面介绍的while,do-while,for都可以相互嵌套 例题5.8编写程序,找出2100以内的所有质数 质数定义:只能够被1和它本身整除的数。相当于数i能够被2i-1之间的某个数整除,则这个数就不是质数,main() int k,i,tag; for(i=2;i=100;i+) tag=0; for(k=2;ki;k+) if(i%k=0) tag=1; if(tag=0)printf(“

13、%d,”,i); ,例题 5.7,#include main() int k,i,j; for(i=0;i4;i+)控制行数 for(k=1;k=i;k+) 控制空格的个数 printf( ); for(j=1;j=7-2*i; j+) 控制* printf(*); printf(n); 思考题:输出正三角,* * * *,规律,void main() int i,j,k; for(i=1;i=4;i+) for(j=1;j=4-i;j+) printf( ); for(k=1;k=2*i-1;k+) printf(*); printf(n); ,5.5break 和continue语句,br

14、eak语句可以改变程序的控制流 break语句可以使流程跳出switch语句,用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句 在多层循环中,一个break语句只向外跳一层,break 语句 2-2,跳出 for 循环 for( ; ; ) printf(这将一直进行下去); i = getchar(); if(i = X | i = x) break; ,跳出 while 循环 while(1) if(x = 10) break; ,跳出 do-while 循环 do if (x = 10) break; while (x 15);,for(.) for

15、(.) . break; . ,continue 语句 2-1,continue 语句只能用在循环里 continue 语句的作用是跳过循环体中剩余的语句而执行下一次循环 对于while和do-while循环,continue 语句执行之后的动作是条件判断;对于for循环,随后的动作是变量更新,continue 语句 2-2,while() continue; ,while() break; ,跳出整个循环,继续下一次循环,问题描述: 求整数1100的累加值,但要求跳过所有个位为3的数。,#include void main() int i,sum = 0; for(i=1; i=100;i+

16、) if( i % 10 = 3) continue; sum += i; printf(sum = %d n,sum); ,continue 语句示例,null,0,13,1,循环执行到 i = 13,78,输出: sum = 4570,1,循环执行到 i = 101,101,4570,例题5.10,#include main() int k=0,s=0,i; for(i=1;i5) printf(*i=%d,s=%d,k=%dn,i,s,k); continue; k=k+s; printf(i=%d,s=%d,k=%dn,i,s,k); (思考题:continue换为break),运行结

17、果: i=1,s=1,i=1 i=1,s=3,k=4 *i=3,s=6,k=4 *i=4,s=10,k=4 *i=5,s=15,k=4,void main() int i,j,k; for(i=1;i=4;i+) for(j=1;j=4-i;j+) printf( ); for(k=1;k=2*i-1;k+) printf(*); printf(n); ,例题5.12用迭代法求某数a的平方根。已知求平方根的迭代公式为x1= (x0+a/x0) /2,提示(1)什么是迭代?(用输出的结果作为下次的入) (2)迭代什么时候结束即符合什么条件可以求出a 的平方根(x1 无限接近于 x0,即直到fabs(x0-x1)=1e-6),#include #include void main() float a,x0,x1; printf(input a:); scanf(%f, ,总结 2-1,for 循环与 while 循环类似,属于先判断后执行 for 语句中有三个表达式:表达式1通常用来给循环变量赋初值;表达式2通常是循环条件;表达式3用来更新循环变量的值 for 语句中的各个表达式都可以省略,但要注意分号分隔符不能省略 如果省略表达式2和表达式3需要在循环体内设法结束循环,否则会导致死循环,总结 2-2,break 语句用在循环中时,可以直

温馨提示

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

评论

0/150

提交评论