高级语言程序设计.ppt

上传人:s****8 文档编号:68960296 上传时间:2022-12-30 格式:PPT 页数:65 大小:827KB
返回 下载 相关 举报
高级语言程序设计.ppt_第1页
第1页 / 共65页
高级语言程序设计.ppt_第2页
第2页 / 共65页
点击查看更多>>
资源描述

《高级语言程序设计.ppt》由会员分享,可在线阅读,更多相关《高级语言程序设计.ppt(65页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、高级语言程序设计第三章第三章 算法基础与程序控制结构算法基础与程序控制结构 莆田学院现代教育技术中心莆田学院现代教育技术中心20042004年年年年3 3月月月月 制作制作制作制作本章主要内容v程序设计方法简述程序设计方法简述v算法与流程图算法与流程图 算法的两种表示法算法的两种表示法 两种流程图两种流程图 三种基本结构三种基本结构v选择结构程序设计选择结构程序设计 if else 语句语句 switch语句语句v循环结构程序设计循环结构程序设计 四种循环语句四种循环语句v常用算法常用算法 枚举法(穷举法)枚举法(穷举法)归纳法(递推法)归纳法(递推法)课外阅读材料程式设计与流程图(请上网下载

2、)莆田学院现代教育技术中心 2004年3月 一、程序设计方法简述一、程序设计方法简述 1 1、计算机处理问题的过程、计算机处理问题的过程【例一】让某学生解方程例一】让某学生解方程 axax2 2+bx+c=0+bx+c=0 求解过程:求解过程:分析问题 这是一个一元二次方程(代数问题,须中学代数知识)确定处理方案 用求根公式确定解题步骤 确定a、b、c的值 求出b2-4ac的值 如果 b2-4ac0(双实根)X1=X2=如果 b2-4ac=0(单实根)X1=X2=如果 b2-4ac=60)printf(“Passed!”);else printf(“Failed”);莆田学院现代教育技术中心莆

3、田学院现代教育技术中心 2004 2004年年3 3月月二、算法与流程图二、算法与流程图 2、传统流程图 P19P19特点:特点:直观形象;直观形象;使用流线。使用流线。缺点:缺点:占面积大,使用流线占面积大,使用流线任意转移,易出现任意转移,易出现“乱麻乱麻”现象,造成编现象,造成编程与阅读程序困难。程与阅读程序困难。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月二、算法与流程图二、算法与流程图3、N-S结构化流程图 P26-27P26-27 7777年美学者年美学者I.NassiI.Nassi和和B.ScheidermanB.Scheiderman提出。

4、提出。特点特点 取消流线取消流线 不允许流程任意转移,只能从上而下顺序执行不允许流程任意转移,只能从上而下顺序执行 规定三种基本结构的流程图单元,由这些基本结构象搭积木似的组成各种算规定三种基本结构的流程图单元,由这些基本结构象搭积木似的组成各种算法(结构化设计)。法(结构化设计)。优点优点 算法清晰,流程不会无规律乱转移。算法清晰,流程不会无规律乱转移。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月二、算法与流程图二、算法与流程图4 4、三种基本结构、三种基本结构 P23-26P23-26通常情况下,程序中的语句是以所编写的顺序一句接一句通常情况下,程序中

