printf,sprintf函数系列的第一个参数(也就是字符串输出格式中)中要对小数进行位数限制可以用"%a.bf"的形式表示,其中a是小数点前的位数,b是小数点后的位数
例如:
printf("小数=%7.5f",12.3);
输出结果就是0000012.30000
/*给个求大数阶乘的自编程序你,
下面的自己看着办吧
10000!两三秒吧,如果不输出更快
而且计算出10000!之前需要计算出之前的2-9999的阶乘
所以针对你的问题只要一次就可以了*/
/*
2
(C)
Xuotoa
2008
http://www.xuotoa.cn/
3
4
Filename
:
BigNumberFact.c
5
Compiler
:
Visual
C++
6.0
/
Visual
Studio
2008
6
Description
:
Calculate
the
factory
of
big
number
7
Release
:
12/20/2008
1.0
8
*/
#include
#include
int
a[8000],
n,
i,
j,
carry,
temp,
digit
=
1;
int
Fact(int
n);
void
main()
{
/*FILE
*fp;
if((fp
=
fopen("fac_result.log","w"))
==
NULL)
{
printf("Cannot
open
this
file.\n");
exit(0);
}*/
printf("Please
input
n:
");
scanf("%d",&n);
printf("%d!
is:
\n",n);
Fact(n);
for(i
=
digit
-
1;
i
>=
0;
i--)
{
printf("%d",
a[i]);
//fprintf(fp,"%d",
a[i]);
}
printf("\n");
//fclose(fp);
}
int
Fact(int
n)
{
if(n
<
0)
{
printf("ERROR");
return
-1;
}
else
{
a[0]
=
1;
for(i
=
2;
i
<=
n;
i++)
{
for(j
=
1,
carry
=
0;
j
<=
digit;
j++)
{
temp
=
a[j
-
1]
*
i
+
carry;
a[j
-
1]
=
temp
%
10;
carry
=
temp
/
10;
}
while(carry)
{
a[++digit
-
1]
=
carry
%
10;
carry
/=
10;
}
}
return
0;
}
}
这问题挺简单的,弄个大数运算而已。
先算100!,算这个的过程中从1到99的阶也给算出来了,然后算1!+.....+100!,最后把结果除以100!
这里面需要大数乘法、除法与加法,资料有的是,原理也很简单,不想赘述。
有这个必要吗 精度够用了就可以了 你以为是神七上天阿 就是神七也不要 10000位吧
好好学习 钻牛角尖不好
不过还是希望你能早点找到解决方法。
不难
1。求阶乘
2。通分,相加,得到分子和分母
3。再做除法,计算到小数点后面10000位