Problem D: 指针函数

Description

YHZ自认为很聪明的人, 在C语言课上老师布置了一个作业,让能求正方形和圆的面积, 正当YHZ要跃跃欲试的时候, 老师却要求使用函数指针来实现这个功能,YHZ立马就不会了,他现在向你求助,你能帮他完成这个程序吗?

 

提示:

编写calAreaSquare(double x)函数来计算边长为x的正方形面积。

编写calAreaCircle(double x)函数来计算半径为x的圆面积。

编写calArea函数用以上两个函数作为参数实现求正方形和圆的面积。

Pi的求法

#include<math.h>

Pi= acos(-1.0)

 

Input

第一行有一个正数T表示有T个询问。 接下来有T行,每行有一个正数op, 和一个浮点数x,

如果op = 1, x 表示正方形的边长。 如果 op = 2, x 表示圆的半径。

 

Output

输出只有一行表示所求的面积(保留五位小数)。

 

Sample Input

2
1 2
2 1

Sample Output

4.00000
3.14159
#include<stdio.h>
#include<math.h>
double calAreaSquare(double(*funp)(double),double x)
{
    double k;
    k=(*funp)(x);
    return k; 
}
double calAreaCircle(double(*funp)(double),double x)
{
    double k,Pi;
    Pi=acos(-1.0);
    k=Pi*(*funp)(x);
    return k;
}
double f1(double x)
{
    return(x*x);
}
int main(void)
{
    int t,op;
    double(*funp)(double);
    double x;
    funp=f1;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%lf",&op,&x);
        if(op==1)
        {
            printf("%.5lf\n",calAreaSquare(funp,x));
        }
        if(op==2)
        {
            printf("%.5lf\n",calAreaCircle(funp,x));
        }
    }
    return 0;
}

 

posted @ 2019-01-01 22:42  MichaelCecil  阅读(851)  评论(0编辑  收藏  举报