C语言:求1!-2!+3!-4! +……+49! -50!的和。

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:54:20
求1!-2!+3!-4! +……+49! -50!的和!
高手帮忙!要可行的!
急啊,最好是完整的,复制到TURBOC中就能运行的

上面的程序有几个问题
一是越界,50!早就超过int的表示范围
二是效率低,四个for循环
三是结果不正确,每个for(k=1;k<=i;k++)前都没有把设tem = 1

#include <stdio.h>

int main()
{
double sum = 0;
double tmp = 1;
int mul = 1;
int i;
for(i=1;i<=50;i++)
{
tmp *= i;
sum += tmp*mul;
mul *= -1;
}
printf("1!-2!+3!-4!+.....+49!-50! = %e",sum);
}

50!是一个多达64位十进制整数,
无论是int或_int64的数据类型都装不下50!
下面的程序使用一个int[50]的数组存储运算结果,
其中每个元素存储4位十进制数。

通过修改N为其它值可以求其它的表达式的值。

祝你好运!

==========================================================

/**求1!-2!+3!-...+(+|-)N!,结果存储在整数数组中,其中数组第一个元素存储数组的长度*/
#define N 50
#define BASE 10000
void fac()
{
int tmp[N],plus[N],minus[N],*p,*q;
int i,j,k;
//初始化数组
for(i=0;i<N;i++)
{
tmp[i]=0;
plus[i]=0;
minus[i]=0;
}

tmp[N-1]=1;
plus[N-1]=1;