码程创客


私信TA

用户名:18760810529

访问量:1169

签 名:

等  级
排  名 27084
经  验 510
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 辽宁工程技术大学
专  业

  自我简介:


解题思路:

这道题就是按照一般的思路,通过循环来实现一个数的阶乘,再通过循环相加来得到结果,

但是,一开始在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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区