當前位置:首頁 » 編程語言 » c語言加sqrt顯示出錯
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言加sqrt顯示出錯

發布時間: 2022-05-20 12:57:19

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);
}