关于对阶乘求和的问题!谢谢!
我现在想认真学习C语言!我刚刚起步,不免有些很笨的问题,谢谢兄弟们的指教!这是关于对阶乘求和的问题,题目是:
求1!+2!+3!+4!+5!+6!+7!+8!+9!.......+17!+18!+19!+20!
我写的代码是:
main()
{
int i,sum;
for(i=1,sum=0;i<=20;sum+=jiecheng(i),i++)
printf("%ld",sum);
}
int jiecheng (int n)
{
long a;
int n;
while(n<=20&&n>=1)
{a=20;n--;a*=(n-1);}
return(a);
}
编译凑合着通过了,但是运行后吓了我一跳!:)请看:
@fydream yuandaima]$ gcc -o fy 64.c
64.c: In function `jiecheng':
64.c:10: warning: declaration of `n' shadows a parameter
64.c:14:2: warning: no newline at end of file
[fydream@fydream yuandaima]$ ./fy
05181436103628721554430820725744259071803108861636270052414514884663292451814360569957966217723267358668725401047772154082902976880844129326584898447284[fydream@fydream yuandaima]$
谢谢兄弟们的帮助!:) 20的阶乘很大,long不够表达。
#include <stdio.h>
unsigned long long jiecheng(i)
{
int j;
unsigned long long k=1;
for(j=i;j>1;j--)
k=k*j;
return k;
}
main(int argc,char **argv)
{
int i;
unsigned long long sum=0;
for(i=1;i<=20;i++)
sum=sum+jiecheng(i);
printf("%llu\n",sum);
}
你打出的数字很长是因为你没加回车,所以连在一起了。 用递归 欧!这下好了!:)谢谢兄弟!:)用无符号长整型定义!我记住了!谢谢!!!:) 对整型数我在保重一下:
int就是signed short int
signed int =-2^15>2^15
unsigned int 0>(2^16)-1
short int 大少和signed int一样大
unsigned short int 大少和 unsigned int一样大
long int=-2^31>(2^31)-1
unsigned long int =0>(2^32)-11 好的!谢谢楼上的兄弟,帮助归纳!谢谢!:) 不知道有谁知道把上面的阶乘用java写一下啊 java与C++是一样的.java的各包,自己查一下资料,将自己觉得有用的记下来,相信对水平有所提高!
页:
[1]