c语言中求输入n的阶乘的位数咋办???谁有好的方法

2025-03-09 13:31:17
推荐回答(2个)
回答1:

思路:n! = n * (n-1) * (n-2) * ... * 3 * 2 *1

要求其位数,可以求它以10为底的对数再向上取整

源代码:

#include 

#include 

#include 

int main (int argc, char *argv[])

{

 int i, n;

 double sum;

 sum = 0.0;

 scanf("%d", &n);

 for (i = 2; i <= n; i++)

 {

  sum += log10(i);

 }

 printf ("%d\n", (int)ceil(sum));

 return EXIT_SUCCESS;

}

运行结果:

$ ./calc 

3

1

$ ./calc 

4

2

$ ./calc 

5

3

$ ./calc 

6

3

$ ./calc 

8

5

回答2:

#include
#include
void main()
{int i,n,d;
double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{ if(i s=s+log10(2);
else
d=(int)(s+log10(2))+1;}
printf("%d\n",d);}