编程论坛
注册
登录
编程论坛
→
C语言论坛
请教一个基本的问题
A3C
发布于 2023-10-25 21:27, 1381 次点击
用C语言编写一个程序,求前 n 项之和S值,其中 n≥1 ,x ≠ 0 。(n由键盘输入):
S=1/2x-2x/3+3/5x-5x/8+8/13x-13x/21…
请问这个咋整呀?
6 回复
#2
rjsp
2023-10-26 08:23
1/2x 是什么意思? 是 (1/2)x 还是 1/(2x) ?
2x 是什么意思?是 2*x,还是 2^x ?
#3
rjsp
2023-10-26 08:48
假设 1/2x 是 1/(2*x) 的话
程序代码:
double
foo(
unsigned
n,
double
x )
{
double
result =
0
;
for
(
unsigned
i=
0
,a=
1
,b=
2
; i!=n; ++i,b=b+a,a=b-a )
{
if
( i%
2
==
0
)
result += a/(b*x);
else
result -= (a*x)/b;
}
return
result;
}
#include
<stdio.h>
#include
<assert.h>
int
main(
void
)
{
assert( foo(
1
,
1
) ==
1
/
2
. );
assert( foo(
2
,
1
) ==
1
/
2
. -
2
/
3
. );
assert( foo(
3
,
1
) ==
1
/
2
. -
2
/
3
. +
3
/
5
. );
assert( foo(
1
,
0.5
) ==
1
/(
2
*
0.5
) );
assert( foo(
2
,
0.5
) ==
1
/(
2
*
0.5
) - (
2
*
0.5
)/
3
);
assert( foo(
3
,
0.5
) ==
1
/(
2
*
0.5
) - (
2
*
0.5
)/
3
+
3
/(
5
*
0.5
) );
}
#4
A3C
2023-10-26 13:57
回复 3楼 rjsp
谢谢
#5
A3C
2023-10-26 17:15
x=6.66,其中2x为2*x请问有更多的解法吗,最好对初学者友好点
#6
yiyanxiyin
2023-10-26 17:21
#include <stdio.h>
void main ()
{
int i,n;
float x,s=0,l,m=1,t,M=2,j=1;
printf("x=");
scanf("%f",&x);
printf("\nn=");
scanf("%d",&n);
if(n>=1)
l=m/(M*x);
else l=0;
s+=l;
for(i=2;i<=n;i++)
{
t=m;
m=M;
M=M+t;
if(i%2==0)
l=-(m*x)/M;
else
l=m/(M*x);
s+=l;
}
printf("\ns=%f",s);
}
#7
A3C
2023-10-26 18:48
回复 6楼 yiyanxiyin
谢谢
1