poj--1517
n从0取到9,一个for循环,n++,n=0,n<=9
n=4,求1/4!+1/3!+1/2!+1/1!+1/0!
需要一个for循环,i=n,i>=0,i--
sum+=factorial(i)
即是第一个for循环定下一个n,第二个for循环用这个值递减到0
WA几次:
技巧:%g可以用来省略多余的0,如1.000000,我定义了浮点,可我就%g下,输出1
发现:1.%.10g小数点后只有9位,有的第九位是0,小数点后就只有8位
2.发现c语言的特性:对的1:
int main() { double a; int temp=9; a=1.0/temp; printf("%lf",a); }
对的2:
int main() { double a; int temp=9; a=(double)1/temp; printf("%lf",a); }
错的:
int main() { double a; int temp=9; a=(double)(1/temp); printf("%lf",a); }
代码如下:改天看大数阶乘
#include <stdio.h> #include <stdlib.h> int factorial(int index) { int i,temp=1; if(index==0) return 1; else{ for(i=index;i>0;i--) { temp=temp*i; } return temp; } } int main() { int n,i; printf("n e\n"); printf("- -----------\n"); for(n=0;n<10;n++) { double sum=0; for(i=n;i>=0;i--) { sum+=(double)1/factorial(i); } printf("%d %.10g\n",n,sum); } return 0; }