函数 真心搞不懂

ranxufeng 2012-11-30 09:06:18
// 113.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stdio.h>
#include<math.h>
#include<Windows.h>
int P(int x);

int _tmain(int argc, _TCHAR* argv[])
{//判断素数
int x = 0001;
system("color 40");
int a;
printf("请输入一个整数:\n");
scanf("%d",&a);
if(P(a))
printf("%d是素数\n",a);
else
printf("%d不是素数\n",a);
printf("5秒后自动退出!\n");
Sleep(5000);
return 0;
}

int P(int x)
{
int i,n;
n = sqrt(x);
for(i = 2;i <= n;i++)
{
if(x % i == 0)
return 0;
}
return 1;
}

错误 2 error C2668: “sqrt”: 对重载函数的调用不明确 d:\编程软件下载\microsoft visual studio 10.0\制作\课本\第六章\课本\113\113\113.cpp 29 1 113
3 IntelliSense: 有多个 重载函数 "sqrt" 实例与参数列表匹配: d:\编程软件下载\microsoft visual studio 10.0\制作\课本\第六章\课本\113\113\113.cpp 29 6 113


真心看不懂怎么回事 求帮忙
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
转角天边 2012-11-30
  • 打赏
  • 举报
回复
引用 2 楼 ranxufeng 的回复:
引用 1 楼 anhuizhuanjiao 的回复:函数原型为double sqrt(double); VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long) 你这里参数为整形,所以编译器无法知道你是要调用哪个sqrt函数,可把x换成float或者d……
%运算符只能作用于两个整形的操作数之间,再强制转换一下
prajna 2012-11-30
  • 打赏
  • 举报
回复
這樣改吧 int i,n; n = (int)sqrt(1.0*x);
ranxufeng 2012-11-30
  • 打赏
  • 举报
回复
引用 1 楼 anhuizhuanjiao 的回复:
函数原型为double sqrt(double); VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long) 你这里参数为整形,所以编译器无法知道你是要调用哪个sqrt函数,可把x换成float或者double类型
换后 x有这个错误 if(x % i == 0) 4 IntelliSense: 表达式必须包含整数或枚举类型 d:\编程软件下载\microsoft visual studio 10.0\制作\课本\第六章\课本\113\113\113.cpp 32 10 113
转角天边 2012-11-30
  • 打赏
  • 举报
回复
函数原型为double sqrt(double); VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long) 你这里参数为整形,所以编译器无法知道你是要调用哪个sqrt函数,可把x换成float或者double类型

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