一个程序在TC2.0中能正确运行, 但在VC++6中编译时出错

我按教程编写了一段程序,程序的功能是求函数y=1+x*x在区间[0,1]上的定积分,程序代码如下:#include"stdio.h"floatf(floatx);floa... 我按教程编写了一段程序,程序的功能是求函数y=1+x*x在区间[0,1]上的定积分,
程序代码如下:
#include"stdio.h"
float f(float x);
float area(float (*p)(),float x,float y);
main()
{
float a,b,y;
a=0.0;
b=1.0;
y=area(f,a,b);
printf("定积分y=%f\n",y);
}
float area(float (*p)(),float x,float y)
{
float s,h;
int n,i;
n=100;
h=(y-x)/n;
s=((*p)(x)+(*p)(y))/2.0;
for(i=1;i<n;i++)
s=s+(*p)(x+i*h);
s=s*h;
return(s);
}
float f(float x);
{
return(1+x*x);
}
问题是:以上程序在TC2.0中能正确运行(当然其中函数定义语句需稍作修改),
但在VC++6中编译时总是出错,其中一处错误提示指向y=area(f,a,b)这
一句,提示内容为:error C2664: 'area' : cannot convert parameter 1
from 'float (float)' to 'float (__cdecl *)(void)'

请问到底出在哪里?
展开
 我来答
kingfeng588
2012-07-04 · TA获得超过2494个赞
知道大有可为答主
回答量:1475
采纳率:50%
帮助的人:1802万
展开全部
1、
float area(float (*p)(float t),float x,float y);

这里要增加参数。
2、

float f(float x);
这里多余分号。

修改后:
#include"stdio.h"

float f(float x);
float area(float (*p)(float t),float x,float y);

void main()
{
float a,b,y;
a=0.0;
b=1.0;
y=area(f,a,b);
printf("定积分y=%f\n",y);
}
float area(float (*p)(float t),float x,float y)
{
float s,h;
int n,i;

n=100;
h=(y-x)/n;
s=((*p)(x)+(*p)(y))/2.0;
for(i=1;i<n;i++)
{
s=s+(*p)(x+i*h);
}
s=s*h;
return(s);
}
float f(float x)
{
return(1+x*x);
}
rm_2013
2012-07-04 · TA获得超过459个赞
知道小有建树答主
回答量:281
采纳率:100%
帮助的人:165万
展开全部
float area(float (*p)(),float x,float y);

改成
float area(float (*p)(float),float x,float y);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c51a0e2
2012-07-04
知道答主
回答量:46
采纳率:0%
帮助的人:12.7万
展开全部
估计是编译环境不同所致
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式