#includestdio.h
成都創新互聯為企業級客戶提高一站式互聯網+設計服務,主要包括成都網站制作、成都網站建設、重慶APP軟件開發、小程序開發、宣傳片制作、LOGO設計等,幫助客戶快速提升營銷能力和企業形象,創新互聯各部門都有經驗豐富的經驗,可以確保每一個作品的質量和創作周期,同時每年都有很多新員工加入,為我們帶來大量新的創意。
#includemath.h
int?prime(int?m)
{
int?k,j;
k=(int)sqrt(m);?//加個強制轉換就可以了,不然會報警告。sqrt()的返回值類型是double????出現紅線,只是有可能是拼寫問題,不代表是錯誤
for(j=2;j=k;j++)
if(m%j==0)
return?0;
return?1;
}
int?main()
{
int?m=2,n=20,i,s;
s=0;
for(i=m;i=n;i++)
if(prime(i)==0)
s+=i;
printf("Sum?is:%d\n",s);
return?0;
}
int m =sqrt((double)i);C語言是沒有重載的,C++才有,你應該是用C++的編譯器來寫C語言吧在C++中sqrt有兩個重載函數,一個參數是double,另一個是float由于你傳的參數是int在默認的隱式類型轉換中int可以轉換成float也可以轉換為double,編譯器就不知道你想調用哪一個。
VS C語言中 取根函數有 double sqrt(double ) ; float sqrtf(float); long double sqrtl(long double x); 看清楚了,每個sqrt是不一樣的。
樓主的4.0不知道是什么類型 ,比如說是float,但是調用sqrt(4.0),所以可能是因為float-double隱式轉換調用double sqrt(double x)導致你的結果出錯。
頭文件加#include math.h//sqrt是math中的函數,
而且你的內循環有問題, 更改如下:
for(;b=d;b++)
{ c=a%d;
if(c==0)
break;
else if(b==d)
printf("%d \n",a);
}
完整程序如下
#include math.h
#include "stdio.h"
void main()
{ int a,b,c,d;
a=101; b=2;
printf("101到200的素數有以下\n");
for(;a201;a++)
{
d=sqrt(a);
for(;b=d;b++)
{ c=a%d;
if(c==0)
break;
else if(b==d)
printf("%d \n",a);
}
a++;
}
}
分享題目:關于c語言sqrt函數出錯的信息
鏈接URL:http://vcdvsql.cn/article24/ddsigje.html
成都網站建設公司_創新互聯,為您提供定制網站、App設計、服務器托管、小程序開發、定制開發、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