解题思路:
这道题就是按照一般的思路,通过循环来实现一个数的阶乘,再通过循环相加来得到结果,
但是,一开始在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语言代码)浏览:648 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:746 |
【蟠桃记】 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:840 |
IP判断 (C语言描述,蓝桥杯)浏览:1092 |
sizeof的大作用 (C语言代码)浏览:1447 |
循环入门练习6 (C语言代码)浏览:952 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:696 |
1035 题解浏览:776 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:650 |