发布网友 发布时间:2022-04-23 03:57
共4个回答
热心网友 时间:2022-07-08 10:13
平方直接两个数相乘即可。
平方根可以通过这个数本身和0之间进行折半查找的方法,对数据进行计算。
当两数相乘大于这个数时,重置最大值;小于这个数时,重置最小值。由于存在除不尽的数,可以加上一个精度进行判断。
#include<stdio.h>
#include<math.h>
double squareFun(double x) // 平方
{
return x*x;
}
double sqrtFun(double x, int precision) // 开方
{
double a = 0, b = x, mid = x/2, val = pow(10, -precision);
if (x < 0)
return -1;
while (true) // 循环折半查找
{
if (fabs(mid*mid-x) <= val) // 达到进度则退出
break;
if (mid*mid > x)
b = mid; // 重置最大值
else
a = mid; // 重置最小值
mid = (a+b)/2;
}
return mid;
}
int main()
{
double d = sqrtFun(2, 15);
printf("%.15lf\n", d);
printf("%.15lf\n", squareFun(d));
}
热心网友 时间:2022-07-08 10:13
#include<stdio.h>
#include<math.h>
int main()
{
double x,y;
printf("请输入x:");
scanf("%lf",&x); //double用lf
if (0<x&&x<1000)
{
y=sqrt(x);
printf("x的平方根是%lf\n",y); //double用lf
}
else
{
printf("请重新输入x的值\n");
}
return 0;
}追问为什么double 用lf?
追答scanf()
printf()
对于不同的数据有不同的规定
%d int
%s 字符串
%c char
%lf double
细节请查询书或百度
热心网友 时间:2022-07-08 10:14
将你的程序中的 所有有 % 的地方换成 %lf
因为你控制输入输出的时候用的是 double类型的,格式 不一致会导致输入输出有误。
热心网友 时间:2022-07-08 10:15
#include<stdio.h>
#include<math.h>
int main()
{
double x,y;
printf("请输入x:");
scanf("%f",&x);
if (0<x&&x<1000)
{
y=sqrt(x);
printf("x的平方根是%f\n",y);//是%f 你试试吧
}
else
{
printf("请重新输入x的值\n",x);
}
return 0;
}追问亲爱的,%f是错误的,%lf才是正确答案喔
追答呵呵 收教了 你懂了就好了