c语言用do while 语句写1x 2x 3 x 4 ....x 100,就是100的阶乘,怎么

c语言用do while 语句写1x 2x 3 x 4 ....x 100,就是100的阶乘,怎么写?

你好,100的阶乘结果大概有150位,用简单的do while语句是无法计算准确的结果的(结果最后100多位全是0,而正确的结果0也就20个左右)。

程序1:

#include   <stdio.h> 

#define    M   1000

 main()

 {  

  int a[M], i, n, j, flag = 1; 

  printf("n=");  

  scanf("%d",&n);  

  printf("n!=");   

  a[0] = 1;  

  for(i = 1; i < M; i++)

   a[i] = 0;  

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

  {    

   for(i = 0; i < flag; i++)

    a[i] *= j;    

   for(i = 0; i < flag; i++) 

    if(a[i] >= 10)     

    {      

     a[i+1] += a[i]/10;    

     a[i] = a[i] % 10;       

     if(i == flag-1) 

      flag++; 

    }    

 }   

  for(j = flag - 1;j >= 0; j--)

   printf("%d", a[j]);

 }

 程序2:

#include <stdio.h>

#include <string.h>

void f(int n)

{

 void cheng(char s[],int n);

 void jia(char s1[], char s2[]);

 int jinwei=0, bai, shi, ge, num;

 char b[1000], c[1000];

 static char a[1000]={"1"};

 strcpy(b,a);

 strcpy(c,a);

 num=strlen(a);

 bai = n/100;

 shi = n%100/10;

 ge = n%10;

 cheng(a, ge);

 if(shi)

 {

  cheng(b, shi);

  num=strlen(b);

  b[num]=48;

  b[num+1]=0;

  jia(a, b);

 }

 if(bai)

 {

  cheng(c, bai);

  num=strlen(c);

  c[num]=48;

  c[num+1]=48;

  c[num+2]=0;

  jia(a, c);

 }

 printf("%d%d%d!=",bai,shi,ge);

 puts(a);

}

void jia(char s1[], char s2[])

{

 int i, m, n, k, jinwei=0;

 m=strlen(s1);

 n=strlen(s2);

 if(m>=n)

 {

  for(i=n; i>=0; i--)

   s2[i+m-n]=s2[i];

  for(i=0; i<m-n; i++)

   s2[i]=48;

 }

 else

 {

  for(i=m; i>=0; i--)

   s1[i+n-m]=s1[i];

  for(i=0; i<n-m; i++)

   s1[i]=48;

 }

 for(i=m-1; i>=0; i--)

 {

  k=s1[i]+s2[i]+jinwei-96;

  s1[i]=k%10+48;

  jinwei=k/10;

 }

 if(jinwei)

 {

  for(i=m; i>=1; i--)

   s1[i]=s1[i-1];

  s1[0]=49;

  s1[m+1]=0;

 }

}

void cheng(char s[], int x)

{

 int i, m, n, jinwei=0;

 n=strlen(s);

 for(i=n-1; i>=0; i--)

 {

  m=(s[i]-48)*x+jinwei;

  s[i]=m%10+48;

  jinwei=m/10;

 }

 if(jinwei)

 {

  {

   for(i=n; i>=1; i--)

    s[i]=s[i-1];

   s[0]=jinwei+48;

  }

  s[n+1]=0;

 }

}

void main()

{

 int i, n;

 printf("请输入1--150之内的整数!");

 scanf("%d",&n);

 if(n>0&&n<=150)

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

   f(i);

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-08
#include <stdio.h>
#include <math.h>
void main()
{
double sum=1, i=1;
do
{
sum = sum * i;
i++;
}while(i<=100);
printf("%lf\n",sum);
}

追问

哦,为什么要用double sum 呢?我用的int。。。

void main() 我也用的int main 。。。

追答

int一般在编译器中存放的是4个字节,4个字节的存储范围小于100的阶乘,所以用double8个字节
int main 也行的,那么你就在 printf("%lf\n",sum);这条语句下加return 0;

追问

哦哦。这样哦。谢谢啊。

本回答被提问者采纳
第2个回答  2013-10-09

int i=1;


double result=1;

do

{

result=result*i;

i++;

}while(i!=101);


//result 的结果就是阶乘的结果

c语言用do while 语句写1x 2x 3 x 4 ...x 100,就是100的阶乘,怎么
你好,100的阶乘结果大概有150位,用简单的do while语句是无法计算准确的结果的(结果最后100多位全是0,而正确的结果0也就20个左右)。程序1:include <stdio.h> #define M 1000 main() { int a[M], i, n, j, flag = 1; printf("n="); scanf("%d",&n); pr...

1x2x3x4...100怎么算
1*2*3*4...*100=100的阶乘,即100!1*2*3等于3的阶乘,即3!操作步骤 1:打开计算器程序 (开始-〉程序-〉附件-〉计算器)2:在计算器中选择"科学型"(计算器默认为标准型,无法计算阶乘,因此要选择科学型。在计算器中的"查看"菜单中选科学型)3:输入数字100 4:再输入阶乘符号,它...

1x2x3x4x...x19用简便方法怎么算
例如:所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 例如所要求的数是6,则阶乘式是1×2×3×..×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1×2×3×?×n,设得到的积是x,x就是n的阶乘。

1乘2乘3乘4...乘100等于几
=可以用乘法交换率 =(1x2x3x4x5x6x7x8x9x10)x(11x12x13x14x15x16x17x18x19x20)x(21x22x23x24x25x26x27x28x29x30)x(31x32x33x34x35x36x37x38x39x40)x(41x42x43x44x45x46x47x48x49x50)x(51x52x53x4x55x56x57x58x59x60)x(61x62x63x64x65x66x67x68x69x70)x(71x72x73x74x...

1X2X3X4X5X6等等X10O,这100个数的乘积是多少?
高中排列组合部分的内容,答案是100的阶乘,即:100! .

1x2x3x4一直乘到n的公式是什么?
1x2x3x4一直乘到n的公式为阶乘公式,其表达形式为:n(为当前数所求的阶乘)=n(当前数)*(n-1)。阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24。正整数1到n的连乘积,叫做n的阶乘,记作“n!”。即n=1x2x3x……xn。阶乘是基...

1x2x3……x100等于多少呢?
这个数有点大。计算到100为: 9.3326E+157

C语言1乘到100怎么编写
显示的是近似值)。代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"int main(void){ int i; double sum; for(sum=i=1;i<101;sum*=i++); printf("1x2x3x...x100 = %e\\n",sum); return 0;} ...

1x2x3x4x...x19用简便方法怎么算
公式:n!=n*(n-1);阶乘的计算方法:阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。阶乘函数通常被定义为n!=n(n-1)(n-2)……1。但是这个定义...

1x2x3x4一直乘到100用数列求简式
1x2x3x4一直乘到100用数列求简式 =100!, ! 阶乘符号 n!=n(n-1)(n-2)...X3X2X1

相似回答