c语言 e=(int)sqrt(n)报错了,这句有什么问题?
答案:5 悬赏:0
解决时间 2021-01-20 17:38
- 提问者网友:骨子里的高雅
- 2021-01-19 18:48
c语言 e=(int)sqrt(n)报错了,这句有什么问题?
最佳答案
- 二级知识专家网友:梦中风几里
- 2021-01-19 20:27
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
#include
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 if(n%e==0) t=0;
else t=1;
return(t);
}
sqrt(double), sqrt(long double), sqrt(float),而你传入的参数类型为int, 所以报错,用强制转型改成这样就行了e=(int)sqrt((double)n);
代码如下:
#include "stdafx.h"
#include "StdAfx.h"
#include
#include
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
else t=1;
return(t);
}
全部回答
- 1楼网友:玩家
- 2021-01-20 00:16
我今天就为这事搞了一下午,是gcc编译库里面需要添加-lm,链接的数学库链接,如果不明白-lm是什么意思,可以百度一下!
- 2楼网友:千杯敬自由
- 2021-01-19 23:15
报什么错?还是警告?
- 3楼网友:像个废品
- 2021-01-19 22:47
我觉得关键是那个e错了,因为在数学里面e是有意义的 ,在C语言里,e也是有作用的。如同学生里的一样。所以建议你换一个变量试一试
- 4楼网友:妄饮晩冬酒
- 2021-01-19 22:03
e=(int)sqrt(n*1.0);//VS里面默认是C++的,C++调用要明确追问为什么n*1.0?这个起调用c的功能吗?能不能解释一下这个用法。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