1.指向函数的指针:
声明:数据类型(*f)(参数数据类型)
定义方式;f=函数名
调用方式;f(参数)
double(*f)(double);
double anyfun(double(*f)(double), double x)
{
//return (*f)(x);
return f(x);//调用指向函数的指针
}
if(n==1){
f=caesar;
//*f=caesar;//
}
if(n==2){
f=oddeven;
//*f=oddeven;
}
//1
#include "iostream"
#include "cmath"
using namespace std;
double x2(double x)
{
return x*x;
}
double mysin(double x)
{
return 2 * sin(2 * 3.14 * 2 * x + 3.14);
}
double anyfun(double(*f)(double), double x)
{
//return (*f)(x);
return f(x);//调用指向函数的指针
}
/*
int main()
{
double(*f)(double); 定义指向函数的指针
double x;
cin >> x;
f = x2;
cout << f(x) << " ";
f = mysin;
cout << f(x) << endl;
return 0;
}*/
int main()
{
double x;
cin >> x;
cout << anyfun(x2, x) << " ";
cout << anyfun(mysin, x) << endl;
return 0;
}
//2.
#include "iostream"
#include "cmath"
using namespace std;
double myexp(double x){return exp(x);//不能起名为exp,有二义性
}
double mysin(double x){return sin(x);
}
double mycos(double x){return cos(x);
}
double funavg(double(*f)(double),double a,double b,int n){
double avg=0.0;
for(int i=0;i<n+1;i++){
avg+=f(a+i*(b-a)/n);
}
avg=avg/(n+1);
return avg;
}
int main(){
double a,b;
cin>>a>>b;
cout<<funavg(myexp,a,b,1000)<<" "<<funavg(mysin,a,b,1000)<<" "<<funavg(mycos,a,b,1000)<<endl;
return 0;
}
//3.
#include "iostream"
#include "cmath"
using namespace std;
int input (int *p){
int n=0;
int temp;
cin>>temp;
while(temp!=9999){
*p=temp;
n++;
p++;
cin>>temp;
}
return n;
}
void print(int *p ,int n){
/*cout<<*p;
p++;
for(int i=1;i<n;i++){
cout<<" "<<*p;
p++;
}
cout<<endl;*/
cout << *p;
p++;
n--;
while(n)
{
cout << " " << *p;
p++;
n--;
}
}
int main(){
/*int a[100],n;
int* p;
n=input(p);
print(p,n);*/
int a[100],n;
n=input(a);
print(a,n);
return 0;
}
return a*x*x+b*x+c;//不能用^2
x^m//int(pow(x,m))
if(n==1){
f=caesar;
//*f=caesar;//
}
if(n==2){
f=oddeven;
//*f=oddeven;
}