解题思路:
这道题就是按照一般的思路,通过循环来实现一个数的阶乘,再通过循环相加来得到结果,
但是,一开始在DEV中编译通过,但后来通过检查,发现在输入n=19时是一个负数,就说明出错,是所输出的数超出最大限,故将int改为long long 还有要将%d改为%lld,这是最关键的,就是输出有符号64位。
%I64d 在蓝桥杯训练系统中可以通过,但在这里不能,不知道为什么
注意事项:
%d 有符号32位整数
%lld 有符号64位整数
%llx有符号64位16进制整数
%u 无符号32位整数
参考代码:
#include<stdio.h>
int main()
{
long long i,s=1,n,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s*i;
sum=sum+s;
}
printf("%lld",sum);
return 0;
}
0.0分
0 人评分
校门外的树 (C++代码)浏览:870 |
求圆的面积 (C++代码)这里推荐使用宏定义浏览:1911 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:534 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:527 |
Hello, world! (C语言代码)浏览:1201 |
简单的a+b (C语言代码)浏览:760 |
简单的a+b (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1311 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:549 |
字符逆序 (C语言代码)浏览:460 |