1. c语言为什么加上了头文件sqrt还是显示出错
int m =sqrt((double)i);C语言是没有重载的,C++才有,你应该是用C++的编译器来写C语言吧在C++中sqrt有两个重载函数,一个参数是double,另一个是float由于你传的参数是int在默认的隐式类型转换中int可以转换成float也可以转换为double,编译器就不知道你想调用哪一个。
2. C语言中出现sqrt:domain error
你的ab,bc,cd,da定义为实型
运算y=sqrt(x)的时候x是整型 y也变成整型 所以要强制类型转换哦
在前面加个float即可
如:y=(float)sqrt(x)
#include<math.h>
main()
{
int oa,ob,oc,od,ac,bd;
float ab,bc,cd,da;
scanf("%d,%d,%d,%d",&oa,&ob,&oc,&od);
ab=(float)sqrt(oa*oa+ob*ob);
bc=(float)sqrt(ob*ob+oc*oc);
cd=(float)sqrt(oc*oc+od*od);
da=(float)sqrt(oa*oa+od*od);
ac=(oa+oc);
bd=(ob+od);
printf("ab=%f bc=%f cd=%f da=%f ac=%d bd=%d\n",ab,bc,cd,da,ac,bd);
system("PAUSE");
}
3. 我编的一个判断质数的c语言程序,结果出现这样的错误: “sqrt”: 对重载函数的调用不明确。谢谢啦!
m=sqrt(i);
sqrt是float 或者double型的,
如果用于int型,
要这样:m=sqrt((float)i);
4. C语言问题sqrt没法用
#include<stdio.h>
#include<math.h>
intprime(intm)
{
intk,j;
k=(int)sqrt(m);//加个强制转换就可以了,不然会报警告。sqrt()的返回值类型是double出现红线,只是有可能是拼写问题,不代表是错误
for(j=2;j<=k;j++)
if(m%j==0)
return0;
return1;
}
intmain()
{
intm=2,n=20,i,s;
s=0;
for(i=m;i<=n;i++)
if(prime(i)==0)
s+=i;
printf("Sumis:%d ",s);
return0;
}
5. C语言数学函数sqrt()输出问题
printf("%d\n",sqrt(9));
//为什么这一行输出的是0,而不是3
?
sqrt(9)
函数返回类型为
double,printf
函数是一个很呆板的函数,%d
如果接收
double
类型的数据,就只显示
0;两种方法更改:%d
改成
%ld
;
sqrt(9)
改成
(int)sqrt(9)。
6. C语言 sqrt函数问题 Domain error 期待高手~~~
62/100*1000
输出多少
是0吗
你可以试着写成
double
a=sqrt(f*1000.0/Q);
62/100*1000
写成62/100.0*1000
呢
你自己编译看看
我没工夫
补充
因为62*1000越界了
最大的表示不了这么大
而最高位的1在
有符号数
里面是表示
负号
的
7. C语言编程中sqrt出现异常
#include"stdio.h"
#include"math.h"
void main()
{
float a,b,c,area,p;
printf("input number:\n");
scanf("%f%f%f",&a,&b,&c);
if(a<=0&&b<=0&&c<=0&&a+b<c&&a+c<b&&b+c<a)
printf("erro\n");
else
{
p= (a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("area is %f\n",area);
}
}
你的公式也错了,而且if里面六个条件有一个不满足的话就为假,因此用&&。
8. 编写C语言程序,我用了sqrt(),编译的时候却显示如图所示,请问怎么回事
首先 你没有包含math.h头文件 ,所以显示 sqrt未定义,第二,collect2的意思是,控制台还有该程序的残留进程。
9. C语言sqrt函数报错,有头文件math,每次我用这个函数都出现同样问题,但程序运行正常,求解释
查看一下数据类型,是否需要提前强制转换一下,应该是float型的
10. c语言 e=(int)sqrt(n)报错了,这句有什么问题
e=(int)sqrt(n);之所以出错,是因为你用的编译器所支持的sqrt函数有三种重载类型,分别如下:
sqrt(double), sqrt(long double), sqrt(float),而你传入的参数类型为int, 所以报错,用强制转型改成这样就行了e=(int)sqrt((double)n);
代码如下:
#include "stdafx.h"
#include "StdAfx.h"
#include<stdio.h>
#include<math.h>
void main()
{
int su(int n),n;
printf("please enter a integer number:");
scanf("%d",&n);
if(su(n))
printf("Yes\n");
else printf("No.\n");
}
int su(int n)
{
int t=1,i,e;
e=(int)sqrt((double)n);
for(i=1;i<e&&(t==1);i++)
if(n%e==0) t=0;
else t=1;
return(t);
}