求立方根(C/C++ 注释详解)

求立方根(C/C++ 注释详解)


题目

        输入一个整数n,计算它的立方根(结果保留三位小数)

        数据范围(-10000 <= n <= 10000)        

        输入格式:

        8

        输出格式:

        2.000

       

        输入格式:

        -8

        输出格式:

        -2.000


一、思路一(pow函数)

1.关于pow函数

                众所周知,pow函数是C语言中<math.h>库中的数学函数。

            作用:求x的y次方

            格式:pow(x, y)

            注意:这里底数x不能为负数 

                由于pow函数中底数x不能为负数,则这个思路是不能解这个题的。但可以求正数的立方根,n的立方根也就是n的1/3次方-----pow(n, 1/3)。

  2.代码实现 

//只能求正数的立方根
#include<stdio.h>
#include<math.h>

int n;  //整数n
double ans;  //存答案的变量

int main()
{
	scanf("%d", &n);
	
	ans = pow(n, 1.0/3); 
	//1/3 = 0
	//1.0/3 = 0.333... 
	//我们这里1/3是浮点型数据所以要转换一下 
	
	printf("%.3lf", ans);
	
	return 0;
}

        

二、思路二(二分算法)

 1.二分算法

                关于二分算法,可分为整数二分和浮点数二分(注意:二分算法一般都是答案的二分),其中整数二分比浮点数二分复杂一些,是由于浮点数二分能严格意义上分成两半,不会有整数涉及的整除问题和边界问题。

 如图所示是浮点数二分的图解(可以结合代码注释看):

  2.代码实现 

#include<stdio.h>

int n;  //整数n

int main()
{
	scanf("%d", &n);
	
	double l = -10000, r = 10000;  //答案二分的左右边界,在这个区间找答案 
	
	//注意浮点数二分必须得考虑精度 
	for(int i = 0; i < 100; i ++)  //循环二分100次精度在6位 
	{
		double mid = (l + r) / 2;  //二分答案区间 
		if(mid * mid * mid > n) r = mid;  //答案大了,更新右边界 
		else l = mid;  //反之更新左边界 
	}
	
	printf("%. 3lf", r);  //最后输出l或者r都可以,到最后l和r的值是一样的 
	
	return 0;
}

 码字不易,阁下的关注和点赞是给作者最大的动力和鼓励 ૮₍ ˃ ⤙ ˂ ₎ა


  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Csdn入门到单身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值