例11.2
通过给 trans 函数传送不同的函数名,求 tan x 和 cot x 值。
1 #include <stdio.h> 2 #include <math.h> 3 double tran(double(*) (double), double(*) (double), double); /* 函数说明语句 */ 4 main() 5 { 6 double y, v; 7 v = 60 * 3.1416 / 180.0; 8 y = tran(sin, cos, v); /* 第一次调用 */ 9 printf("tan(60)=%10.6f\n", y); 10 y = tran(cos, sin, v); /* 第二次调用 */ 11 printf("cot(60)=%10.6f\n", y); 12 } 13 double tran(double(*f1) (double), double(*f2) (double), double x) 14 { 15 return (*f1) (x) / (*f2)(x); 16 }
例11.3
用递归的方法求n!
求n!可用以下数学关系表示:
n!= 1 当n=0时
n!= n * ( n - 1 )! 当n>0时
1 #include <stdio.h> 2 int fac(int n) 3 { 4 int t; 5 if (n == 1 || n == 0) 6 { 7 return 1; 8 } 9 else 10 { 11 t = n*fac(n - 1); 12 return t; 13 } 14 } 15 main() 16 { 17 int m, y; 18 printf("Enter m:"); 19 scanf("%d", &m); 20 if (m < 0) 21 { 22 printf("Input data error !\n"); 23 } 24 else 25 { 26 y = fac(m); 27 printf("\n%d!=%d\n", m, y); 28 } 29 }
例11.4
用递归算法根据以下求平方根的迭代公式求某数 a 的平方根:
x1 = (x0 + a / x0) / 2
1 #include <stdio.h> 2 #include <math.h> 3 double mysqrt(double a, double x0) 4 { 5 double x1; 6 x1 = (x0 + a / x0) / 2.0; 7 if (fabs(x1 - x0) > 0.00001) 8 { 9 return mysqrt(a, x1); 10 } 11 else 12 { 13 return x1; 14 } 15 } 16 main() 17 { 18 double a; 19 printf("Enter a:"); 20 scanf("%lf", &a); 21 printf("The sqrt of %f=%f\n", a, mysqrt(a, 1.0)); 22 }
123
时间: 2024-10-07 06:05:47