一个程序在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)'
请问到底出在哪里? 展开
程序代码如下:
#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)'
请问到底出在哪里? 展开
3个回答
展开全部
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);
}
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);
}
展开全部
float area(float (*p)(),float x,float y);
改灶世链成隐孙返圆
float area(float (*p)(float),float x,float y);
改灶世链成隐孙返圆
float area(float (*p)(float),float x,float y);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询