5、的语句是以所编写的顺序一句接一句地执行,这种执行方法称为地执行,这种执行方法称为“顺序执行顺序执行”。许多。许多C C语句能够语句能够让程序员指定不按编写顺序执行下一条执行语句,这种执让程序员指定不按编写顺序执行下一条执行语句,这种执行方法称为行方法称为“控制转移控制转移”。BohmBohm和和JacopiniJacopini的研究证实,所有的程序都能够只用三种的研究证实,所有的程序都能够只用三种控制结构编写,即控制结构编写,即 顺序结构顺序结构 选择结构(选择结构(selection structureselection structure)循环结构(循环结构(repetition stru

6、cturerepetition structure)顺序结构是顺序结构是C C语言的基本结构,除非指示转移,否则计算机语言的基本结构,除非指示转移,否则计算机自动以语句编写的顺序一句一句地执行自动以语句编写的顺序一句一句地执行C C语句。语句。任何任何C C语言程序都是由七种控制结构(顺序结构、三种选择语言程序都是由七种控制结构(顺序结构、三种选择结构和三种循环结构)构成的。结构和三种循环结构)构成的。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月二、算法与流程图二、算法与流程图4 4、三种基本结构、三种基本结构 P23-26P23-26顺序结构顺序结构 A

7、 A块、块、B B块顺序执行(每块代表一个或一组操作)块顺序执行(每块代表一个或一组操作)莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月二、算法与流程图二、算法与流程图4 4、三种基本结构、三种基本结构 P23-26P23-26选择结构选择结构 条件条件p p成立时执行成立时执行a a块块(否否则执行则执行b b块块)uuif if 选择结构选择结构选择结构选择结构 条件为真时条件为真时执行某个指定的操作,条执行某个指定的操作,条件为假时跳过该操作(单件为假时跳过该操作(单路选择)路选择)uuififififelseelseelseelse选择结构选择结构选

8、择结构选择结构 条件条件为真时执行某个指定的操为真时执行某个指定的操作作,为假时执行另一个指为假时执行另一个指定的操作(双路选择)定的操作(双路选择)uuswitchswitchswitchswitch选择结构选择结构选择结构选择结构 根据表根据表达式的值执行众多不同操达式的值执行众多不同操作中的某个指定的操作作中的某个指定的操作(多路选择)(多路选择)莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月二、算法与流程图二、算法与流程图4 4、三种基本结构、三种基本结构 P23-26P23-26循环结构循环结构 分分当型当型和和直到型直到型两类。两类。当型当型 先

9、判断,只要条先判断,只要条件为真就反复执行件为真就反复执行A A块,块,为假则结束循环。为假则结束循环。直到型直到型 先执行先执行A A块,再块,再判断条件是否为真,为判断条件是否为真,为真则继续执行循环体,真则继续执行循环体,为假则结束循环。为假则结束循环。C C语言提供了三种循环语言提供了三种循环结构,即结构,即whilewhile循环结构,循环结构,dodowhilewhile循环结构和循环结构和forfor循环结构。循环结构。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月 三、选择结构程序设计三、选择结构程序设计1、if语句 P91P91 三种形式:

10、三种形式:if if(表达式)(表达式)语句;语句;(图(图5.5a5.5a)if if(表达式)(表达式)语句语句1 1;else else 语句语句2 2;(图(图5.5b5.5b)if if(表达式(表达式1 1)语句语句1 1;(图(图5.65.6)else ifelse if(表达式(表达式2 2)语句语句2 2;else ifelse if(表达式(表达式n n)语句语句n n;else else 语句语句n+1n+1;e1e1?e2e2:e3e3 是是if if else else 语句在特定情况下的变体。语句在特定情况下的变体。莆田学院现代教育技术中心莆田学院现代教育技术中心

11、2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计1 1、ifif语句语句 示例示例【例一】以下程序的作用是什么?main()char c;printf(“Input:”);scanf(“%c”,&c);if(c=a&c=z)c=c-32;else c=c;printf(“%c”,c);/*将小写字母转换为大写字母*/莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计1 1、ifif语句语句 示例示例【例二】以下程序的执行结果是什么?main()int x=2,y=-1,z=2;if(xy)if(y0

12、);if(x=2)if(1=x0”);y=x-1;莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计2、switch语句 P98P98switch 语句的一般形式:switch(e)case c1:语句组1;case c2:语句组2;case cn:语句组n;default:语句组n+1;/*可缺省*/*e 表达式(整型、字符型或枚举型)*/c1cn 常量(整数、字符、常量表达式如3+4,不含变量或函数)default 不是c1cn的情况(位置不一定在最后)。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 20

13、04年年3 3月月三、选择结构程序设计三、选择结构程序设计2 2、switchswitch语句语句 示例示例main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);case B:printf(“7084n”);case C:printf(“6069n”);case D:printf(“60n”);default:printf(“错误输入n”);输入“c”,求输出结果。结果:6069 60 错误输入?!莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计2 2、

14、switchswitch语句语句 示例示例main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);case B:printf(“7084n”);case C:printf(“6069n”);case D:printf(“60n”);default:printf(“错误输入n”);我的成绩应该是6069!什么!“60”?“错误输入”?怎么会这样?!不好意思,我属于C级!运行结果:6069 60 错误输入 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计2 2

15、、switchswitch语句语句 示例示例解决方法break语句:main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);break;case B:printf(“7084n”);break;case C:printf(“6069n”);break;case D:printf(“60n”);break;default:printf(“错误输入n”);这才差不多!break!运行结果:6069莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计2 2、swit

16、chswitch语句语句 示例示例解决方法break语句:main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);break;case B:printf(“7084n”);break;case C:printf(“6069n”);break;case D:printf(“60n”);break;default:printf(“错误输入n”);讨论讨论讨论讨论switch(s)语句中的s实际上并非真正的条件选择,而只是一种跳转指示(与if语句不同),表示下面应该跳转到什么位置继续执行。而各case实际上只是一个跳转处的标记。当程序

17、跳转到某个case处时,并非只执行此case行的程序组,而是从此处开始一直向下执行各条语句,直到整个switch开关体结束(“”)。如果要使每个case处相当于一种if(s)else的效果,必须在其语句组最后加上break语句。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月三、选择结构程序设计三、选择结构程序设计2 2、switchswitch语句语句 示例示例main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;brea

18、k;case 3:a+;b+;printf(“a=%d,b=%dn”,a,b);说明说明说明说明1、每个case常量表达式的值必须互不相同,否则会出现互相矛盾的结果。2、允许多个case共用一个执行语句。求程序运行结果。结果:a=2,b=1。如果x=2?结果:a=1,b=1 如果x=3?结果:a=1,b=1 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月 三、循环结构程序设计三、循环结构程序设计 循环是在循环条件为真时计算机反复执行的一组循环是在循环条件为真时计算机反复执行的一组指令(循环体)。指令(循环体)。循环控制通常有两种方式:循环控制通常有两种方式:

19、计数控制计数控制事先能够准确知道循环次数时用之事先能够准确知道循环次数时用之 用专门的循环变量来计算循环的次数,循环变量的用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。次数时则终止循环,继续执行循环结构后的语句。标记控制标记控制事先不知道准确的循环次数时用之事先不知道准确的循环次数时用之 由专门的标记变量控制循环是否继续进行。当标记由专门的标记变量控制循环是否继续进行。当标记变量的值达到指定的标记值时,循环终止,继续执行变量的值达到指定的标记值时,循环终止,继续

20、执行循环结构后的语句。循环结构后的语句。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月 四、循环结构程序设计四、循环结构程序设计在在C C语言中可用以下语句构成循环:语言中可用以下语句构成循环:if if goto goto while while do do while while for for 其中其中if if goto goto是通过编程技巧是通过编程技巧(if if语句和语句和gotogoto语句语句组合组合)构成循环功能。而且构成循环功能。而且gotogoto语句将影响程序流程语句将影响程序流程的模块化,使程序可读性变差,所以结构化程序设计的模

21、块化,使程序可读性变差,所以结构化程序设计主张限制主张限制gotogoto语句的使用。语句的使用。其他三种语句是其他三种语句是C C语言提供的循环结构专用语句。语言提供的循环结构专用语句。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月 四、循环结构程序设计四、循环结构程序设计 循环结构两大要素:循环结构两大要素:循环条件循环条件 p p 结束循环的条件表达式结束循环的条件表达式循环体循环体 A A 循环执行的语句或语句组循环执行的语句或语句组设置循环条件要特别注意确定:设置循环条件要特别注意确定:循环变量循环变量的的初值初值循环变量循环变量的的终值终值循环变

22、量循环变量的的变化规律变化规律名词解释无限循环死循环名词解释空循环莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结构程序设计1 1、if if goto goto语句循环结构语句循环结构 P106 P106【例一】main()int n=0,sum=0;loop:sum+=n;+n;if(sum=10000)goto end;sum+=n;+n;goto loop;end:printf(“n=%dn”,n);直到型当 型莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结

23、构程序设计2 2、whilewhile语句循环结构语句循环结构 P107 P107【例三】main()int n=0,sum=0;while (sum=10000)sum+=n;+n;printf(“n=%dn”,n);当 型一般形式一般形式 while(while(条件表达式条件表达式)循环体;循环体;用于构成当型循环:先判断用于构成当型循环:先判断后执行后执行/条件为真继续循环,条件为真继续循环,直到条件为假时结束循环。直到条件为假时结束循环。【注意】条件表达式或循环【注意】条件表达式或循环体内应有改变条件使循环结体内应有改变条件使循环结束的语句,否则可能陷入束的语句,否则可能陷入“死循环

24、死循环”。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结构程序设计3 3、dodowhilewhile语句循环结构语句循环结构 P108 P108【例四】main()int n=0,sum=0;do sum+=n;+n;while (sum0);printf(“n”);/*取得num的个位数*/*输出num的个位数*/*直到num/10为0*/结果:65421将各位数字反序显示出来莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结构程序设计四、循环结构程序设计四、循环

25、结构程序设计4 4、forfor语句循环结构语句循环结构 P110P110一般形式一般形式 for(for(表达式表达式1 1;条件表达式;表达式;条件表达式;表达式3 3)循环语句(组);循环语句(组);用于构成计数型当型循环:先用于构成计数型当型循环:先判断后执行判断后执行/条件为真继续循环,条件为真继续循环,直到条件为假时结束循环。直到条件为假时结束循环。表达式表达式1:1:整个循环中只执行整个循环中只执行1 1次,次,常用来对循环变量设置初值常用来对循环变量设置初值条件表达式(表达式条件表达式(表达式2 2):其值其值为真(非为真(非0 0)时继续执行循环语)时继续执行循环语句(组),

26、否则结束循环句(组),否则结束循环表达式表达式3:3:常用于循环变量值的常用于循环变量值的更新更新(循环体的一部分每次循环循环体的一部分每次循环语句组执行完后执行一次语句组执行完后执行一次)【例六】【例六】求求i=1+2+3+4i=1+2+3+4+99+100+99+100 (i=1(i=1100)100)main()main()int i,s=0;int i,s=0;for(for(i=1;i=100;i+i=1;i50)break;while(a=14);printf(a=%d,y=%dn,a,y);结果:a=16,y=60 变量跟踪 a y 10 0 12 12 14+2 16+12=2

27、8 14+2 16+28=44 14+2 16+44=60变量跟踪分析法莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结构程序设计四、循环结构程序设计四、循环结构程序设计5 5、其他循环控制结构、其他循环控制结构 P114P114break break 结束循环结束循环 在在switchswitch中退出中退出switchswitch结构;结构;在循环中结束循环。在循环中结束循环。continue continue 结束本次循环结束本次循环 循环循环“短路短路”(”(跳过循环体后跳过循环体后面的语句,开始下一轮循环面的语句,开始下

28、一轮循环)。goto goto 跳转跳转 跳到循环体外指定标号处。跳到循环体外指定标号处。【注意】【注意】goto goto 语句只能从循环内向外语句只能从循环内向外跳转跳转 ,反之不可!,反之不可!求以下程序段执行后x和i的值。int i,x;for(i=1,x=1;i=10)break;if(x%2=1)x+=5;continue;x-=3;结果:x的值为10,i的值为6 变量跟踪 i x 1 16 2 63 3 38 4 85 5 510 6 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结构程序设计四、循环结构程序设计四、

29、循环结构程序设计5 5、其他循环控制结构、其他循环控制结构 P114P114break break 结束循环结束循环 在在switchswitch中退出中退出switchswitch结构;结构;在循环中结束循环。在循环中结束循环。continue continue 结束本次循环结束本次循环 循环循环“短路短路”(”(跳过循环体后跳过循环体后面的语句,开始下一轮循环面的语句,开始下一轮循环)。goto goto 跳转跳转 跳到循环体外指定标号处。跳到循环体外指定标号处。【注意】【注意】goto goto 语句只能从循环内向外语句只能从循环内向外跳转跳转 ,反之不可!,反之不可!main()int

30、 i=1;while(i=15)if(+i%3!=2)continue;else printf(%d,i);printf(n);结果:2 5 8 11 14 变量跟踪 i +i%3 输出输出i 12 2 2 23 0 34 1 45 2 5 56 0 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月四、循环结构程序设计四、循环结构程序设计四、循环结构程序设计四、循环结构程序设计5 5、其他循环控制结构、其他循环控制结构 P114P114break break 结束循环结束循环 在在switchswitch中退出中退出switchswitch结构;结构;在循环中

31、结束循环。在循环中结束循环。continue continue 结束本次循环结束本次循环 循环循环“短路短路”(”(跳过循环体后跳过循环体后面的语句,开始下一轮循环面的语句,开始下一轮循环)。goto goto 跳转跳转 跳到循环体外指定标号处。跳到循环体外指定标号处。【注意】【注意】goto goto 语句只能从循环内向外语句只能从循环内向外跳转跳转 ,反之不可!,反之不可!main()int i,k=0;for(i=1;i+)k+;while(ki*i)k+;if(k%3=0)goto loop;loop:printf(%d,%d,i,k);结果:2,3 莆田学院现代教育技术中心莆田学院现

32、代教育技术中心 2004 2004年年3 3月月编程示例 题目题目:编写一个用户密码校验程序。用户根据提示编写一个用户密码校验程序。用户根据提示输入密码,如果密码正确,显示输入密码,如果密码正确,显示“Welcome!”“Welcome!”信息;密码不正确,除提示密码输入错误外,允信息;密码不正确,除提示密码输入错误外,允许再输入密码,如果三次输入均错,显示许再输入密码,如果三次输入均错,显示“你是你是非法用户非法用户”,然后结束程序。,然后结束程序。程序分析(画出传统流程图和程序分析(画出传统流程图和N-SN-S流程图)流程图)密码输入部分分析(画出密码输入部分分析(画出N-SN-S流程图)

33、流程图)现场程序编写与调试现场程序编写与调试程序不足处说明(留给学生解决)程序不足处说明(留给学生解决)莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月密码校验程序流程图莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月密码校验程序N-S流程图莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月五、常用算法五、常用算法1 1、枚举法(穷举法)、枚举法(穷举法)“笨人之法笨人之法”:把所有可能的情况一一测试,筛选出符合把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。条件的各种结果进行输出。

34、【例一】【例一】百元买百鸡百元买百鸡:用一百元钱买一百只鸡。已知公用一百元钱买一百只鸡。已知公鸡鸡5 5元元/只只,母鸡母鸡3 3元元/只只,小鸡小鸡1 1元元/3/3只。只。分析:分析:这是个不定方程这是个不定方程三元一次方程组问题(三个三元一次方程组问题(三个变量,两个方程)变量,两个方程)x xy yz=100z=100 5x5x3y3yz/3=100z/3=100 设公鸡为设公鸡为x x只,母鸡为只,母鸡为y y只,小鸡为只,小鸡为z z只。只。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月百元买百鸡问题分析百元买百鸡问题分析莆田学院现代教育技术中心

35、莆田学院现代教育技术中心 2004 2004年年3 3月月百元买百鸡问题分析百元买百鸡问题分析main()int x,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+)if (x+y+z=100&5*x+3*y+z/3.0=100)printf(cocks=%d,hens=%d,chickens=%dn,x,y,z);结果:x=0,y=25,z=75 x=4,y=18,z=78 x=8,y=11,z=81 x=12,y=4,z=84【讨论 此为“最笨”之法要进行101101101=1030301次(100多万次)运算。莆田学院现代教育

36、技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月百元买百鸡问题分析百元买百鸡问题分析main()int x,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)z=100-x-y;if (5*x+3*y+z/3.0=100)printf(“cocks=%d,hens=%d,chickens=%dn,x,y,z);【讨论】令z=100-x-y 只进行101101=10201 次运算(前者的1%)取x=19,y=33 只进行2034=680 次运算(第1种运算的6.7%)莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例

37、二】例二】雨水淋湿了算术书的一道题,雨水淋湿了算术书的一道题,8 8个数字只个数字只 能看清能看清3 3个,第一个数字虽然看不清,但可看出不个,第一个数字虽然看不清,但可看出不是是1 1。编程求其余数字是什么?。编程求其余数字是什么?(33)2 2=89=89分析分析 设分别用设分别用A A、B B、C C、D D、E E五个变量表示自左到右五五个变量表示自左到右五个未知的数字。其中个未知的数字。其中A A的取值范围为的取值范围为2 29 9,其余取,其余取值范围为值范围为0 09 9。条件表达式即为给定算式。条件表达式即为给定算式。莆田学院现代教育技术中心莆田学院现代教育技术中心 2004

38、2004年年3 3月月main()int A,B,C,D,E;for(A=2;A=9;A+)for(B=0;B=9;B+)for(C=0;C=9;C+)for(D=0;D=9;D+)for(E=0;E=9;E+)if(A*(B*10+3+C)*A*(B*10+3+C)=8009+D*100+E*10)printf(“%2d%2d%2d%2d%2dn”,A,B,C,D,E);结果:3 2 8 6 4【例二】例二】雨水淋湿了算术书的一道题,雨水淋湿了算术书的一道题,8 8个数字只个数字只 能看清能看清3 3个,第一个数字虽然看不清,但可看出不个,第一个数字虽然看不清,但可看出不是是1 1。编程求其

39、余数字是什么?。编程求其余数字是什么?(33)2 2=89=89莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例三】【例三】求求100100200200之间不能被之间不能被3 3整除也不能被整除也不能被7 7整除的数。整除的数。分析:求某区间内符合某一要求的数,可用一个变量“穷举”。所以可用一个独立变量x,取值范围100200。for(x=100;x=200;x+)for(x=100;x=200;x+)if(x%3!=0&x%7!=0)if(x%3!=0&x%7!=0)printf(“x=%dn”,x);printf(“x=%dn”,x);如果是求指定条件

40、的奇数呢?如果是求指定条件的偶数呢?x=101;x=200;x=x+2 x=100;x=200;x=x+2 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月2 2、归纳法(递推法)、归纳法(递推法)“智人之法智人之法”:通过分析归纳,找出从变量旧值出发通过分析归纳,找出从变量旧值出发求新值的规律。求新值的规律。五、常用算法五、常用算法【例一】编程求i=1+2+3+4+99+100 (i=0100)分析 i=0 S0=0(初值)i=1 S1=0+1=S0+1 i=2 S2=1+2=S1+2 i=3 S3=1+2+3=S2+3 i=4 S4=1+2+3+4=S3+

41、4 i=n Sn=1+2+3+4+n=Sn-1+n莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例一】编程求i=1+2+3+4+n (n 100)程序:main()int i,n,s=0;printf(n=);scanf(%d,&n);for(i=1;i=n;i+)s=s+i;printf(Sum=%dn,s);运行结果:n=100Sum=5050如果是i=1+1/2+1/3+1/n 呢?莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月算法类型小结:累加型【累加型】类型诸如 +求其前n项之和的编程题。累加型算法 若设i为循

42、环变量,s为前n项累加之和,则程序的基本结构为:s=0;for(i=1;i=n ;i+)s=s+;莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例二】【例二】编程求编程求1 11/2+1/31/2+1/31/4+1/51/4+1/5 +1/99+1/991/1001/100分母为奇数时,相加分母为奇数时,相加分母为偶数时,相减分母为偶数时,相减法1:从变化规律分析程序:main()int i;float s=0;for(i=1;i=100;i+)if(i%2)s=s+1/i;else s=s-1/i;printf(Sum=%fn,s);运行结果:Sum=1

43、.000000错在哪里?莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例二】【例二】编程求编程求1 11/2+1/31/2+1/31/4+1/51/4+1/5 +1/99+1/991/1001/100法2:这是个累加型算法的编程题程序:#include main();int i;float s=0;for(i=1;i=100;i+)s=s+pow(-1,i+1)/i;printf(Sum=%fn,s);程序:#include main()int i,k=1;float s=0;for(i=1;i=100;i+)s=s+k/i;k=-k;printf(Sum

44、=%fn,s);累加型算法程序基本结构为:s=0;for(i=1;i=n;i+)s=s+;错在哪里?(如何检查程序错误?)运行结果:Sum=0.688172 运行结果:Sum=1.000000 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例三】编程求n!(n由键盘输入)分析 i=0 S0=1=S0 (初值)i=1 S1=01=S01 i=2 S2=12=S12 i=3 S3=123=S23 i=4 S4=1234=S34 i=n Sn=1 234n=Sn-1n莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例三】编程求

45、n!(n由键盘输入)程序:main()int i,n,s=1;printf(n=);scanf(%d,&n);for(i=1;i=n;i+)s=s*i;printf(Sum=%dn,s);运行结果:n=5Sum=120运行结果:n=8Sum=-25216Why?莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月算法类型小结:阶乘型【阶乘型】类型诸如 求其前n项之积的编程题。阶乘型算法 若设i为循环变量,s为前n项相乘之积,则程序的基本结构为:s=1;for(i=1;i=n ;i+)s=s*;莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年

46、3 3月月【例四】【例四】编程求编程求i!=1!+2!+3!i!=1!+2!+3!+n!+n!(n n由键盘输入)由键盘输入)外循环为累加型外循环为累加型内循环为阶乘型内循环为阶乘型法1:从变化规律分析程序:main()int i,j,n;float s,s1;printf(请输入n=);scanf(%d,&n);s=0;for(i=1;i=n;i+)s1=1;for(j=1;j=i;j+)s1=s1*j;s=s+s1;printf(Sum=%.0fn,s);运行结果:n=5Sum=153/*如果n值较大,可改为printf(“Sum=%en”,s);*/莆田学院现代教育技术中心莆田学院现代教

47、育技术中心 2004 2004年年3 3月月【例四】【例四】编程求编程求n!=1!+2!+3!n!=1!+2!+3!+n!+n!(n n由键盘输入)由键盘输入)在同一个循环中在同一个循环中 先阶乘,后累加先阶乘,后累加法2:通过单循环实现程序:main()int i,n;float s,s1;printf(请输入n=);scanf(%d,&n);s=0,s1=1;for(i=1;i=n;i+)s1=s1*i;s=s+s1;printf(Sum=%.0fn,s);运行结果:n=5Sum=153莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例五】【例五】P11

48、6 P116 例例6.76.7兔子繁殖问题(斐波那契数列问题)兔子繁殖问题(斐波那契数列问题)著名意大利数学家斐波那契(著名意大利数学家斐波那契(FibonacciFibonacci)12021202年提出一个有趣的问题。年提出一个有趣的问题。某人想知道一年内一对兔子可以生几对兔子。他筑了一道围墙,把一对某人想知道一年内一对兔子可以生几对兔子。他筑了一道围墙,把一对大兔关在其中。已知每对大兔每个月可以生一对小兔,而每对小兔出生大兔关在其中。已知每对大兔每个月可以生一对小兔,而每对小兔出生后第三个月即可成为后第三个月即可成为“大兔大兔”再生小兔。问一对小兔一年能繁殖几对小再生小兔。问一对小兔一年

49、能繁殖几对小兔?兔?分析:分析:表示大兔,表示大兔,表示小兔表示小兔由分析可以推出,每月新增兔子数Fn=1,1,2,3,5,8,13,21,34,(斐波那契数列)月份n 兔子数Fn 1 F1=1 2 F2=1 3 F3=2=F1+F2 4 F4=3=F2+F3 5 F5=5=F3+F4 n Fn=Fn-1+Fn-2 莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例五】【例五】P116 P116 例例6.76.7兔子繁殖问题(斐波那契数列问题)兔子繁殖问题(斐波那契数列问题)main()int f1=1,f2=1,f,i,s,n;clrscr();print

50、f(请输入月数:);scanf(%d,&n);for(s=2,i=3;i=n;i+)f=f1+f2;s=s+f;f1=f2;f2=f;printf(%d个月的兔子数是%dn,n,s);对照:P116例6.7莆田学院现代教育技术中心莆田学院现代教育技术中心 2004 2004年年3 3月月【例六】编程显示以下图形(共N 行,N 由键盘输入)。*此类题目分析的要点是:通过分析,找出每行空格、*与行号i、列号j及总行数N的关系。其循环结构可用右图表示。分析:(设N=5)第1行 4个空格=5-1 1个“*”=2*行号-1第2行 3个空格=5-2 3个“*”=2*行号-1第3行 2个空格=5-3 5个“

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com