C语言编程:阶乘计算与奇数阶乘之和

需积分: 10 0 下载量 86 浏览量 更新于2024-09-13 收藏 98KB TXT 举报
"C语言上机100" 在这些C语言编程实例中,我们看到了四个不同的函数,每个函数都解决了一个特定的问题。让我们逐一详细分析这些知识点。 1. **阶乘计算** 题目要求实现一个名为`fun`的函数来计算整数n的阶乘。在第一个代码段中,`fun`函数被定义为计算阶乘的递归函数。然而,当前的实现有一个逻辑错误。函数应该检查n是否为0,如果是,则返回1(因为0的阶乘是1)。正确实现如下: ```c long fun(int n) { if (n == 0) return 1; else return n * fun(n - 1); } ``` 2. **满足条件的数之和** 第二个示例中,`fun`函数需要计算1到n之间所有同时能被3和7整除的数字的和。这里的`for`循环和`if`语句用于筛选满足条件的数字。代码中的错误在于未提供正确的表达式。正确版本如下: ```c double fun(int n) { int i; double sum = 0.0; for (i = 1; i <= n; i++) { if (i % 3 == 0 && i % 7 == 0) sum += 1.0 / (double)i; } return sum; } ``` 3. **圆的面积计算** 第三个例子是计算半径为r的圆的面积。`fun`函数应返回圆的面积。代码中的错误是缺少了π值的表示和半径的使用。修正后的代码如下: ```c double fun(double r) { return 3.14159 * r * r / 2.0; } ``` 4. **等比数列求和** 最后一个例子是计算等比数列的前N项和,其中首项`S1`为1,公比`q`给定,求第N项的和`s`。`fun`函数接受公比`q`,并计算总和。错误在于代码没有计算总和。正确的实现为: ```c double fun(double q, int N) { double s = 1.0; for (int i = 2; i <= N; i++) s += q * (q**(i - 1)); return s; } ``` 通过这些例子,我们可以学习到C语言中递归、循环结构、条件判断、数学运算以及输入输出等基本编程概念和技巧。同时,也提醒我们在编写代码时需要注意逻辑的正确性和完整性。