用math.h里封装好的函数,具体如下:
创新互联公司-专业网站定制、快速模板网站建设、高性价比囊谦网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式囊谦网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖囊谦地区。费用合理售后完善,10年实体公司更值得信赖。
求平方根:double sqrt(double x)
例:
#include math.h
#include stdio.h
int main(void)
{
double x = 4.0, result;
result = sqrt(x);
printf("The square root of %lf is %lf
", x, result);
return 0;
}
扩展资料:
关于c语言的基本运算
1.加法运算符 +
int a = 10;
int b = a + 5;
在第3行利用加法运算符 + 进行了加法运算,再将和赋值给了变量b,最终变量b的值是15
2.减法运算符 或 负值运算符 -
int b = 10 - 5;
int a = -10;
1 在第1行利用减法运算符 - 进行了减法运算,再将差赋值给了变量b,最终变量b的值是5
2 在第3行中,这个 - 并不是什么减法运算符,而算是一个负值运算符,-10代表的是负十
3.乘法运算符 *
int b = 10 * 5;
注意:乘法运算符并不是x或者X,而是星号*。变量b最终的值是50。
4.除法运算符 /
double a = 10.0 / 4;
double b = 10 / 4;
printf("a=%f, b=%f \n", a, b);
注意:除法运算符并不是÷,而是一个正斜杠 /
1 第1行中的10.0是浮点型,4是整型,因此会将4自动类型提升为浮点型后再进行运算,最后变量b的值是2.5
2 第2行中的10和4都是整型,计算机中的运算有个原则:相同数据类型的值才能进行运算,而且运算结果依然是同一种数据类型。因此,整数除于整数,求出来的结果依然是整数,会损失小数部分。最后变量b的值是2。
5.模运算符或称取余运算符 %
注意:这个%并不是除号÷,它是一个取余运算符,或者叫做模运算符。取余的意思是,取得两个整数相除之后的余数。比如,5除于2的余数是1,5除于3的余数是2。因此使用这个%有个原则:%两侧必须都为整数。
错误的写法:1 int a = 5.0 % 2;
编译器会直接报错,因为5.0并非整数。
abc输入的时候就出错了,还有需要判断是否有解、、
改了一下:
#include stdio.h
#include math.h
void main ()
{
double a,b,c,q,p,x1,x2,disc;
printf("input three number a,b,c\n");
scanf("%lf,%lf,%lf",a,b,c);
disc=b*b-4*a*c;
if(disc0)
{
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("\nx1=%5.2f \nx2=%5.2f\n",x1,x2);
}
else if (disc==0)
{
p=-b/(2.0*a);printf("\nx=%5.2f\n",p);
}
else
printf("no answer!!");
}
首先假设你的二次根式除去根号以外是在有理数的范围内吧
首先二次根式分为四个部分a,b,c,d
则按照这个假设,二次分式应该满足以下模型
(a/b)sqrt(c/d) 这里a,b,c,d根据假设应该都是整数
化简二次根式无非是希望使得该二次根式只有3个部分,也就是要使得
(a/b)sqrt(c/d) = (e/f)sqrt(g)这种格式
显然 sqrt(c/d) = sqrt(c) / sqrt(d) = ( sqrt(c) * sqrt(d) ) / ( sqrt(d) * sqrt(d) ) = ( sqrt(c) * sqrt(d) ) / d
= sqrt(c*d) / d
换句话说 必然满足以下方程
f = d * b
e * sqrt(g) = a * sqrt( c * d )
开方和约分的问题了
首先开方
分解质因数 c *d 然后将其中多次出现的质因数的个数除2 就是开方出来的结果 设为 h
那么这样的话 e = a * h , g = ( c * d ) / ( h * h )
最后的约分只需要用辗转相除计算出 e 与 f的最大公约数然后除去即可
最后粗略的写下代码
long q[10000]; // 质数表
long times[10000]; // 次方计数
long add = 0
int gcd(long m1,long m2)
{
if( m1 == 0 ) return m2;
return gcd( m2 % m1 , m1 );
}
int main()
{
add = 0; // 质数计数清零
for(long i=2;i=10000;i++)
{
add++;
for(long j=2;j=sqrt(i);j++)
if( i % j == 0 )
{
add--;
break;
}
q[add] = i;
} // 构建质数表
long a,b,c,d;
scanf("%ld%ld%ld%ld",a,b,c,d); // 输入二次根式的四个参数(a/b)* sqrt(c/d)
long temp = c * d;
add = 1; // 从第一个质数开始尝试
long h = 1;
while(temp != 1 q[add] = temp) // 分解 c * d 计算出 h
{
long add2 = 0;
if( temp % q[add] == 0 )
{
temp /= q[add];
add2++; // 如果是当前temp的质因数则+1
continue;
}
for( long i=1;i=add2 / 2 ; i ++ )
{
h *= q[add];
}
add++; //查看下一个质数
}
long g = ( c * d ) / ( h * h );
long e = a * h;
long f = d * b;
long m = gcd( e , f ); // 计算 e 与 f的最大公约数
e /= m;
f /= m; //计算出约分后的 e和f
printf("化简后的二次根式为(%ld/%ld)*sqrt(%ld)",e,f,g); // 也就是(e/f)*sqrt(g)
return 0;
}