概率论与数理统计试卷及答案_第1页
概率论与数理统计试卷及答案_第2页
概率论与数理统计试卷及答案_第3页
概率论与数理统计试卷及答案_第4页
概率论与数理统计试卷及答案_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、 第五章第五章 循环结构循环结构51 while结构的应用结构的应用52 do-while结构的应用结构的应用53 for结构的应用结构的应用54 三种循环的比较及循环嵌套三种循环的比较及循环嵌套55 break语句和语句和continue语句语句56 程序举例程序举例总目录章目录上页下页 第五章第五章 循环结构循环结构5.1 while结构的应用结构的应用5.1.1 while语句语句1.语句的一般格式语句的一般格式 while(表达式)(表达式) 语句语句 ; 循环体循环体2. 说明:说明: while后面括号中的表达式,可以是后面括号中的表达式,可以是C语言中任意语言中任意合法的表达式,

2、用以控制循环体是否执行。合法的表达式,用以控制循环体是否执行。 若循环体由多个语句组成,应用若循环体由多个语句组成,应用“ ”括起来,组括起来,组成复合语句。成复合语句。 总目录章目录上页下页 3.功能功能 首先,计算首先,计算(表达式表达式)的值,的值, 若值为非若值为非0,则反复执行循环体,则反复执行循环体 若值为若值为0 ,则跳出本循环,执行下一句。则跳出本循环,执行下一句。 v while语句的特点是首先判断语句的特点是首先判断(表达式表达式)的值,来决定是否的值,来决定是否执行循环体,执行循环体,v 若该值开始就为若该值开始就为0, 那么循环体一次也不执行。那么循环体一次也不执行。s

3、um=0; i=1; while (i=100) sum=sum+i; i+; 总目录章目录上页下页 5.1.2 while语句举例语句举例例例5.1求求 1+2+3+99+100之和之和总目录章目录上页下页 #include main( ) 分析分析 int i, sum; i sum sum=0; 1 0 i=1; 1 0+1 while (i=100) 2 0+1+2 sum=sum+i; 3 0+1+2+3 i+; 4 0+1+2+3+4 . printf(sum=%d,sum); 99 0+1+2+3+99 100 0+1+2+3+.+99+100 101运行结果运行结果 sum=5

4、050思考:思考:1.当跳出循环执行当跳出循环执行printf语句时,语句时,i的值是多少的值是多少?2.循环次数循环次数?3.若求若求1200之间能被之间能被3整除的数之和,程序如何修改整除的数之和,程序如何修改? 总目录章目录上页下页 4.若将循环体中若将循环体中2句位置颠倒,程序执行结果是否改变句位置颠倒,程序执行结果是否改变?main( )int i,sum; sum=0; i=1; while (i=100) i+; sum=sum+i; printf(sum=%d,sum);总目录章目录上页下页 #include main( )int i, sum; sum=0; i=3; whi

5、le (i200) sum=sum+i; i=i+3; printf( sum=%d, sum); 总目录章目录上页下页 例例5.2求求 数列前数列前20项之和项之和2/1+3/2+5/3+8/5+13/8+.#include main( )int i=1; float a=2, b=1, c, sum=0, term; while (i=20) term=a/b; sum=sum+term; c=a+b; b=a; a=c; i+; printf(sum=%.2fn, sum);总目录章目录上页下页b=a; a=a+b; 对吗? 下列程序有下列程序有5个错个错#include main( )

6、int i; float a=2, b=1, c, sum, term; while (i=20) term=a/b; sum=sum+term; b=a; c=a+b; a=c; printf(sum=%.2fn, sum); 总目录章目录上页下页 总目录章目录上页下页 例例5.3 编一循环程序编一循环程序, 求定期存款的利息求定期存款的利息. 当输入的存款数为当输入的存款数为0时时,结束结束. 利息利息 a=存款数存款数p*年数年数n*利率利率r利率利率:1年期年期 2%2年期年期 2.5%3年期年期 2.8%5年期年期 3%总目录章目录上页下页 总目录章目录上页下页 #include m

