帮我调试这代码......运行时会出错.....

ieihqqqq 2008-10-12 04:57:51
double (*pFunc) (double);
#include<stdio.h>
#include<math.h>
double Sum(double (*pFunc)(double),double dStart,double dEnd);
void main()
{
double dSum;
dSum=Sum(sin,0.3,1.0);
printf("对位于的角示SIN和,SIN=和=%f\n",dSum);
dSum=Sum(cos,2.0,6.0);
printf("对位于的角示COS和,COS=和=%f\n",dSum);
getch();
}
double Sum(double (*PFunc)(double),double dStart,double dEnd)
{
double dSum=0.0;
double d;
for(d=dStart;d<dEnd;d+=0.1)
{
dSum+=pFunc(d);

}
return dSum;

}
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2008-10-16
  • 打赏
  • 举报
回复
很显然下面函数中,循环中用的函数指针pFunc和形式参数不同名
不明白楼主在代码开头定义那个pFunc变量干嘛,如果你不做这种事情,这个错误根本不可能发生

double Sum(double (*PFunc)(double),double dStart,double dEnd)
{
double dSum=0.0;
double d;
for(d=dStart;d <dEnd;d+=0.1)
{
dSum+=pFunc(d);

}
return dSum;

}

frank_ll 2008-10-16
  • 打赏
  • 举报
回复

double (*pFunc) (double);
#include <stdio.h>
#include <math.h>
double Sum(double (*pFunc)(double),double dStart,double dEnd);
void main()
{
double dSum;
dSum=Sum(sin,0.3,1.0);
printf("对位于的角示SIN和,SIN=和=%f\n",dSum);
dSum=Sum(cos,2.0,6.0);
printf("对位于的角示COS和,COS=和=%f\n",dSum);
getch();
}
double Sum(double (*PFunc)(double),double dStart,double dEnd)//PFunc改为pFunc
{
double dSum=0.0;
double d;
for(d=dStart;d <dEnd;d+=0.1)
{
dSum+=pFunc(d);

}
return dSum;

}
mifeixq 2008-10-16
  • 打赏
  • 举报
回复
寒~眼神不好使了,竟然没看出来错误,编译之后才知道……
就是写错一个函数指针……

改了就可以用了


//double (*pFunc) (double); 这句实在没什么用
#include <stdio.h>
#include <math.h>
double Sum(double (*pFunc)(double),double dStart,double dEnd);
void main()
{
double dSum;
dSum=Sum(sin,0.3,1.0);
printf("对位于的角示SIN和,SIN=和=%f\n",dSum);
dSum=Sum(cos,2.0,6.0);
printf("对位于的角示COS和,COS=和=%f\n",dSum);
getch();
}
double Sum(double (*pFunc)(double),double dStart,double dEnd) //pFunc
{
double dSum=0.0;
double d;
for(d=dStart;d <dEnd;d+=0.1)
{
dSum+=pFunc(d);
}
return dSum;

}

mifei@P-I-mi:~/C$ ./a.out
对位于的角示SIN和,SIN=和=4.715378
对位于的角示COS和,COS=和=-11.605210


OhFish 2008-10-12
  • 打赏
  • 举报
回复
回复5 楼

char *p;
char *p=NULL;
char *p = new char[10];
上面三种都对,但第一种是危险的。
可参考effective c++ third edition.第4条,确定对象被使用前已先被初始化。
hackxq 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 OhFish 的回复:]
C/C++ code
#include <stdio.h>
#include <math.h>

//double (*pFunc)(double); //你这里只是声明了一个指针,并未给pointer赋值。
//如果想赋值,应写为,double (*pFunc)(double) =&funcation name;
double Sum(double (*pFunc)(double),double dStart,double dEnd);
void main()
{
double dSum;
dSum=Sum(sin,0.3,1.0);
printf("对位于的角示SIN和,SIN=和=%f\n",dS…
[/Quote]

double (*pFunc)(double)如果在这里声明时赋值了不就没意义了吗。而且在这里不赋值也没错啊。

应该只有P改为小写的问题吧
fox000002 2008-10-12
  • 打赏
  • 举报
回复
double (*pFunc) (double);
OhFish 2008-10-12
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <math.h>

//double (*pFunc)(double); //你这里只是声明了一个指针,并未给pointer赋值。
//如果想赋值,应写为,double (*pFunc)(double) =&funcation name;
double Sum(double (*pFunc)(double),double dStart,double dEnd);
void main()
{
double dSum;
dSum=Sum(sin,0.3,1.0);
printf("对位于的角示SIN和,SIN=和=%f\n",dSum);
dSum=Sum(cos,2.0,6.0);
printf("对位于的角示COS和,COS=和=%f\n",dSum);
getch();
}

double Sum(double (*pFunc)(double),double dStart,double dEnd)//PFunc, 被你误打为大写P
{
double dSum=0.0;

for(double d=dStart; d <dEnd; d+=0.1){

dSum+=pFunc(d);
}
return dSum;
}
laoshizheyangzi 2008-10-12
  • 打赏
  • 举报
回复
这代码写的很看懂啊,呵呵
wuyu637 2008-10-12
  • 打赏
  • 举报
回复
#include <iostream>
#include <stdlib.h>
double (*pFunc) (double);
#include <stdio.h>
#include <math.h>
double Sum(double (*pFunc)(double),double dStart,double dEnd);
int main()
{
double dSum;
dSum=Sum(&sin,0.3,1.0);
printf("对位于的角示SIN和,SIN=和=%f\n",dSum);
dSum=Sum(&cos,2.0,6.0);
printf("对位于的角示COS和,COS=和=%f\n",dSum);
//getchar();

return 1;
}
double Sum(double (*PFunc)(double),double dStart,double dEnd)
{
double dSum=0.0;
double d;
for(d=dStart;d <dEnd;d+=0.1)
{
dSum+=(*PFunc)(d); ;

}
return dSum;

}

69,369

社区成员

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

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