解题思路:
首先题目要求的是阶乘,阶乘也就意味着前一项比后一项多一,由此,使用循环为最佳,
题目最主要是阶乘怎么算,每个阶乘的求和,这是题目的关键,
定义四个变量,i,n,,s,sum;
i控制循环,n为输入的阶乘数,s为中间过度变量,sum为每次的求和值。赋初值s=1;sum=0;
s=s*i;sum=sum+s;为关键代码
还需要加一个判断n是否大于20的条件;
注意事项:
循环变量i的初始值必须为1,否则的话s的值永远为0;
sum在循环体外输出,
参考代码:
# include<stdio.h> int main() { int i,n,sum=0,s=1; scanf("%d",&n); if(n<20) { for(i=1;i<=n;i++) { s=s*i; sum=sum+s; } printf("%d",sum); } return 0; }
0.0分
72 人评分
#include<stdio.h> int main() { int Sn, n,An; int i; An = 1; Sn = 0; scanf("%d", &n); if (n < 20) { for (i = 1; i <= n; i++) { An = An * i; Sn = Sn + An; } printf("%d", Sn); } return 0; } 这个是哪里错了
#include<stdio.h> int factorial_fun(int n); int main(void) { int n,i,Sn=0; printf("Please enter a number(no more than 20):"); scanf("%d",&n); for(i=1;i<=n;i++) { Sn+=factorial_fun(i); } printf("%d",Sn); return 0; } int factorial_fun(int n) { int result = 1, i; for(i=n; i>=1; i--) result = result * i; return result; }
#include<stdio.h> int main() { int n,i,sn=0,t=1; scanf("%d",&n); if(n<=20) { for(i=1;i<=n;i++) { t=t*i; sn=sn+t; } printf("%d",sn); } return 0; } 这个代码为什么会显示答案错误呢?
小菜 2018-11-26 22:10:40 |
楼下一位仁兄回答了,将最后的求和类型改为long double
#include<stdio.h> int main() { int n,i; long double sn=1,sum=0; scanf("%d",&n); if(n<=20) { for(i=1;i<=n;i++) { sn=i*sn; sum=sum+sn; } } printf("%.0Lf",sum); return 0;} 回答上面问题 用long double 就不会出现这个问题
参考代码提交上去是答案错误
小菜 2018-05-29 17:28:28 |
不知道网页的编译器是什么编译器,你在你自己的编译器运行绝对是正确的
寡人有疾 2018-05-29 19:19:04 |
@MissD 或许是数据长度问题?用double就没问题
小菜 2018-05-29 21:57:50 |
@lal920965154 好的,我改一下运行试试。
寡人有疾 2018-05-29 23:24:13 |
@MissD 我看了其他的题解大部分都强调数据精度问题,组成原理忘得差不多了,没法验证
寡人有疾 2018-05-29 23:28:54 |
@MissD 这个网站的视频教程,在ACM输入输出格式那一节有讲这道题,确实是要考虑数据问题
小菜 2018-05-30 12:14:29 |
@lal920965154 好的,那就是我没有注意到这一点,谢谢指点。
Arturia 2018-07-19 15:00:10 |
输出超出限制了 你试试19 会出现一个负数
小菜 2018-07-20 16:20:40 |
@fanzhiwei 定义的数据类型改一下就可以
三进制小数 (C++代码)(第11位大于1.5才能进位)浏览:1140 |
C语言训练-计算1977!* (C语言代码)浏览:890 |
程序员的表白 (C语言代码)浏览:1458 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:644 |
C语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:471 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:850 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1592 |
WU-输出正反三角形 (C++代码)浏览:1018 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:919 |
关于C语言变量位置的问题浏览:272 |
小菜 2018-11-26 22:10:16 |
楼下一位仁兄回答了,将最后的求和类型改为long double