C语言编程问题:求 1!+2!+3!+...+n!

编程:求1!+2!+3!+...+n!,要求n的值由键盘输入。题目是这样的,我编程是这样的:#includemain(){intn,i,x=1,sum=0;printf(... 编程:求 1!+2!+3!+...+n! ,要求n的值由键盘输入。 题目是这样的,我编程是这样的: #include main() { int n,i,x=1,sum=0; printf("n="); scanf("%d",&n); for(i=1;i<=n;i++) { x*=i; sum+=x; } printf("1!+2!+...+%d!=%d",n,sum); } 最后运行的时候,发现,当n取小一点的数的时候,比如3,4之类的,结果正确。 但是当n=17时,输出结果为负数 当n取更大数的时候,结果就为0了 请问问题出在哪里。。希望详细解答,在告诉我怎么改。。刚上C语言。。比较笨。。耐心一点 还有一个问题是int 和 long 有什么区别,详细一点。。 展开
 我来答
帐号已注销
2020-11-16 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:162万
展开全部

int和long分配的内存空间长度不一样,表示的数值范围不一样。比如可能int有32位的空间,long有64位的空间。n=17超出了整数的表示范围。

这跟编译器的实现方式有关,还与机器的位数有关。比如一个机器用8位表示整型,表示的范围是-128~127(-2^7 ~2^7 -1)。

同理可以计算32位整型的情况。如果超出了这个范围比如128,有的编译器处理的方式就是 -128.类似于一个环,129存储成 -127,long也是这个规律。但是c语言只保证long不小于int,32位机器上long也是32位的跟整型是一样的。

扩展资料:

C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。

参考资料来源:百度百科-c语言

紫荫牧含
2019-11-24 · TA获得超过1134个赞
知道小有建树答主
回答量:1441
采纳率:96%
帮助的人:6.2万
展开全部
把int改成float,
把%d换成%f,float比int算的数位多,更大的数用double和%lf
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1024程序员
2020-11-06 · TA获得超过374个赞
知道答主
回答量:457
采纳率:0%
帮助的人:22.8万
展开全部

C语言经典例子之求1+2!+3!+...+20!的和

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式