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; }