c语言中怎样定义(sqrt)开方函数

invenco 2009-03-22 09:59:47
请问诸位高手,怎样自己定义开方函数,我是一个软件专业的学生,刚刚开始学习c语言,问的问题比较菜,敬请原谅。
...全文
7752 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
rjianfeili 2009-03-24
  • 打赏
  • 举报
回复
还是
#include"math.h" \\这里注意头文件
mian()
{
int a;
printf("Enter a please : \n");
scanf("%d",&a);
printf("%d\n",sqrt(a)); \\这样就可以了
}

我是这样认为的

kbtjh 2009-03-23
  • 打赏
  • 举报
回复
加头文件:#include <math.h>
apoptosis 2009-03-23
  • 打赏
  • 举报
回复
设要求的数为a,它的平方根为x。开始令x=a;进入一个循环,不断的令x=(x+a/x)/2,就是令x等于x和a/x的平均值,迭代7-10次左右就可以得到a的平方根x的近似值。
ypb362148418 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 HelloDan 的回复:]
你是要定义还是用用库数啊。
如果是要自己做一个开方的函数那。。。

如果是要用,那可这样:
#include <math.h>
[/Quote]


//直接引用就行了
breezes2008 2009-03-23
  • 打赏
  • 举报
回复
顶4楼。
KevinHo 2009-03-23
  • 打赏
  • 举报
回复
怎么不去头文件看看相应的源程序呢?或许能够给你些新的想法
kobemadi 2009-03-23
  • 打赏
  • 举报
回复
什么强人都有啊!
rivulettornado 2009-03-23
  • 打赏
  • 举报
回复

#include <iostream>
#include <cmath>
using namespace std;

void MY_sqrt(double src , double & dst , double eps);

int main()
{
double src , dst , eps;
cout<<"Input the src = ";
cin>>src;
cout<<"Input the eps = ";
cin>>eps;
MY_sqrt(src , dst , eps);
cout<<"Sqrt of "<<src<<" is "<<dst<<endl;
system("pause");
}
void MY_sqrt(double src , double & dst , double eps)
{
double x = src / 2;
double y = x * x - src;
while(abs(y)>eps)
{
x -= y / (2 * x);
y = x * x - src;
}
dst = x;
}

这是一个C语言的
WOBUGUAN 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lbh2001 的回复:]
C/C++ code__declspec(naked) float FastSqrt(float x) /*快速平方根,最大误差%6,原理是利用泰勒级数展开取一次项*/
{
__asm
{
SUB ESP, 4
MOV EAX, [ESP]+8
SUB EAX, 0x3F800000
SAR EAX, 1
ADD EAX, 0x3F800000
MOV [ESP], EAX
FLD DWORD PTR [ESP]
ADD ESP, 4
RET
}
}
[/Quote]

顶这个。很好很强大。
xuzhuo2000 2009-03-23
  • 打赏
  • 举报
回复
加入头文件的话是math.h
自己写的话,就定义成double sqrt(double x)
zhouganghao 2009-03-23
  • 打赏
  • 举报
回复
厉害 汇编都能搞[Quote=引用 4 楼 lbh2001 的回复:]
C/C++ code__declspec(naked) float FastSqrt(float x) /*快速平方根,最大误差%6,原理是利用泰勒级数展开取一次项*/
{
__asm
{
SUB ESP, 4
MOV EAX, [ESP]+8
SUB EAX, 0x3F800000
SAR EAX, 1
ADD EAX, 0x3F800000
MOV [ESP], EAX
FLD DWORD PTR [ESP]
ADD ESP, 4
RET
}
}
[/Quote]
yjuufgef 2009-03-23
  • 打赏
  • 举报
回复
很强大!
[Quote=引用 4 楼 lbh2001 的回复:]
C/C++ code__declspec(naked) float FastSqrt(float x) /*快速平方根,最大误差%6,原理是利用泰勒级数展开取一次项*/
{
__asm
{
SUB ESP, 4
MOV EAX, [ESP]+8
SUB EAX, 0x3F800000
SAR EAX, 1
ADD EAX, 0x3F800000
MOV [ESP], EAX
FLD DWORD PTR [ESP]
ADD ESP, 4
RET
}
}
[/Quote]
cyldf 2009-03-23
  • 打赏
  • 举报
回复
加入头文件#include <math.h>
lbh2001 2009-03-23
  • 打赏
  • 举报
回复
__declspec(naked) float FastSqrt(float x)  /*快速平方根,最大误差%6,原理是利用泰勒级数展开取一次项*/
{
__asm
{
SUB ESP, 4
MOV EAX, [ESP]+8
SUB EAX, 0x3F800000
SAR EAX, 1
ADD EAX, 0x3F800000
MOV [ESP], EAX
FLD DWORD PTR [ESP]
ADD ESP, 4
RET
}
}
  • 打赏
  • 举报
回复
自己写开方函数?
一直循环n次乘呗。。
HelloDan 2009-03-22
  • 打赏
  • 举报
回复
你是要定义还是用用库数啊。
如果是要自己做一个开方的函数那。。。

如果是要用,那可这样:
#include<math.h>

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