C求1!+2!+3!+4!+……+20!的值

程序这样写可不可以?#include<stdio.h>voidmain(){intn,i=1,j=0;for(n=1;n<=20;n++){i=i*n;j=j+i;}pr... 程序这样写可不可以?
#include <stdio.h>
void main()
{
int n,i=1,j=0;
for(n=1;n<=20;n++)
{
i=i*n;
j=j+i;
}
printf("%d\n",j);
}
展开
 我来答
百度网友8cb2616
2012-02-14 · TA获得超过162个赞
知道答主
回答量:118
采纳率:0%
帮助的人:88.6万
展开全部
可以的,可是到最后 i 和 j 的值都很大。超过10的18次方。你用实型变量定义它就会造成数据越界产生结果错误。建议你将i 和 j 的类型改成 double型(double i=1,j=0;).
并将最后一句改成 printf("%lf\n",j);或者printf("%e\n",j);
kaixingui2012
推荐于2017-09-15 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:7779万
展开全部
#include <stdio.h>
void main()
{
int n;
double i=1,j=0;//int类型有最大值限制,你的数据会超出它所表表示的最大值,所以换成double类型
for(n=1;n<=20;n++)
{
i=i*n;
j=j+i;
}
printf("%.0lf\n",j); //%.0lf表示不输出小数部分
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28b4182
2012-02-14 · TA获得超过7224个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:2243万
展开全部
你的程序是对的
#include <stdio.h>
void main()
{
int n,i=1,j=0;
for(n=1;n<=20;n++)
{
i=i*n;
j=j+i;
}
printf("%d\n",j);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
867773467
2012-02-14 · TA获得超过180个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:159万
展开全部
用int数据会溢出,用long吧,基本没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式