永发信息网

跪求:c语言中,求100!的代码!

答案:6  悬赏:10  手机版
解决时间 2021-03-02 17:25
  • 提问者网友:愿为果
  • 2021-03-02 01:35
跪求:c语言中,求100!的代码!
最佳答案
  • 五星知识达人网友:佘樂
  • 2021-03-02 02:04
#include
#define M 10000
#define N 2000
int p=1;
void integer_product(int *a,int n)
{
int i,j,k;
for(j=2;j<=n;j++)
{
k=0;
for(i=0;i a[i]*=j;
for(i=0;i {
a[i]+=k;
k=a[i]/M;
a[i]%=M;
}
if(k)
{
p++;
a[p-1]+=k;
}
}
printf("%d",a[p-1]);
for(i=p-2;i>=0;i--)
printf("%04d",a[i]);
printf("\n");
}
int main()
{
int a[N]={0},n,i;
while(scanf("%d",&n),n)
{
for(i=0;i a[i]=0;
a[0]=1;p=1;
integer_product(a,n);
}
return 0;
}
高精度做法,要求更大的 把 数组 开大些就好,输入0结束
全部回答
  • 1楼网友:煞尾
  • 2021-03-02 07:28
上面给的答案都有问题啊!根本就不能正确输出100!的值。
#include
void main()
{
int m,i;
long s;
i=1;
printf("请输入100:\n");
scanf("%d",&m);
while(i<=m)
{s=1;
for(int j=1;j<=i;j++)
s=s*j;
i++;
}
printf("100的阶乘为:%le\n",s);

}
此题要考虑溢出问题,因为100!很大,所以在输入和输出时要格外小心。楼主试试看了。
  • 2楼网友:渡鹤影
  • 2021-03-02 07:15
这个问题你应该自己想想的吧,因为不是特别难的问题 吧?
答案如下:
#include
main()
{
long i,s=1;
for(i=1;i<=100;i++)
s=s*i;
printf("%le",s);
}
  • 3楼网友:神也偏爱
  • 2021-03-02 05:39
这些能求100!吗?不会溢出??真是胡闹!
这些办法都没用啦,别long了,32位处理器long和int一样,long long也不够。大数算法到这里来看一下

参考资料:http://bbs.emath.ac.cn/tag-%B4%F3%CA%FD.html

  • 4楼网友:纵马山川剑自提
  • 2021-03-02 04:21
#include
main()
{
float j=1;
int i ;
for(i=1;i<=100;i++)
{
j=j*i;
}
printf("%d",j);
}
上面一位的有些错误
  • 5楼网友:不想翻身的咸鱼
  • 2021-03-02 02:43
#include
main(){
double i,t=1;
for(i=1;i<100;i++)
{
t=i*t; //i*1~2*1~3*2~4*6~~~~
}
printf("\nThe total is :");
printf("%lf\n",t);
}
说真的,那么多0有意思吗???
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