46506c程序设计基础教程电子课件第03章程序控制_第1页
46506c程序设计基础教程电子课件第03章程序控制_第2页
46506c程序设计基础教程电子课件第03章程序控制_第3页
46506c程序设计基础教程电子课件第03章程序控制_第4页
46506c程序设计基础教程电子课件第03章程序控制_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、第3章 程序控制主讲:李政伟2第3章 程序控制3.1 选择结构3.2 循环结构3.3 跳转结构3.4 应用实例3语句(statement)1. 声明语句int a,b;可出现在函数中的任何行,即位置无限制。2. 执行语句通知计算机完成一定的操作。42. 执行语句(1) 控制语句 if( ) else (条件语句) for( ) (循环语句) while( ) (循环语句) do while( ) (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) switch (多分支选择语句) goto (转向语句) return (从函数返回语句)5(2)

2、 函数和流对象调用语句sort(x,y,z); /sort函数调用coutx100) z=z-100; coutz;语句(statement)83种基本结构顺序结构、选择结构和循环结构是结构化程序设计的3种基本结构。表达式语句YN表达式语句NY语句1语句29编写顺序结构的程序例3.1 求一元二次方程式ax2+bx+c=0的根。a,b,c的值在运行时由键盘输入。#include int main( ) float a,b,c,x1,x2; cinabc; x1=(-b+sqrt(b*b-4*a*c)/(2*a); x2=(-b-sqrt(b*b-4*a*c)/(2*a); coutx1=x1en

3、dl; coutx2=x2endl;4.5 8.8 2.4 x1=-0.327612x2=-1.177943.1 选择结构3.1.1 if语句if语句的两种基本形式:(1)if(表达式) 语句(2)if(表达式) 语句1 else 语句211【例3-2】使用if语句实现考试成绩判定。int main()int score; /考试成绩cout score;if(score=60)cout及格!;elsecout60123.1.2 嵌套的if语句if (表达式1) 语句1else if (表达式2) 语句2else if (表达式3) 语句3else if (表达式m) 语句melse 语句n【

4、例3-2】 使用嵌套if语句实现考试成绩判定。#include using namespace std;int main()int score; /考试成绩coutscore;if(score0)cout=0 & score60else if(score60) cout =60 & score70else if(score70) cout =70 & score80else if(score80) cout =80cout 优秀!;return 0;143.1.3 条件运算符? :的替代条件运算符(? :)一般形式表达式1 ? 表达式2: 表达式3运算规则:先计算表达式1的值,如果表达式1的值

