资源描述:
《C语言教程第二章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C程序设计(第三版)第2章 程序的灵魂-算法第2章程序的灵魂-算法2.1算法的概念2.2简单算法举例2.3算法的特性2.4怎样表示一个算法2.5结构化程序设计方法一、教学目的与要求:1、了解算法的基本概念与特征2.掌握结构化程序设计的基本概念3、掌握算法的表示方法二、重点和难点:本章的重点和难点是掌握算法的表示方法、常用算法思想。2.1算法的概念算法(algorithm)是对特定问题求解步骤的一种描述。程序=数据结构+算法2.3算法的五个特性有穷性:一个算法必须在执行有穷步之后结束。确定性:算法的每一步必须是确切定
2、义的。对于相同输入必须得到相同结果。可行性:算法的每一步都是能够实现的,即可操作的。输入:算法有零个或多个输入。有输出:算法执行完毕,必须有一个或若干个输出结果程序=数据结构+算法+程序设计方法+语言工具和环境2.4怎样表示一个算法流程图符号名称作用起止框表示程序开始或结束处理框表示一般的操作或运算等输入输出框表示数据的输入或输出判断框判断给定的条件是否成立,决定选择其中一个出口连接点表示程序的连接,圆圈中标有相同的字母或数字说明在程序中是同一点流程线表示程序的去向常用的方法有:自然语言、传统流程图、结构化流程图、
3、伪代码、PAD图等流程图是用一些图框表示各种操作。下表列出了一些常用的流程图符号(由ANSI规定)特点:使用流程线,直观形象。缺点:占面积大,使用流线任意转移,易出现“乱麻”现象,造成编程与阅读困难。三种基本结构Bohra和Jacopini的研究证实,所有的程序都能够只用三种控制结构编写,即顺序结构、选择结构(selectionstructure)和循环结构(repetitionstruction)。顺序结构:A块、B块顺序执行(每块代表一个或一组操作)选择结构:条件p成立时执行A块,否则执行B块循环结构:分当型和
4、直到型两类AB图1APFTBAPFT图2TAP1TFAP2图3直到型先执行A块,再判断条件是否为真,为假则继续执行循环体,直到为真则结束循环.当型先判断,只要条件为真就反复执行A块,为假则结束循环三种基本结构的共同特点:1、只有一个入口2、只有一个出口3、结构内的每一部分都有机会被执行到,也就是说每个框都应当有一条从入口到出口的路径通过它。2.用N-S图表示算法N-S的三种基本逻辑结构N-S图顺序结构分支结构循环结构a块b块条件成立?成立不成立a块b块特点:①取消流程线,不允许流程任意转移,只能从上而下顺序执行②规
5、定三种基本结构的流程图单元,由这些基本结构象搭积木似的组成各种算法(结构化设计)优点:算法清晰,流程不会无规律乱转移当型:条件p成立直到型:a块a块直到p成立2.2简单算法举例通常编程的技术路线是:用伪码或自然语言和自顶向下、逐步求精的方法来制定算法.复杂程序处理部分宜用流程图来表示程序处理的过程,然后再编写相应的C语言程序。经验表明,在计算机上解决问题最困难的部分是制定求解的算法,一旦制定了正确的算法,程序的编写通常是直接明了的。【例一】求解方程ax2+bx+c=0求解过程:①分析问题:这是一个一元二次方程②确定
6、处理方案用求根公式③确定解题步骤确定a、b、c的值,求出b2-4ac的值如果b2-4ac>0(双实根)x1=……x2=……如果b2-4ac=0(单实根)x1=x2=……如果b2-4ac<0(双复根)x1=……x2=……④根据上述步骤计算写出答案,整理、分析结果用自然语言表示的算法输入a、b、c值D=b2-4acD>0?D=0?X1=……X2=……X1=X2……X1=……X2=……输出结果输出结果输出结果开始结束用流程图表示的算法TFTF输入a、b、c值求D=b2-4acYNYNx1=……x2=……输出结果输出结果输
7、出结果D>0?x1=x2=D=0?x1=x2=用N-S流程图表示的算法源程序:#include#includevoidmain(){floata,b,c,D,x1,x2;printf(“pleaseinputa,b,c:”);scanf(“%f%f%f”,&a,&b,&c);D=b*b-4*a*c;if(D>0){x1=(-b+sqrt(D))/(2*a);x2=(-b-sqrt(D))/(2*a);printf(“x1=%.2f,x2=%.2f”,x1,x2);}elseif
8、(D==0){x1=x2=-b/(2*a);printf(“x1=x2=%.2f”,x1);}else{printf(“x1=%.2f+i%.2f”,-b/(2*a),sqrt(-D)/(2*a));printf(“x1=%.2f-i%.2f”,-b/(2*a),sqrt(-D)/(2*a));}}用C语言实现算法【例二】有50个学生,要求将他们