11个回答
展开全部
上面的程序都已经溢出了,INT哪能存储那么大的数呀,应该用数组来分割存储!!!!
#include <iostream.h>
int main()
{
int c[3]={1,0,0},m=2,t[3]={1,0,0};
for(m=1;m<=20;++m)
{
t[0]*=m;
t[1]*=m;
t[2]*=m;
t[1]+=(t[0]/10000000);
t[0]%=10000000;
t[2]+=(t[1]/10000000);
t[1]%=10000000;
c[0]+=t[0];
if(c[0]>10000000)
{
++c[1];
c[0]%=10000000;
}
c[1]+=t[1];
if(c[1]>10000000)
{
++c[2];
c[1]%=10000000;
}
c[2]+=t[2];
}
cout<<"1!+2!+3!+......+20!="<<c[2]<<c[1]<<c[0]<<endl;
return 0;
}
#include <iostream.h>
int main()
{
int c[3]={1,0,0},m=2,t[3]={1,0,0};
for(m=1;m<=20;++m)
{
t[0]*=m;
t[1]*=m;
t[2]*=m;
t[1]+=(t[0]/10000000);
t[0]%=10000000;
t[2]+=(t[1]/10000000);
t[1]%=10000000;
c[0]+=t[0];
if(c[0]>10000000)
{
++c[1];
c[0]%=10000000;
}
c[1]+=t[1];
if(c[1]>10000000)
{
++c[2];
c[1]%=10000000;
}
c[2]+=t[2];
}
cout<<"1!+2!+3!+......+20!="<<c[2]<<c[1]<<c[0]<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main()
{
int i,s0,s;
s0=1;
s=0;
for(i=1,i<=20;i++)/*循环次数*/
{
s0=s0*i;/*求i的阶乘*/
s=s+s0;/*求i的阶乘之和*/
}
printf("%ld",s);
}
{
int i,s0,s;
s0=1;
s=0;
for(i=1,i<=20;i++)/*循环次数*/
{
s0=s0*i;/*求i的阶乘*/
s=s+s0;/*求i的阶乘之和*/
}
printf("%ld",s);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
int
main
()
{
int
i,j;
long
sum=0,temp=1;
for(i=0;i<=20;i++)
{
for(j=1;j<=i;j++)
temp=temp*j;
\\for循环一次出来一个阶乘值
sum+=temp;
temp=1;
}
printf("1!+2!+...+20!=%ld",sum);
return
0;
}
int
main
()
{
int
i,j;
long
sum=0,temp=1;
for(i=0;i<=20;i++)
{
for(j=1;j<=i;j++)
temp=temp*j;
\\for循环一次出来一个阶乘值
sum+=temp;
temp=1;
}
printf("1!+2!+...+20!=%ld",sum);
return
0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题我在贴吧里回过。以下代码可以精确的加到22!。
#include
<iostream>
using
namespace
std;
main()
{
unsigned
int
c[3]={1,0,0},m=2,t[3]={1,0,0},temp;
for(;m<=20;++m)
{
t[0]*=m;
t[1]*=m;
t[2]*=m;
t[1]+=(t[0]/10000000);
t[0]%=10000000;
t[2]+=(t[1]/10000000);
t[1]%=10000000;
c[0]+=t[0];
if(c[0]>10000000)
{
++c[1];
c[0]%=10000000;
}
c[1]+=t[1];
if(c[1]>10000000)
{
++c[2];
c[1]%=10000000;
}
c[2]+=t[2];
}
cout<<"1!+2!+3!+......+20!="<<c[2]<<c[1]<<c[0]<<endl;
return
0;
}
名叫terry_tang的这位朋友,请教一下我的程序哪里错了?还是说你认为VC++6.0的编译器有问题?别告诉我说temp变量未使用啊。
#include
<iostream>
using
namespace
std;
main()
{
unsigned
int
c[3]={1,0,0},m=2,t[3]={1,0,0},temp;
for(;m<=20;++m)
{
t[0]*=m;
t[1]*=m;
t[2]*=m;
t[1]+=(t[0]/10000000);
t[0]%=10000000;
t[2]+=(t[1]/10000000);
t[1]%=10000000;
c[0]+=t[0];
if(c[0]>10000000)
{
++c[1];
c[0]%=10000000;
}
c[1]+=t[1];
if(c[1]>10000000)
{
++c[2];
c[1]%=10000000;
}
c[2]+=t[2];
}
cout<<"1!+2!+3!+......+20!="<<c[2]<<c[1]<<c[0]<<endl;
return
0;
}
名叫terry_tang的这位朋友,请教一下我的程序哪里错了?还是说你认为VC++6.0的编译器有问题?别告诉我说temp变量未使用啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询