C试题
第8题:用C语言编写函数fun,函数的功能是: 根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+......1/(1+2+3+...+n)例如: 若n的值为11时,函数的值为1.833333.
ChatGPT回答如下:
主要考察了以下几个知识点:
这道题考察了循环语句、条件语句和函数的使用。在函数中,需要使用循环语句计算公式中的分母,然后根据分母的值计算公式中的每一项的值,并将它们相加得到最终的结果。同时,还需要使用条件语句判断分母是否为0,以避免除以0的错误。最后,将计算结果作为函数的返回值返回。
该程序的解题思路:
这道题的解题思路可以分为以下几个步骤:
-
定义一个函数fun,该函数的返回值是s,参数n表示公式中的n值。
-
使用循环计算公式中的每一项,将每一项的值相加得到s。
-
在计算每一项时,需要使用一个内部循环来计算分母的值,即1+2+3+…+n。
-
在内部循环结束后,将分母的倒数加入到s中。
-
最终返回s作为函数值。
解法一:C语言代码实现:
#include <stdio.h>
double fun(int n) {
double s = 0.0;
int i, j;
for(i = 1; i <= n; i++) {
double sum = 0.0;
for(j = 1; j <= i; j++) {
sum += j;
}
s += 1.0 / sum;
}
return s + 1;
}
int main() {
int n = 11;
double result = fun(n);
printf("s = %lf\n", result);
return 0;
}
在上面的代码中,我们定义了一个函数 fun
,该函数接收一个整数 n
,并根据公式计算 s
的值。在函数中,我们使用了两个嵌套的循环,第一个循环用于计算公式中的分母,第二个循环用于求和。最后,我们将 s
的值加上 1 并返回。在 main
函数中,我们调用 fun
函数并输出结果。