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:表达式必须包含整数或枚举类型
”
求指导 展开
#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:表达式必须包含整数或枚举类型
”
求指导 展开
展开全部
%是求模运算,它的两边只能接整型数,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 );
我在VC++6.0下编译没有报sqrt的错,在VS2010下报错,可能是因为sqrt有多个重载版本,即有
double sqrt(double x);
double sqrt(float x);
double sqrt(int x);
类似的几个重载吧。你在sqrt里加一个强制类型转换应该就行了,如下:
k=sqrt( (int)m );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
可以了!谢谢!你这个是强制转换么?希望能详细指导一下!再次拜谢了!
追答
sqrt的生命有三种:
double sqrt (double x);
float sqrt (float x);
long double sqrt (long double x)
我们根据具体情况强制转换来适合。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询