注册 登录
编程论坛 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
rjsp2023-10-26 08:23
1/2x 是什么意思? 是 (1/2)x 还是 1/(2x) ?
2x 是什么意思?是 2*x,还是 2^x ?
#3
rjsp2023-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
A3C2023-10-26 13:57
回复 3楼 rjsp
谢谢
#5
A3C2023-10-26 17:15
x=6.66,其中2x为2*x请问有更多的解法吗,最好对初学者友好点
#6
yiyanxiyin2023-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
A3C2023-10-26 18:48
回复 6楼 yiyanxiyin
谢谢
1