100!的精确值是多少?编好程序后,测试没有输出?请大侠们帮忙看看
100!的精确值是多少?#include <stdio.h>
#include <stdlib.h>
#define BAI 100
#define WU 5
#define SW 100000
#define W 10000
#define Q 1000
#define S 10
void js_jie ( int [] , int , int ) ; //计算阶
void sc_jieguo ( int [] , int ) ; //输出结果
int pdws ( int[] , int ) ; //判断元素的数值位数
int main ()
{
int jieguo[BAI] , i = BAI , n = BAI ;
//计算并显示 阶 的结果;
js_jie(jieguo , i , n );
sc_jieguo ( jieguo , i ) ;
system ( "pause" ) ;
return 0 ;
}
void js_jie ( int jieguo[] , int i , int n )
{
int y ;
for ( i = 0 ; i < n ; i ++ )
{
jieguo[i] = 0 ;
}
jieguo[0] = 1 ;
for ( int x = 1 ; x <= n ; x ++ )
{
//判断数组元素存放数值最大的i值
for ( i = x-1 ; i >= 0 ; i -- )
{
//确定i值后进行计算,把i赋值给y做记号
if ( jieguo[i] > 0 )
{
y = i ;
int y1=0 , y2=0 ;
//从i=0的数组元素开始进行计算,直到i=y+1
for ( i = 0 ; i <= y+1 ; i ++ )
{
y1 = ( jieguo[i] * x + y2 ) % SW ;
y2 = jieguo[i] * x / SW ;
}
}
}
}
return ;
}
void sc_jieguo ( int p[] , int i )
{
int x ;
for ( x = i ; x >= 0 ; x --) //找出
{
if ( p[x] > 0 ) break ;
}
//计算后输出
printf("100!的精确值是%d",p[x]);
for ( int y = x - 1 ; y >= 0 ; y -- )
{
switch( pdws(p , y) )
{
case 5 :break;
case 4 :printf("0") ;break;
case 3 :printf("00") ;break;
case 2 :printf("000") ;break;
case 1 :printf("0000") ;break;
}
printf("%d",p[y]);
}
printf("\n");
}
int pdws ( int p[] , int n )
{
int i ;
i = ( p[n]/W > 0 ) ? WU : ( ( p[n]/Q > 0 ) ? ( WU - 1 ) : ( (p[n]/BAI > 0 ) ? ( WU - 2 ) : ( p[n]/S > 0 ? ( WU - 3 ) : ( WU - 4 ) ))) ;
return i ;
}