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;

}

  

 

你可能感兴趣的:(poj)