visual studio2010 C++""表达式必须包含整数或枚举类型""

/判断一个数是否为素数#include<iostream>#include<cmath>usingnamespacestd;intmain(){inti,k;double... /判断一个数是否为素数
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int i,k;
double m;

cout<<"输入一个大于1的正整数m:"<<endl;
cin>>m;
if(m==2)
cout<<m<<"不是素数."<<endl;
else
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k)
cout<<m<<"是素数."<<endl;
else
cout<<m<<"不是素数."<<endl;

}
return 0;

}
当我把m 定义为int时,错误为“
错误 1 error C2668: “sqrt”: 对重载函数的调用不明确


然后我把m 定义为float时,就跳出错误“
IntelliSense:表达式必须包含整数或枚举类型


求指导
展开
 我来答
1234567VfIn
2014-08-15 · 超过10用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:26.3万
展开全部
%是求模运算,它的两边只能接整型数,float和double都不行。
我在VC++6.0下编译没有报sqrt的错,在VS2010下报错,可能是因为sqrt有多个重载版本,即有
double sqrt(double x);
double sqrt(float x);
double sqrt(int x);
类似的几个重载吧。你在sqrt里加一个强制类型转换应该就行了,如下:
k=sqrt( (int)m );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高楼寻缝
推荐于2017-10-04 · TA获得超过175个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:160万
展开全部
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int i,k;
int m;

cout<<"输入一个大于1的正整数m:"<<endl;
cin>>m;
if(m==2)
cout<<m<<"不是素数."<<endl;
else
{
k=(int)sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k)
cout<<m<<"是素数."<<endl;
else
cout<<m<<"不是素数."<<endl;

}
return 0;

}
追问
可以了!谢谢!你这个是强制转换么?希望能详细指导一下!再次拜谢了!
追答
sqrt的生命有三种:

double sqrt (double x);
float sqrt (float x);
long double sqrt (long double x)
我们根据具体情况强制转换来适合。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式