7、ain( )float a, p, r; int n; while (1) printf(请输入存款数请输入存款数 年数年数 (存款数输入存款数输入0结束程序结束程序); scanf(%f%d, &p, &n); if (p=0) break; switch(n) case 1: r=0.02; break; case 2: r=0.025; break; case 3: r=0.028; break; case 5: r=0.03; break; a=p*r*n; printf(存款数存款数:%.2f 年数年数:%d 利息利息: %.2fn,p,n,a); 总目录章目录上页下页 改为改为:#

8、include main( )float a, p=1, r; int n; while (p0) printf(请输入存款数请输入存款数 年数年数 (存款数输入存款数输入0结束程序结束程序); scanf(%f%d,&p,&n); switch(n) case 1: r=0.02; break; case 2: r=0.025; break; case 3: r=0.028; break; case 5: r=0.03; break; a=p*r*n; printf(存款数存款数:%.2f 年数年数:%d 利息利息: %.2fn,p,n,a); 总目录章目录上页下页 总目录章目录上页下页 5

9、.2 dowhile 结构的应用结构的应用5.2.1 dowhile语句语句1.语句的一般格式语句的一般格式 do while(表达式)循环体(表达式)循环体 ; 循环体语句循环体语句 ; while (表达式表达式) ; 2.说明说明(1)循环体语句若是多条语句,必须用循环体语句若是多条语句,必须用 括起来构成复合语句。括起来构成复合语句。(2)(表达式表达式)之后必须有分号。之后必须有分号。 总目录章目录上页下页循环体语句循环体语句表达式表达式非非00 (3)dowhile语句构成的循环,语句构成的循环,既使一开始既使一开始(表达式表达式)的值就为的值就为0,循环体语句也执行一次。循环体语

10、句也执行一次。总目录章目录上页下页 5.2.2 dowhile语句举例语句举例例例5.4 求求 1+1/2+1/4+1/50 之和之和 P74#include main( )int i; float sum; sum=1.0; i=2; do sum=sum+1/(float)i ; i+=2 ; while (i=50) ; printf(sum=%f n,sum);总目录章目录上页下页 例例5.5 下面程序的输出结果是下面程序的输出结果是 。 A)k=3 B)k=7 C)k=5 D)k=1#include main ( ) char n=A;int k=0;do switch (n+) c

11、ase A : k+ ; break ; case B : k- ; case C : k+=2 ; break ; default : k/=3 ; k+; while (nD) ;printf (k=%dn ,k) ; 总目录章目录上页下页 总目录章目录上页下页 思考思考:在调试程序时在调试程序时, 需要需要 101-150句不执行句不执行, 而执行而执行151句句?(不用不用goto)100 .101 . .150.151152总目录章目录上页下页 方法方法1100 .While (0)101 . .150. 151152总目录章目录上页下页 方法方法2100 .if (0) 101 .

12、 .150. 151152总目录章目录上页下页 5.3 for 结构的应用结构的应用5.3.1 for语句语句1.语句的一般格式语句的一般格式 for(表达式(表达式1;表达式表达式2;表达式表达式3)循环体语句)循环体语句;2.格式说明格式说明 (1)for后括号中的三个表达式用后括号中的三个表达式用“;”分隔,它们可以是分隔,它们可以是c语语言言 中任意合法的中任意合法的 表达式,主要用于循环控制。表达式,主要用于循环控制。 (2)循环体若由多条语句构成,应用循环体若由多条语句构成,应用“ ”把它们括起来,组成复把它们括起来,组成复合语句。合语句。 总目录章目录上页下页 for(表达式(表

13、达式1;表达式;表达式2;表达式;表达式3)循环体语句)循环体语句; 总目录章目录上页下页求解表达式求解表达式1表达式表达式2循环体语句循环体语句求解表达式求解表达式3for语句的语句的下一个语句下一个语句真真假假 5.3.2 for语句举例语句举例例例5.5求求 10! P77#include main( )int j; long m=1; for (j=1; j=10; j+) m=m*j; printf(m=%ld n , m) ;总目录章目录上页下页 例例5.6 求阶乘求阶乘 n! 1*2*总目录章目录上页下页 例例5.7 求阶乘求阶乘 n! #include main( )int i

14、, n; double t=1; printf(input n?); scanf(%d, &n); for (i=1; i=n; i+) t=t*i; printf(%d!=%.0fn, n , t);总目录章目录上页下页 例例5.8 求求110之间自然数阶乘之和之间自然数阶乘之和#include main( )int i; double t , sum; sum=0; t=1; for (i=1; i=10; i+) t=t*i; sum=sum+t; printf(sum=%.0fn ,sum);总目录章目录上页下页 5.3.3 for语句使用说明语句使用说明 (1)for语句中的语句中的

15、“表达式表达式1”可省略,应在可省略,应在for语句之前为循语句之前为循环变量赋初值,但其后的环变量赋初值,但其后的“;”不能省。如:不能省。如:i=1; for ( ; i=100 ; i+) sum=sum+i; (2)for语句中的语句中的“表达式表达式2”也可省略,即认为其值始终为非零,也可省略,即认为其值始终为非零,循环无终止地进行下去。但其后的循环无终止地进行下去。但其后的“;”不能省。如:不能省。如: for (i=1;i+)sum=sum+1; 相当于:相当于: i=1 while(1) sum=sum+1; i+; 总目录章目录上页下页 (3)“表达式表达式1”和和“表达式表

16、达式3”可以是简单表达式,也可以可以是简单表达式,也可以是逗号表达式。如是逗号表达式。如 for (sum=0 , j=1; j=10; j+) sum=sum+j;总目录章目录上页下页 例例5.9 已知已知 i和和x都是都是int类型,则以下类型,则以下for语句的循环体语句的循环体 a) 最多执行最多执行10次次 b) 最多执行最多执行9次次 c) 无数次无数次 d) 循环体一次也不执行循环体一次也不执行 for (i=0 , x=0 ; i=9&x!=876 ; i+) scanf(“%d”, &x);总目录章目录上页下页a 5.4三种循环的比较三种循环的比较5.4.1 三种循环的比较三

