标题:跪求c算法,简单的公式。感谢大虾们。小弟没分,照顾下哈。
只看楼主
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:0 
题目还多个减号!

努力—前进—变老—退休—入土
2009-10-24 12:30
LEED
Rank: 2
等 级:论坛游民
帖 子:75
专家分:43
注 册:2009-8-26
得分:0 
回复 18楼 pgy
谢谢美女大侠的指点。。弄出来了。。
#include<stdio.h>
void main()
{
    float n,t,p=1;
    float s=1,m=0;
    scanf("%f",&n);
    for(t=1;t<=n;t++)
    {
        s=s+m;
        p=-p;
        m=p/(t+1);
    }
    printf("s=%10.6f\n",s);
}
2009-10-24 12:43
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
得分:0 
我的思路
分两部分
分母:为n!
分子:n!-n!/2+n!/3``````````
s=分子/分母
UserYuH很牛  但是我是新手还不太看懂而且觉得程序很复杂。(UserYuH无视这句哈,我还不会写,向你学习)

[ 本帖最后由 jiangwu10057 于 2009-10-24 13:11 编辑 ]
2009-10-24 12:47
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:0 
也好解决,减一个加两个,减一个加三个,减一个加四个……
程序代码:
#include <stdio.h> 
 
long tigui(long jia,long cheng) 
{ 
 if(cheng%jia==0) 
   return jia; 
 else 
   tigui(cheng%jia,jia); 
} 
 
 
void yuefen(long *jia,long *cheng) 
{ 
 int i; 
 while(1) 
   { 
    i=tigui(*jia,*cheng); 
    if(i==1)break; 
    else 
      { 
       *jia/=i; 
       *cheng/=i; 
      } 
   } 
} 
 
 
 
int main(void) 
  { 
   int i,n,m=3,k=0; 
   unsigned long zi,mu; 
 
   do{ 
      printf("n="); 
      scanf("%d",&n); 
     }while(n<1); 
   for(zi=1,mu=2,i=3;i<=n;i++) 
     { 
      k++; 
      if(k==m) 
       { 
        k=0,m++; 
        zi=zi*i-mu; 
       } 
      else 
        zi=mu+zi*i; 
      mu*=i; 
      yuefen(&zi,&mu); 
     } 
   printf("s="); 
   if(zi>mu) 
     { 
      printf("%ld+",zi/mu); 
      zi%=mu; 
     } 
   n==1?printf("1\n\n"):printf("%ld/%ld\n\n",zi,mu); 
 
   getch(); 
   return 0; 
  }


[ 本帖最后由 UserYuH 于 2009-10-24 13:05 编辑 ]

努力—前进—变老—退休—入土
2009-10-24 12:50
C语言学徒
Rank: 2
来 自:NamKing
等 级:论坛游民
帖 子:51
专家分:22
注 册:2009-2-27
得分:0 
#include <stdio.h>
 
double func(int n)
{int i;
double s=0;
for(i=0;i<=n;i++)
 if(i%2==1)
 s+=1.0/i;
 else s-=1.0/i;
 return(s);
 }
 
main()
{ int n;
printf("Input n:  ");
scanf("%d",&n);
printf("\nIf n=%d,the result is:%lf\n",n,func(n));
getch();
}
2009-10-24 12:51
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
得分:0 
我也来个
程序代码:
#include <stdio.h> 
int main()  
{  
    long i,m=1,n,x,y,z=1; 
 
    scanf("%d",&n); 
    for(i=1;i<=n;i++) 
        m=m*i; 
        z=m; 
        for(x=2;x<=n;x++) 
            if(x%2==0) 
            { 
                y=-x; 
                z=z+m/y; 
            } 
            else 
            { 
                z=z+m/x; 
            } 
    printf("%d/%d",z,m); 
}
2009-10-24 13:10
wbq30747
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2009-10-21
得分:0 
回复 23楼 jiangwu10057
感谢啊,你的有谱,感谢感谢,小弟在此感谢。谢谢。
2009-10-24 14:13
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
得分:0 
回复 27楼 wbq30747
谢谢哈·我也是新手·
现在在想如何用小数表示
算法也有所区别
貌似现在不会写郁闷·
2009-10-24 14:18
wbq30747
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2009-10-21
得分:0 
回复 23楼 jiangwu10057
大虾请问,当我输入 n >= 950 的时候,输出就会是负数,是不是数据溢出啊,是不我还要考虑大数的运算。求解,



 大家也帮我看看,24 楼的代码,感谢了。
2009-10-24 14:26
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
得分:0 
还是用24楼的那个没问题
再则我也不是大侠是刚学没到一个月的新手
呵呵
我再试试
刚才睡觉去了·
希望uesr来帮忙啊

[ 本帖最后由 jiangwu10057 于 2009-10-24 16:23 编辑 ]
2009-10-24 16:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-289703-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.829949 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved