解题思路:
这道题就是按照一般的思路,通过循环来实现一个数的阶乘,再通过循环相加来得到结果,
但是,一开始在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 人评分