|
发表于 2019-11-16 00:26:01
|
显示全部楼层
本帖最后由 jackz007 于 2019-11-16 11:14 编辑
楼主写的代码算法显然不对,下面是我写的代码,楼主可以参考:
- #include<stdio.h>
- int main(void)
- {
- int i , n ;
- double Sn = 0 ;
- printf("请输入 n 的值 (1 - 99) : ") ;
- scanf("%d" , & n) ;
- if(n > 0 && n < 100) {
- for(Sn = 1.0 , i = 0 ; i < n ; i ++) Sn = Sn * (i + 1) ;
- printf("%.0lf\n" , Sn) ;
- }
- return 0 ;
- }
复制代码
编译运行实况:
- C:\Bin>g++ -o x x.c
- C:\Bin>x
- 请输入 n 的值 (1 - 99) : 99
- 93326215443944096000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000000000000000
- C:\Bin>python x.py
- 93326215443944152681699238856266700490715968264381621468592963895217599993229915
- 6089414639761565182862536979208272237582511852109168640000000000000000000000
- C:\Bin>
复制代码
同样都是计算 99 的阶乘,前面是 C 的计算结果,后面是 Python 的计算结果。可以看出,前者计算误差很大,只有前 14 位是正确的。 |
|