阶乘求和(long long)

求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。

本题思路很清晰,唯一值得注意的是他的数据存储问题,分析题目,可以知道涉及数据类型为整型,我们不能使用double这类的浮点型,因为,double在存储数据并不是整的,比如存储0,double实际存储为0.00000001,这就导致了我们使用浮点型计算出来的有误差!所以,我们只能采用整型。

但是不能使用int,long int这类,因为他们的存储范围不足以存储sn的值。

此时,long long就派上了用场,当然你也可以用unsigned long long。
值得一提的是他们的输入输出格式,long long:%lld; unsigned long long :%llu。

具体的范围和格式说明请百度搜索,这边我推荐一个:https://blog.csdn.net/mafuli007/article/details/7325510
下面是此题的解,不唯一。

#include

int main( void ) {
    int n;
    long long Sn = 0;

    scanf("%d", &n);
    for( long long  num = 1, num1 = 1; n > 0; n-- ){
        Sn += num *num1;
        num1 *= num;
        num++;
    }
    printf("%lld\n", Sn);

    return 0;
}

你可能感兴趣的:(C语言,c语言)