码迷,mamicode.com
首页 > 编程语言 > 详细

全国计算机等级考试二级教程-C语言程序设计_第11章_对函数的进一步讨论

时间:2016-04-23 11:50:13      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

 

例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

全国计算机等级考试二级教程-C语言程序设计_第11章_对函数的进一步讨论

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5424053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!