5、为true,那么表达式2被求值;否则表达式3被求值。整个条件表达式的值就是被求值表达式(表达式2或表达式3)的值。double score=60.1;bool isPassed=scor60? false :true;double score=60.1;bool isPassed;if(scorech; ch=(ch=A & ch=Z)?(ch+32):ch; coutchendl; return 0;173.1.4 switch语句一般形式switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 . case 常量表达式n:语句n default:语句n+1 =

6、常量1=常量2=常量n表达式语句组1语句组2语句组n语句组n+1yyynnn18说明(1) 当与某case子句匹配时,执行此case子句,若与所有都不匹配,执行default子句。(2) 每个case表达式的值须互不相同。(3) 各case和default的次序不影响执行结果。(4) 执行某case子句后,流程控制转移到下一个case子句继续执行。(5) 多个case可共用一组执行语句。19【例3-4】根据考试成绩的等级输出百分制分数段。8510070846069 grade;switch(grade) case A : cout80100n;case B : cout7079n;case C

7、 : cout6069n;case D : cout60n;default: coutx1x2x100;sum=x1+x2+x100;coutsum/100;213.2.1 用while语句构成循环当型循环结构形式:while (表达式) 语句作用: 表达式为真(非0)时,执行其内嵌语句。特点:先判断,后执行。表达式语句NY22int main( ) int i=1; double x,s=0; while (ix; s+=x; i+; coutavg=s/100 x; sum=sum+i; i+; while (i=100); cout“avg=sum/100endl;253.2.3 for

8、循环格式:for(表达式1;表达式2;表达式3) 内嵌语句for(循环变量赋初值;循环条件;循环变量增值) 语句执行过程(1) 求解表达式1。(2) 求解表达式2,若为真,则执行内嵌语句,然后执行第(3)步。否则结束循环,转到第(5)步。(3) 求解表达式3。(4) 转回第(2)步骤继续执行。(5) 执行紧接for循环后的其他语句26表达式2内嵌语句NY表达式1表达式33.2.3 for循环格式:for(表达式1;表达式2;表达式3) 内嵌语句27for(循环变量赋初值;循环条件;循环变量增值) 语句 for(i=1,s=0;ix; s+=x;等价于i=1;s=0;do cinx; s+=x;

9、 i+; while(i=100);i=1;s=0;while(ix; s+=x; i+;3.2.3 for循环28(3) for(;) for(;) (4) while( ) do while( ); (5) for(; ) while( ) (6) do for (;) while( );3.2.4 循环嵌套(1) while( ) while( ) (2) do do while( );while( );void main()int i, j;for(i=1; i10; i+) for(j=i; j10; j+) couti“*”j“=”i*j“ ”;coutn;例3.6 打印九九乘法表

10、303.3 跳转结构1. break语句一般格式:break;两种用途:(1)用在switch语句中终止某个case语句。(2)立即结束当前所在层的循环,程序从循环语句后面的第一个语句继续执行。只能用于循环和switch语句内。The break statement terminates only the most tightly enclosing loop or switch statement 31continue语句2. continue语句一般格式continue;作用:结束本次循环,即跳过循环体中剩余语句,接着进行下一次是否执行循环的判定。continue和break的区别:con

11、tinue只结束本次循环,不终止整个循环。break结束当前循环过程。void main() for (int i=1;i=60;i+) if (i % 5!=0) couti“年不回”endl; else couti“年回矿大!”endl; break; cout“我爱矿大!”; 例3.7:何时再回矿大!void main() for (int i=1;i=60;i+) if (i % 5!=0) couti“年不回”endl; else couti“年回矿大!”endl; continue; cout“我爱矿大!”; 例3.8:判断输出结果?3.3.4 goto语句在程序设计时,不推荐用g

12、oto语句。因为goto语句容易造成程序混乱,降低可读性,另外它还阻止某些编译器优化。但由于C+可用作替代汇编语言,所以goto语句还是不可缺少的。如程序中合理使用,还是有益处的。goto语句要求有一个标号。标号是一个后面跟有冒号的有效标识符。标号必须与使用它的goto语句在同一函数中,即不能在不同函数之间跳转。goto语句的一般形式为:goto label;label:其中,label为标号,既可以放在goto语句的前面,也可以放在goto语句的后面。 3.3.5 return语句return语句用来明确地从一个函数中返回。ANSI C+标准将它归入跳转结构,因为它使程序返回到(即跳回到)调

13、用函数的地方继续执行。return带回的数值即为函数的返回值。3.4 应用实例#include int main()int i,b,x;coutx; /C行b=sqrt(x); /计算x的算术平方根 for(i=2;i=b+1) /B行coutx是素数;elsecoutx不是素数;return 0; 【例3-9】判断正整数是否为素数。【例3-10】 求解300400范围内的所有素数。#include int main()int x, b,i,n=0; /n为素数计数器for(x=301; x400; x+=2) /2以外的偶数都不是素数b=sqrt(x); /计算x的算术平方根for(i=2;

14、i=b+1)coutx ;n+;if(n%10=0) /控制每行输出10个数 coutendl; return 0;38例3.11 求F数列前40个数。特点:第1、2个数为1、1。从第3数,每个数是其前面两数之和。即 F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n3)古典数学问题:有一对兔子,从出生后第3个月起每月都生一对兔子。小兔子长到第3个月后每月又生一对兔子。设所有兔子都不死,问每月的兔子总数为多少?编写循环结构的程序39#include int main( ) long f1=1,f2=1; int i; for(i=1;i=20;i+) coutsetw(

15、12)f1setw(12)f2; if(i%2=0) coutendl; f1=f1+f2; f2=f2+f1; 编写循环结构的程序【例3-12】 求圆周率的近似值。#include #include int main()double s = 0, x = 1; /初始化long k = 1;int sign = 1;while (fabs(x)1e-8) /项值在比较前要先求绝对值s+=x; /累加求和k+=2;sign*= -1;x = sign/double(k); /强制转换使x得到浮点数值s*=4; /值cout=sendl;return 0;3.5 小结选择结构包括if和switch语句。在if语句中,else子句为可选项。if和else if可以组成嵌套if语句。switch语句适合处理多分支情况。循环结构包括while

温馨提示

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

评论

0/150

提交评论