可怕的阶乘

本文介绍了一段使用C语言实现的代码,该代码用于计算一个整数的阶乘,并将结果存储为字符串。通过遍历从2到输入整数之间的所有整数,逐个相乘累加,最终得到阶乘结果。为了防止溢出,使用了一个临时变量和进位标志来精确计算。计算结果被逆序存储到字符串中,并以空字符结束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span style="font-family: Arial, Helvetica, sans-serif;">#include <stdlib.h></span>
#include <stdio.h>
#include <string.h>
#include "oj.h"

void CalcNN(int n, char *pOut)
{
	if(0 == n || 1 == n)
	{
		pOut[0] = 1;
		pOut[1] = '\0';

	}
	else
	{
		int product[1000] ;
		memset(product, 0, sizeof(int) * 1000);

		int temp = 0;	//存储临时变量
		int carry = 0; //进位标志
		int len = 1;    //数组长度

		product[0] = 1;

		for ( int i = 2; i <= n; ++i)
		{
			carry = 0;
			for (int j = 0; j < len; ++ j)
			{
				temp = product[j] * i + carry;
				product[j] = temp % 10;
				carry = temp /10;
			}
			while(carry != 0)
			{
				product[len] = carry % 10;
				carry /= 10;
				len ++;
			}
		}

		for (int i = 0; i < len; ++i)//逆序存储
		{
			pOut[i] = product[len - i -1] + '0';
		}
		pOut[len] = '\0';

	}


	return;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值