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

自学新手,求教函数指针作参数的有关问题

2012-03-30 
自学新手,求教函数指针作参数的问题?问题我已经标在下面程序,希望大大不吝回复。在此谢过。C/C++ code#inclu

自学新手,求教函数指针作参数的问题?
问题我已经标在下面程序,希望大大不吝回复。在此谢过。

C/C++ code
#include<iostream>#include<stdlib.h>using namespace std;int main(){    int n;    double peven(int);    double podd(int);    double scall(double,int);    cout<<"Please input a number:";    cin>>n;    if(n==1)    {        cout<<"Input a wrong number!";        abort();    }    double sum=0;    if(n%2==0)    {        sum=scall(peven,n);    //错误:不能将‘double scall(double, int)’的实参‘1’从‘double (*)(int)’转换到‘double’    }    else    {        sum=scall(podd,n);    //同上错误    }    cout<<"The sum of numbers:"<<sum<<endl;    return 0;}double peven(int n){    double s;    int i;    s=0;    for(i=2;i<=n;i+=2)    s+=1/(double)i;    return(s);}double podd(int n){    double s;    int i;    s=0;    for(i=1;i<=n;i+=2)    s+=1/(double)i;    return(s);}double (*f)(int n);double scall(double (*f)(int),int n)                          //这里该怎么定义?{    double s=0;    s=(*f)(n);    return s;}


[解决办法]
#include<iostream>
#include<stdlib.h>
using namespace std;

typedef double (* pf)(int);
int main()
{
int n;

double peven(int);
double podd(int);
double scall(pf,int);

cout<<"Please input a number:";
cin>>n;
if(n==1)
{
cout<<"Input a wrong number!";
abort();
}
double sum=0;
if(n%2==0)
{
sum=scall(peven,n);
}
else
{
sum=scall(podd,n);
}
cout<<"The sum of numbers:"<<sum<<endl;
return 0;
}
double peven(int n)
{
double s;
int i;
s=0;
for(i=2;i<=n;i+=2)
s+=1/(double)i;
return(s);
}
double podd(int n)
{
double s;
int i;
s=0;
for(i=1;i<=n;i+=2)
s+=1/(double)i;
return(s);
}
double (*f)(int n);
double scall(pf f,int n) //这里该怎么定义?
{
double s=0;
s=(*f)(n);
return s;
}

[解决办法]
C/C++ code
#include<iostream>#include<stdlib.h>using namespace std;double peven(int n){    double s;    int i;    s=0;    for(i=2;i<=n;i+=2)        s+=1/(double)i;    return(s);}double podd(int n){    double s;    int i;    s=0;    for(i=1;i<=n;i+=2)        s+=1/(double)i;    return(s);}typedef double (*f)(int n);double scall(f ff,int n)                          //这里该怎么定义?{    double s=0;    s=(*ff)(n);    return s;}int main(){    int n;    //double peven(int);    //double podd(int);    //double scall(double,int);    cout<<"Please input a number:";    cin>>n;    if(n==1)    {        cout<<"Input a wrong number!";        abort();    }    double sum=0;    if(n%2==0)    {        sum=scall(peven,n);    //错误:不能将‘double scall(double, int)’的实参‘1’从‘double (*)(int)’转换到‘double’    }    else    {        sum=scall(podd,n);    //同上错误    }    cout<<"The sum of numbers:"<<sum<<endl;    system("pause");    return 0;    } 

热点排行