C语言精确运算

来源:百度知道 编辑:UC知道 时间:2024/07/04 21:07:47
如何用C实现100!(1*2*3*4*......99*100)的值的精确输出?

#include"stdio.h"

double stepMultiply(int n) /*求n的阶乘函数*/
{
if(n<0)
{
return -1;
}
else if(n==0 || n==1)
{
return 1;
}
else
{
return n*stepMultiply(n-1);
}
}
void main()
{
int number=100;
printf("the evalue of %d! =%lf",number,stepMultiply(number);
}
/*
*问题是输出的结果是以指数的形式表式的,?求一种方法能够将100!这个数的所有位数全部输出
*用C语言实现???希望哪位好友能解决这个问题
*/

呐, 一万都能求

#include "stdafx.h"

#include <stdio.h>
int main()
{
int a[9999]={1},top=1,n, i, j;
scanf("%d",&n);
for(i=2;i<n+1;i++)
{
int c=0;
for( j=0;j<top;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]%=10000;
}
if(c)
a[top++]=c;
}
printf("%d",a[top-1]);
for(i=top-2;i>=0;i--)
printf("%04d",a[i]);
}

可以的,但是不能用普通的乘号计算了,用字符数组计算

我有C++版的,写起来更容易,原理就是用整形数组来存储各个位的数,再输出就行。

写个指针,递归就好了