算一个数的阶乘(例如100的阶乘)

输入一个数并计算它的阶乘。

输入样例:

100

输出样例:

100的阶乘为:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

One Possible Answer:

#include<stdio.h>
# define N 1000
int legion(int v[],int x,int n)
{
	int i,cp,s=N-2,j,k;
	v[N-1]=1;
	for(i=1;i<n+1;++i){
		cp=0;
		/*
		以下这个循环是关键步骤
		用到了数学的进位思想,
		其中的s为岗哨,cp为向后要进的位数,且cp可能不仅仅是个位数。
		因为要进位,所以要从所定义的数组的最后一个单元开始计算,
		所以上方先定义v【N-1】为1 
		*/
		for(j=N-1;j>s;--j){
			k=v[j]*x+cp;
			v[j]=k%10;
			cp=k/10;			
		}
		/*
		cp如果不一位一位向数组后面的单元里存储的话,
		就可能会因为在循环中cp的值过大而导致出现负数,
		致使程序出错,所以以下采用while循环来往后一位一位存储它。 
		*/
		while(cp){
			v[s--]=cp%10;
			cp=cp/10;			
		}
		--x;		
	}
	return s;	
}


int main(void)
{
	int v[N],x,n,s,i;
	printf("请输入需要计算阶乘的数:");
	scanf("%d",&x);
	n=x;
	s=legion(v,x,n);
	printf("%d的阶乘为:",n);
	for(i=s+1;i<N;++i){
		printf("%d",v[i]);
	}
	printf("\n");
	return 0;
 } 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值