//题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 1/1+1/3+...+1/n(利用指针函数)
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 double peven(int n) //当in为偶数时 5 { 6 double sum=0; 7 for(int i=2 ; i<=n ; i+=2) 8 sum+=1/(double)i; 9 return sum; 10 } 11 12 double podd(int n) //当in为奇数时 13 { 14 double sum=0; 15 for(int i=1 ; i<=n ; i+=2) 16 sum+=1/(double)i; 17 return sum; 18 } 19 20 double (*select)(int n); //【skill】定义指针select指向参数为int型,返回值为double型的函数体 21 22 int main(int argc, char* argv[]) 23 { 24 int in; 25 scanf("%d",&in); 26 double sum=0; 27 if(in%2==0) 28 select=(peven); //函数指针select指向peven函数体的地址(函数名就是函数体首地址) 29 else 30 select=(podd); 31 sum=select(in); //select已经有了指向,使用即可 32 printf("sum=%f ",sum); 33 system("pause"); 34 return 0; 35 }
定义函数体指针 函数返回值 (*指针名)(函数参数); 这只是一个指针,不是一个函数,不要继续写入{......}