C语言做100的阶乘

提示usigned long型存不下!我不会。
溢出溢出!
回答者:wanglongzhen的思路还行,和我们老师提示的一样。
后面几楼的都行不通。
我们老师说这道题搞定就可以去华为上班了!!!
______________________________________________________
6楼加点注释好不,转晕了
______________________________________________________
98C语言标准中已经要求有返回值,不能有void

#define MAXLEN 300/*假设做的是300的阶乘,自己可修改*/
#define MAXSUM 300/*用来存放阶乘结果的数组最大长度*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,n,sum,s;
int a[MAXSUM];
for(i=0;i<MAXSUM;i++)
{
a[i]=0;
}//数组赋初值
a[0]=1;
for(i=1;i<=MAXLEN;i++)
{
for(j=MAXSUM-1;j>=0;j--)
{
if(a[j]!=0)
{
n=j+1;
break;
}
}//确定阶乘结果保存到数组中,存到数组的第几个元素
for(k=0;k<n;k++)
{
a[k]=a[k]*i;
}//对存入数组中的数进行乘法运算
for(k=0;k<n;k++)
{
sum=a[k];
if(sum/100>0)
{
a[k]=sum%100;
a[k+1]=a[k+1]+sum/100;
}
}//乘法完成后进行进位
}
for(s=n;s>=0;s--)
{
if(a[s]>=10)
printf("%d",a[s]);
else printf("0%d",a[s]);
}//打印完成的阶乘结果(由于03在数组中只显示3故进行相关操作补足
printf("\n");
}
测试通过 ,够详细了吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-15
#include<stdio.h>
#define Maxlen 10000
#define N 100 //阶数100
int mult(int num[],int len,int n)
{
int i,rem=0;
for(i=0;i<len;i++)
{
rem+=num[i]*n;
num[i]=rem%10;
rem=rem/10;
}
if(rem>0)
{
num[len]=rem%10;
len++;
rem=rem/10;
}
return len;
}
main()
{
int num[Maxlen];
int len=1,i;
num[0]=1;
for(i=2;i<=N;i++)
len=mult(num,len,i);
for(i=len-1;i>=0;i--)
printf("%d",num[i]);
printf("\n");
}
第2个回答  2006-11-06
main()
{
long double m=1;
int i;
for(i=1;i<=100;i++)
m=m*i;
printf("%e\n",m);

}
科学计数法比较好看些,我认为这样还好些
第3个回答  2006-11-06
你换double型
#include <iostream.h>

void main()
{
double sum;
sum=1;
for(int i=1;i<=100;++i)
{
sum*=i;
}
cout <<sum;
cout <<endl;
}
第4个回答  2020-06-04
#include<stdio.h>
#define
Maxlen
10000
#define
N
100
//阶数100
int
mult(int
num[],int
len,int
n)
{
int
i,rem=0;
for(i=0;i<len;i++)
{
rem+=num[i]*n;
num[i]=rem%10;
rem=rem/10;
}
if(rem>0)
{
num[len]=rem%10;
len++;
rem=rem/10;
}
return
len;
}
main()
{
int
num[Maxlen];
int
len=1,i;
num[0]=1;
for(i=2;i<=N;i++)
len=mult(num,len,i);
for(i=len-1;i>=0;i--)
printf("%d",num[i]);
printf("\n");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网