读书人

函数 真心搞不懂解决方法

发布时间: 2012-12-30 10:43:15 作者: rapoo

函数 真心搞不懂
// 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;
}

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


真心看不懂怎么回事 求帮忙
[解决办法]
函数原型为double sqrt(double);
VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long)
你这里参数为整形,所以编译器无法知道你是要调用哪个sqrt函数,可把x换成float或者double类型
[解决办法]
改吧

int i,n;
n = (int)sqrt(1.0*x);

读书人网 >C语言

热点推荐