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
");
    printf("- -----------
");
    for(n=0;n<10;n++)
    {
        double sum=0;
        for(i=n;i>=0;i--)
        {
            sum+=(double)1/factorial(i);
        }
        printf("%d %.10g
",n,sum);
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/gabygoole/p/4482068.html