| 
 | 
 
 
发表于 2015-2-25 13:07:44
|
显示全部楼层
 
 
 
没测试,仅供参考 
 
- #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;
 
 - }
 
  复制代码 |   
 
 
 
 |