C程序设计课件:第4章 过程化语句_第1页
C程序设计课件:第4章 过程化语句_第2页
C程序设计课件:第4章 过程化语句_第3页
C程序设计课件:第4章 过程化语句_第4页
C程序设计课件:第4章 过程化语句_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 过程化语句2本章主要内容4.1 while 语句4.2 dowhile语句4.3 for 语句4.4 switch 语句4.5 转向语句4.6 过程应用:求 4.7 过程应用:判明素数作业3熟练使用while循环语句熟练使用dowhile 循环语句熟练使用for循环语句熟练使用switch多重选择语句熟练使用break和continue语句学习目标:44.1 while 语句一般形式: while(表达式) 语句 说明:先判断再执行;while后面的括号和括号中的表达式都必须有。表达式可以是常量或常量表达式。 例: while(5) /跳出循环 可以是复合语句,其中必须含有改变条件表达

2、式值的语句。54.1 while 语句例:求1加到100的和/ ch4_1.cpp#include int main() int i=1,sum=0; while(i101) sum=sum+i; +i; coutsum= sumendl; 64.2 dowhile 语句一般形式:do 语句while (表达式);可以是复合语句,其中必须含有改变条件表达式值的语句执行顺序先执行循环体语句,后判断条件。表达式为 true 时,继续执行循环体注意:该语句后面的分号必须要有!与while 语句的比较:while 语句执行顺序:先判断表达式的值,为true 时,再执行语句do while:先执行再判断

