蓝桥杯2015-校内选拔-C/C++-A组3题

前言

寒假在备赛蓝桥杯,做了一些题目,如有错误还望指正……

题目


如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?

显然,这个值是介于2和3之间的一个数字。

请把x的值计算到小数后6位(四舍五入),并填写这个小数值。

2.506184

注意:只填写一个小数,不要写任何多余的符号或说明。

 

图1

答案

二分法,2.506184

image

代码

 1 #include<iostream>
 2 #include<cmath>
 3 #include<stdio.h>
 4 using namespace std;
 5 int main()
 6 {
 7      double up=10,down=1,mid=5.5,cnt=0;
 8      while(abs(log(mid)-1/mid)>0.000001){
 9          if(pow(mid,mid)-10>0){
10              up=mid;
11          }else if(pow(mid,mid)-10<0)
12          {
13              down=mid;
14          }
15          printf("%.10f,%.10f,%.10f\n",down,up,pow(mid,mid)-10);
16          cnt++; 
17          mid=(up+down)/2;
18          if(cnt>30)
19          break;
20          
21      } 
22      printf("%.6f",mid);//2.506184
23      return 0;
24 }
posted @ 2020-01-15 17:51  Mem_Ocean  阅读(168)  评论(0)    收藏  举报