c语言问题 阶乘求和

1!-3!+5!-。。。。。+99!-101!

这个怎么编程啊?

结果会很大的, 所以需要用double存储。

#include <stdio.h>
int main()
{
    double s=1;
    double f=1;
    int i;
    for(i=1;i<=50;i++)
    {
        f*=(2*i)*(2*i+1);
        if(i%2==1) s-=f;
        else s+=f;
    }
    printf("%.0lf\n", s);
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-29
#include <stdio.h>
#include <stdlib.h>

//^_^ 13的问题,题主怕已经是大佬了 献丑了
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {

int i, j;
long sum=0;
for(i=1,j=1;i<=3;){  // 3改成你想要的数字   别太大    太大会超出c语言的int类型的数值范围 

if( j%2 == 0 ){  
sum -=jc(i); //偶数次运算为 - 
} else {
sum +=jc(i); //奇数次计算为  + 
}

i= i+2;
j++;
}

printf(" the sum is %d\n",sum);
return 0;
}


//计算num的阶乘 
int jc(num){

if(num==1){  //1 的阶乘为1  直接返回 
return 1;
}

return num*jc(num-1); //  3的阶乘为  3*2!  2的阶乘为 2*1! n的阶乘为 n* (n-1)! 

}

第2个回答  2013-07-13
从式子看,这是一个大数
1!-3!
5!-7!
99!-101!
每一组都是一个负数,而且每一组都可以化成-n²(n-1)! 形式 ,到最后一组必然是 -100²99!,是一个很大很大的数,需要数组模拟或是double型不精确计算
第3个回答  2018-01-29
#include<stdio.h>
int fun(int n);
int main(void)
{
    int n = 0;
    int count = 0;
    for (int i=1; i<=101; i+=2){
        n++;
        if(n%2==0){
            count -= fun(i);
        }else{
            count += fun(i);
        }
    }
    printf("%d",count);
}
int fun(int n)
{
    if(n==0||n==1)
        return 1;
    else
        return n*fun(n-1);
}
//我在java编辑器里写完改的C,你粘贴到编辑器运行一下试试,应该没有什么问题

第4个回答  2013-07-13
long sum=0;

for(int i=1; i< =101; i=i+2)
{
sum=sum+pow(-1,i+1)*JC(i) //-1的奇数与偶数次幂

}

long JC(int n) //求 n的阶乘

{

long jc=1;

for(int i=1; i<=n;i++)
{
j=jc*i;

}
return jc;
}

望采纳!纯手打追问

看不懂,long是什么意思。。。。

追答

long 就相当于long int 是长整型的

本回答被提问者采纳