17、种循环的比较(1)for循环和循环和while循环是先判断条件是否为真,再执行循环体,循环是先判断条件是否为真,再执行循环体,因此,可出现循环一次也不执行的情况;因此,可出现循环一次也不执行的情况;do-while语句是先语句是先执行循环体,再判断条件是否为真,因此,循环体至少执行执行循环体,再判断条件是否为真,因此,循环体至少执行一次。一次。#include main( )int i, n; double t=1; printf(input n?); scanf(%d, &n); for (i=2; i=n; i+) t=t*i; printf(%d!=%.0fn, n , t); 总目录章

18、目录上页下页1001kkS#include main( ) int k,s; s=0; k=1; while(k=100) s=s+k; k+; printf(s=%d,s);#include main( ) int k,s; s=0; k=1; do s= s+k; k+; while(k=100); printf(s=%d,s);#include main( ) int k, s; s=0;for(k=1;k=100;k+) s=s+k; printf(s=%d,s); (2) 用用while和和dowhile语句循环时,循环变量的初始语句循环时,循环变量的初始化应在化应在while和和d

19、owhile之前完成。而之前完成。而for语句可以语句可以在表达式在表达式1中实现变量的初始化。中实现变量的初始化。(3) while和和dowhile语句需在循环体中包含使循环趋语句需在循环体中包含使循环趋于结束的语句,如于结束的语句,如i+, 总目录章目录上页下页 (4) while循环一般用于循环次数不定的情况,循环一般用于循环次数不定的情况, for循环一般用于循环次数确定的情况,循环一般用于循环次数确定的情况, do-while循环一般用于至少需要执行一次的情况。循环一般用于至少需要执行一次的情况。例例1 求求 数列前数列前20项之和项之和2/1+3/2+5/3+8/5+13/8+.

20、例例2 编一循环程序编一循环程序, 求定期存款的利息求定期存款的利息. 当输入的存款数为当输入的存款数为0时时,结束结束.例例3 求求 1-1/3+1/5-1/7+1/9-. 直到数列某一项的绝对值小于直到数列某一项的绝对值小于10-6 总目录章目录上页下页 5.4.2 循环的嵌套循环的嵌套 三种循环语句可以互相嵌套。也就是说一个循环三种循环语句可以互相嵌套。也就是说一个循环语句可以作为另一个循环语句的循环体。语句可以作为另一个循环语句的循环体。 P80例例5.10 循环的嵌套举例循环的嵌套举例#include main( ) int i, j; for (i=1; i=9; i+) for

21、(j=i; j=9; j+) printf(%d, j); printf(n ); 总目录章目录上页下页 5.5 break语句和语句和continue语句语句551 break语句语句说明:说明: (1) break语句只能用于语句只能用于switch语句和循环语句中。语句和循环语句中。 (2)当执行循环体遇到当执行循环体遇到break语句时,语句时,立即跳出本层循环立即跳出本层循环,继续执行循环之后的语句。如:继续执行循环之后的语句。如: for() for() break; 总目录章目录上页下页 552 continue语句语句continue语句的一般形式:语句的一般形式: conti

22、nue;说明:说明: (1) continue语句只能出现在循环体中。语句只能出现在循环体中。(2)当执行到当执行到continue语句时,终止当前这轮循环,语句时,终止当前这轮循环,而开始下一轮循环。而开始下一轮循环。 总目录章目录上页下页 例例5.11 把把100200之间的不能被之间的不能被3整除的数输出。整除的数输出。#include main( ) int n; for (n=100; n=200; n+) if (n%3=0) continue; printf(%d , n); 总目录章目录上页下页 5.6程序举例程序举例例例5.12 我国古代数学家在我国古代数学家在中出了一道题,

