2.下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。 #include <stdio.h> double fun(int n) { int i; double s, t; /**********found**********/ s=__1__; /**********found**********/ for(i=1; i<=__2__; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("\nThe result is: %f\n",fun(n)); }怎么完善
时间: 2023-07-05 13:30:12 浏览: 93
该程序中函数fun的功能是计算如下公式前n项的和并作为函数值返回:
s = 1*3 + 3*5 + 5*7 + … + (2n-1)*(2n+1)
需要完善的代码如下:
#include <stdio.h>
double fun(int n) {
int i;
double s = 0, t;
for(i = 1; i <= n; i++) {
t = 2.0 * i;
s = s + (2.0 * i - 1) * (2.0 * i + 1) / t; //计算公式的每一项并累加到s中
}
return s; //返回公式的前n项和
}
int main() {
int n = -1;
while(n < 0) {
printf("Please input(n > 0): ");
scanf("%d", &n);
}
printf("\nThe result is: %f\n", fun(n)); //输出计算结果
return 0;
}
完善后的程序可以正确计算公式前n项的和并输出结果。
相关问题
2.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第 1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、...... 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 #include <stdio.h> long fun(int g) { /**********found**********/ switch(g); { case 0: return 0; /**********found**********/ case 1 ;case 2 : return 1 ; } return( fun(g-1)+fun(g-2) ); } main() { long fib; int n; printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n); fib=fun(n); printf("fib = %d\n\n",fib); }
改正后的程序如下:
```c
#include <stdio.h>
long fun(int g) {
switch(g) {
case 0:
return 0;
case 1:
case 2:
return 1;
default:
return (fun(g-1) + fun(g-2));
}
}
int main() {
long fib;
int n;
printf("Input n: ");
scanf("%d", &n);
printf("n = %d\n", n);
fib = fun(n);
printf("fib = %ld\n\n", fib);
return 0;
}
```
修改说明:
1. 删除了 `switch` 语句后的多余分号。
2. 将 `return( fun(g-1)+fun(g-2) );` 修改为 `return (fun(g-1) + fun(g-2));`。
3. 在 `main` 函数中将 `%d` 修改为 `%ld`,因为 `fib` 的类型是 `long`。同时添加 `return 0;` 语句,表示程序正常结束。
下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值从第1项起,斐波拉契数列为:11、2、3、5、8、13、21、.....例如:若给n输入7,则该项的斐波拉契数值为13。
这是一个计算斐波那契数列的递归函数,可以通过输入一个正整数n来计算斐波那契数列中第n项的值。斐波那契数列的定义是:第一项和第二项都为1,从第三项开始,每一项都等于前两项之和。
以下是代码实现:
```c
#include <stdio.h>
int fun(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fun(n - 1) + fun(n - 2);
}
}
int main() {
int n, result;
printf("请输入一个正整数n:");
scanf("%d", &n);
result = fun(n);
printf("斐波那契数列中第%d项的值为:%d\n", n, result);
return 0;
}
```
例如,当输入7时,输出结果为:
```
请输入一个正整数n:7
斐波那契数列中第7项的值为:13
```
阅读全文