3、语句,至少执行一次循环体74.2 dowhile 语句/* ch4_2.cpp *从键盘得到一个范围为110的数#include int main() int val; do /循环体 cout val; /修改条件 if (val10) cout the number is not between 1 and 10n; while( val10 ); /继续条件 cout you entered a val endl;84.2 dowhile 语句例:求1加到100的和/ch4_3.cpp#include int main() int i=1,sum=0; do sum=sum+i; +i;

4、 while(i101); coutsum= sumendl; 程序1:#includeint main( ) int i, sum=0; cini; while(i=10) sum+=i; i+; coutsum=sumendl;程序2:#includeint main( ) int i, sum=0; cini; do sum+=i; i+; while(i=10); coutsum=sumendl;对比下列程序:例如,输入一个整数,将各位数字反转后输出。#include int main( ) int n, right_digit; cout n;cout The number in r

5、everse order is: ;do right_digit = n % 10;cout right_digit;n /= 10; while (n != 0); coutendl;运行结果:Enter the number: 365The number in reverse order is: 563114.3 for 语句一般形式:for(表达式1;表达式2;表达式3) 语句 可理解为:for(循环变量赋初值;循环条件;循环变量增值) 语句循环前先求解每次执行完循环体后求解非0时执行循环体循环变量赋初值循环条件?语句循环变量增值for语句的下一语句for (循环变量赋初值;循环条件;循

6、环变量增值) 语句真假134.3 for 语句例:求1加到100的和#include int main() int i=1,sum=0; for(;i101;+i) sum=sum+i; coutsum= sumendl; 144.3 for 语句 for(表达式1;表达式2;表达式3) 语句 表达式1可以省略。此时应在for语句之前给循环变量赋初值。若省略表达式1,其后的分号不能省略。例如,求和运算: i=1; for ( ; i 100) break; 等价于: for (i=1;1 ;i+) sum+=i; if (i100) break; / break表示退出循环 164.3 for

7、 语句表达式3可以省略。但此时应在循环体中让循环变量递进变化,以保证循环能正常结束。 例如,求和运算: for (i=1;i101; ) /分号不能省略 sum+=i; i+; 表达式1和表达式3都可以省略。例如,求和运算: i=1; for ( ; i 100) break; 表达式1,表达式2,表达式3都可以为任何表达式 for(i=1,sum=0;i101;+i) /表达式1是逗号表达式 sum+=i; for(i=1,sum=0;i101; sum+=i+); /语句是空语句表达式1可以是循环变量定义。 for(int i=1;i101;+i) sum+=i;例如,输入一个整数,求出它

8、的所有因子。运行结果1:Enter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 运行结果2:Enter a positive integer: 7Number 7 Factors 1 7 #include int main( ) int n, k;cout n;cout Number n Factors ;for (k=1; k = n; k+)if (n % k = 0)cout k ; cout endl;20一般形式switch (表达式) case 常量表达式 1:语句1 case 常量表达式 2:语句2 c

9、ase 常量表达式 n:语句n default : 语句n+1 4.4 switch语句(多分支选择语句)执行顺序以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。每个常量表达式的值不能相同,次序不影响执行结果。可以是多个语句,但不必用 。可以是整型、字符型、枚举型214.4 switch语句(多分支选择语句)利用break语句可以跳出switch语句多个case可以共用一组执行程序段, 例: case 1: case 7: case 9: a=a+b; couta=a; break; case a+p: case 100: max(a,b

10、); break; 即:符合1、7、9的情况,均执行同一段语句;符合a+p和100,均执行同一段语句例如,输入一个06的整数,转换成星期输出。#include int main(void) int day;cin day;switch (day) case 0:cout Sunday endl;break; case 1:cout Monday endl;break; case 2:cout Tuesday endl;break; case 3: cout Wednesday endl;break; case 4:cout Thursday endl;break; case 5:cout Fr

11、iday endl;break; case 6:cout Saturday endl;break; default: cout Day out of range Sunday . Saturday endl;break; /最后一个分支的 break语句可以省略 244.5 转向语句break 语句作用: 中止switch语句的执行,并跳出switch语句 从最近的封闭循环体中跳出,转而执行循环体的下一条语句注意:只能用于switch结构和循环结构中! 254.5 转向语句例如: for( ; ; ) for ( ; ; ) / if(i = 1) break; / a=1; /break调至

12、此处 / 264.5 转向语句continue 语句作用:用在循环结构中,用于结束本次循环注意:并不从循环体中跳出,除非已处于循环结束点 例: for (j=0; j100; +j) a=a+j*j; if(j=50) coutinue; / 如果j等于50就不执行 /下面的语句,直接进行下一轮循环 couta=a; continue与break的区别:284.5 转向语句goto 语句一般形式: goto 语句标号;goto为无条件转向语句,与if语句 一起使用可构成循环 例:求1加到100的和 #include int main() int i=1,sum=0; loop:sum=sum+

13、i; +i; if(i101) goto loop; coutsum= sum; 应该禁用goto语句(不符合结构化原则)29打印数字金字塔 0 40 79 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 . . . . . . 1 2 3 8 9 8 3 2 1 循环结构的嵌套#include#includeint main()int i,j;for(i=1;i=9;i+)coutsetw(40-3*(i-1)1;for(j=2;j=i;j+)coutsetw(3)=1;j-)coutsetw(3)j;coutendl; /end of for /end of main31循

14、环结构的嵌套在屏幕上显示如下图案:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *32循环结构与选择结构相互嵌套例如:读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。分析: 需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。循环控制条件应该是n != 0。由于要判断数的正负并分别进行统计,所以需要在循环内部

15、嵌入选择结构。#includeint main() int i=0, j=0, n; coutn; while( n!=0 ) if(n0) i+=1; if(nn; cout 正整数个数: i 负整数个数: jendl;344.6 过程应用:求 程序设计方法有三个层次:(1)简单的问题求解分析方法(过程化方法)。它适用于简单、孤立的问题求解。一般定义23个函数便可解决。(2)结构化程序设计方法。它适用于一个问题大小适中,能够方便地分解成相对独立的几个功能模块,从而用几个程序文件分别描述并调试实现之。(3)面向对象程序设计方法。它面向求解一个用常规方法并不能简单理清头绪的问题。它将问题看作为包

16、含有若干个小对象的大对象,层层分解对象,研究里面的数据和行为。当一个问题分解成不同层次的对象结构时,程序设计的描述也同时完成。这里介绍的是第一种方法。例如,用公式“/4=1-1/3+1/5-1/+”求的近似值,直到最后一项的绝对值小于108为止。分析:(1)的表示用double型。(2)先求/4,然后求。(3)分析数列的通项:数列的第1项是1,第2项是-1/3,第n项是(-1)n-1/(2*n-1)。第n项与第n-1项的关系为符号变一下,分母加2。/* ch4_4.cpp *#include #include #include int main( ) double s=0,x=1; /初始值

17、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 the pi is /输出 setiosflags(ios:fixed) setprecision(8) s endl;运行结果为: the pi is 3.14159263/*/* ch4_5.cpp */*#include #include int main() double s=0,x=1; /初始值 for(int n=1;

18、 fabs(x)1e-8; n+,x*=(-1.0)*(2*n-3)/(2*n-1) s += x; s*=4; /值 cout the pi is s endl; /输出运行结果为: the pi is 3.14159384.7 过程应用:判明素数例:给定一个整数m,判断其是否为素数。分析:m是素数的条件是不能被2,3,m-1整除。/* ch4_6.cpp *#include int main() /输入 long m; cout m;394.7 过程应用:判明素数 /处理 for(int i=2; im; i+) /找m的因数 if(m%i=0) break; /输出 if(m=i) /判断m是否被小于m的数整除 cout m is prime.n; else cout m isnt prime.n;404.7 过程应用:判明素数 改进: 如果m不是素数

温馨提示

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

评论

0/150

提交评论