1到20的阶乘 C语言

Python015

1到20的阶乘 C语言,第1张

递归就行了,问题是阶乘1到20已经溢出了unsigned

long

int的最大数值,1到16就已经溢出了,何况你的还是有符号的,比无符号的少差不多一半.

这个用递归实现的.

#include<stdio.h>

void

main()

{

int

fac(int

x)

unsigned

long

int

y

int

x

printf("请输入一个整数:")

scanf("%d",&x)

y=fac(x)

printf("%ld\n",y)

}

int

fac(int

x)

{

unsigned

long

int

y

if(x==1)

{

y=1

}

else

y=fac(x-1)*x

return

y

}

将1到20的阶乘累加的C语言程序如下:

#include<stdio.h>

#include<string.h>

long long getdata(long long n){ 

    long long sum = 1

    while(n){        

        sum*=n--

    }

    return sum

}

int main(){  

    long long sum = 0

    long long nums = 20

    while(nums){      

        sum+=getdata(nums--)

    }

    printf("%lld",sum)  

}

你的程序有点乱,也有的错的地方,比如一开始的int unit51()不应该是int main()吗?还有倒数第三行printf("1到20的阶乘和为:\n",sum)也是错的,应该改为printf("1到20的阶乘和为:%d\n",sum)但是貌似这样最后输出的也只有一个数而不是1到20的阶乘,最后一点,20的阶乘是一个非常大的数,用int根本不行。程序就不给你改了,需要的话我给你写一个。