计算10000!(或者是任一阶乘(10000以内))--C语言实现

例如:计算10000!

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()
{
   
	int n;
	scanf("%d", &n);    
	int x1 = 1;
	int i1 = 1;
	int cnt;
	int cnt1 = 0;
	int c[40000] = {
    0 };   //用于存储两个大数的乘积

	if (n <= 10) {
      //n是10以内直接算
		while (i1 <= n) {
   
			x1 *= i1;
			i1++;
		}
		printf("%d", x1);
	}
	else {
      //n大于10,将两个数存储在字符串中
		char a[6], b[40000];

		int d[10];
		b[0] = '3';    //b为10!的值的字符串形式
		b[1] = '6';
		b[2] = '2';
		b[3] = '8';
		b[4] = '8';
		b[5] = '0';
		b[6] = '0';
		b[7] = '\0';
		i1 = 11;
		int q1, w1, t1;
		t1 = i1;
		int j1;
		int k1;


		while (i1 <= n) {
        //从11开始计算
			for (q1 = 0; q1 <= cnt1; q1++) {
      //将c中的数字归零
				c[q1] = 0;
			}
			j1 = 0;
			k1 = 0;
			t1 = i1;
			while (t1 > 0) {
      //将i1分解成各个位数
				q1 = t1 / 10;
				w1 = t1 % 10;
				d[j1] = w1;
				t1 = q1;
				j1++;
			}
			for (j1 = j1 - 1; j1 >= 0; j1--) {
       //将i1以字符串形式存储在a中
				a[k1] = d[j1] + '0';
				k1++;
			}
			a[k1] = '\0';     //在字符串后要加\0,不然算不了a中的个数

			int i;
			int j, k, q;
			j = strlen(a);
			k = strlen(b);

			cnt = 0;
			int w, e, r;
			r = <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值