23、译中出了一道题,译成现代汉语意思是:成现代汉语意思是: 公鸡每只公鸡每只5元,母鸡每只元,母鸡每只3元,小鸡元,小鸡3只只1元。用元。用100元元买买100只鸡,问公鸡、母鸡、小鸡各多少只只鸡,问公鸡、母鸡、小鸡各多少只? 分析:用分析:用“穷举法穷举法”来解决此问题,所谓穷举法就是来解决此问题,所谓穷举法就是将各种组合的可能性全部一一考虑到,对每一种组合将各种组合的可能性全部一一考虑到,对每一种组合都判断是否符合给定条件,并将符合条件的各种组合都判断是否符合给定条件,并将符合条件的各种组合一一输出。一一输出。设有公鸡设有公鸡x只,母鸡只,母鸡y只,小鸡只,小鸡z只,则给定的条件:只,则给定的

24、条件: x+y+z=100 5*x+3*y+z/3=100 总目录章目录上页下页 x y z 5*x+3*y+z/3=100 1 1 98 假假 1 2 97 假假 1 3 96 假假 1 33 66 假假 2 1 97 假假 2 2 96 假假 2 3 95 假假 2 33 65 总目录章目录上页下页 # include main( )int x, y, z; printf(%8s%8s%8sn,公鸡公鸡,母鸡母鸡,小鸡小鸡); for (x=1; x=19; x+) for (y=1; y=33 ; y+) z=100-x-y; if (5*x+3*y+z/3.0=100) printf(

25、%8d%8d%8dn, x, y, z); 总目录章目录上页下页 总目录章目录上页下页 总目录章目录上页下页 总目录章目录上页下页 例例5.13 输入一个百分制的成绩,要求输出成绩及输入一个百分制的成绩,要求输出成绩及相应的等级。输入成绩为相应的等级。输入成绩为-1时,结束循环。时,结束循环。 用用switch语句语句 成绩成绩score 等级等级 temp=score/10 90分以上分以上 A 9 10 8089 B 8 7079 C 7 6069 D 6 59分以下分以下 E 5总目录章目录上页下页 #include main( )int score, temp; char grade

26、;总目录章目录上页下页 while (1) printf(请输入学生成绩请输入学生成绩 -1 结束结束: ); scanf(%d,&score); if (score=-1) break; temp=score/10; switch (temp) case 10: case 9: grade=A; break; case 8: grade=B; break; case 7: grade=C; break; case 6: grade=D; break; case 5: case 4: case 3: case 2: case 1: case 0: grade=E; printf(成绩为成绩为%

27、d,相应等级是相应等级是%cn, score, grade); 与与例例4.9比较比较 输入一个学生成绩,输入一个学生成绩, 当成绩当成绩90时,时, 显示显示“Very Good”; 当当80成绩成绩90时,显示时,显示“Good”; 当当60成绩成绩80时,显示时,显示“Pass”; 当成绩当成绩60时,时, 显示显示“Fail”。 #include main( ) float score; printf(“input score”); scanf(%f , &score); if (score=90) printf(Very Goodn); else if (score=80) prin

28、tf(Goodn); else if(score=60) printf(Passn); else printf(Fail n); 总目录章目录上页下页 例例5.14 计算多项式前计算多项式前n项的值项的值S=a+aa+aaa+aaaa+aaaaa+例如例如 a=3 n=6 s=3+33+333+3333+33333+333333总目录章目录上页下页 计算多项式前计算多项式前n项的值项的值S=a+aa+aaa+aaaa+aaaaa+ a term 3 3 3 33 3 333 3 3333总目录章目录上页下页 #include main( )int a,n,i; double sum, term

29、; printf(input a n ?); scanf(%d%d,&a,&n); sum=0; term=a; for (i=1; i=n; i+) sum=sum+term; term=term*10+a; printf(sum=%.0fn,sum); 上页下页 #include main( )int a ,n ,i; double sum, term; printf(input a n ?); scanf(%d%d,&a,&n); sum=0; term=a; for (i=1; i=n; i+) sum=sum+term; printf(i=%d term=%.0fn, i, term); term=term*10+a; printf(sum=%.0fn,sum);上页下页 #include main( )int a,n,i; double sum, term; printf(input a n ?); scanf(%d%d,

温馨提示

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

评论

0/150

提交评论