再上一篇:7 .2 .2 void 类型的函数
上一篇:第 8 章 常 用 算 法
主页
下一篇:8 .3 排序算法
再下一篇:8 .3 .1 冒泡法
文章列表

8 .2 使用解析法设计算法

《程序设计基础》(基于C语言讲解) 石光华 编著 —北京: 清华大学出版社

对于数学问题,通常可以采用解析的方法来设计算法。在设计算法时,通过解析,将数学公式经过适当的转换变成容易用程序语句表达的格式,即可编写出程序。

【例8-4】 设计程序,根据输入的三条边的长度,计算三角形面积。

#include < stdio .h>

#include

void main()

{

int a=0,b=0,c=0;

float squr=0 .0,t=0 .0;

printf(″Input a,b,c:\n″);

scanf(″%d%d%d″,&a,&b,&c);

if(a>0 && b>0 && c>0 && a<(b+c) && b<(a+c) && c<(a+b))

/ *能构成一个三角形*/

{

t= (a+b+c)/ 2 .0; / *计算面积*/

squr=sqrt(t*(t - a) * (t - b) *(t - c));

printf(″S= % .3f\n″,squr); / *输出三角形的面积*/

}

else

printf(″Not an triangle .\n″); / *不能构成三角形*/

}

【例8-5】 求解一元二次方程的根的算法。

- b± b2 - 4ac

试题分析 我们知道,一元二次方程 ax2 + bx+ c=0的根 x= ,可以

2a

设置一个变量 tmp代表 b2 - 4ac,x1 代表第1 个根,x2 代表第2个根,则可以写出程序如下。

114 程序设计基础

#include < stdio .h>

#include

void main()

{

float a=0,b=0,c=0,x1=0,x2=0;

float tmp=0 .0;

printf(″Please input a,b,c:\n″);

scanf(″%f%f%f″,&a,&b,&c);

tmp=b*b- 4*a*c;

if(tmp<0)

printf(″Noreal root .\n″);

else if(tmp= =0)

{

x1= - b/ (2*a);

x2=x1;

printf(″x1=x2 is % .4f .\n″,x1);

}

else

{

tmp=sqrt(tmp);

x1=( - b+ tmp)/ (2*a);

x2=( - b- tmp)/ (2*a);

printf(″x1= % .4f,x2= % .4f .\n″,x1,x2);

}

}