求编一个程序
做一个C语言的程序:a=18.0,b=270.0,h的值要求输入范围(2个数值,最小值和最大值),但是h的范围是:270.0--306.0,超出的自动舍去。
m=acos((b^2+h^2-a^2)/(2*h*b)),
n=acos((a^2+h^2-b^2)/(2*h*a)),
p=tan(m)的平方/tan(n)的平方;
根据h的值由范围的最小值+0.1梯增,直到最大值。
找出P的最大值,和此时的h值。
请大侠求助。。。
没测试,仅供参考
#include <stdio.h>
#include <math.h>
float m(float h)//求得m的值
{
float a,b;
a = 18.0;
b = 270.0;
return acos( (b*b - a*a + h*h) / (2*h*b));
}
float n(float h) //求得n的值
{
float a,b;
a = 18.0;
b = 270.0;
return acos((a*a - b*b + h*h)/ (2*h*a) );
}
float p(float h) //求得p值
{
return pow(tan(m(h))/tan(n(h)),2);
}
float calc(int floor,int up)//从下限到上限寻找最大值
{
float i,max,maxh;
i = floor;
max = p(i);
maxh = floor;
for(i = floor+0.1;i<up;i+=0.1){
if(p(i)>max){
max = p(i);
maxh = i;
}
}
printf("%f\n%f",max,maxh);
}
int main()
{
int up,floor;
scanf("%f %f",&floor,&up);
//舍弃不符合要求的范围
if(floor<270.0){
floor = 270.0;
}
if(up>306.0){
up = 306;
}
calc(floor,up);
return 0;
} 川本姨夫 发表于 2015-2-25 13:07
没测试,仅供参考
谢谢你了。。。崇拜{:9_228:} simon896 发表于 2015-2-25 13:19
谢谢你了。。。崇拜
小兄弟,要勤于练习 百日维新 发表于 2015-2-25 13:23
小兄弟,要勤于练习
是啊,谢谢了。。。
页:
[1]