首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

函数 真心搞不懂解决方法

2012-12-30 
函数真心搞不懂// 113.cpp : 定义控制台应用程序的入口点。//#include stdafx.h#includestdio.h#includ

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

热点排行