阶乘.cpp

来自「/* author: qiaoger email: qiaoger@t」· C++ 代码 · 共 73 行

CPP
73
字号
/*
   author: qiaoger 
   email:  qiaoger@tom.com
	 date:   2005-1-7
  question:
  求 n! (n<=5000)
*/
#include<iostream.h>
const int MAX=5000;//
unsigned int CountOfDigit=0;//data 的个数

void mutiplay(int data[],int n)//求积
{
	int i;
	for(i=0;i<=CountOfDigit;i++)
		data[i]=data[i]*n;
}

void adjust(int data[])//调整:每个data 的存储范围:0~9999,即只表示4位
{
	int i;
	for(i=0;i<=CountOfDigit;i++)
		{
		  data[i+1]=data[i+1]+data[i]/10000;
			data[i]=data[i]%10000;
		}
	if(data[i]>0)
		CountOfDigit++;	
}

void print(int data[])//打印该数
{
	int i;
	i=CountOfDigit;
	cout<<data[i];
	i--;
	for( ;i>=0;i--)
		{
		if(data==0)
			cout<<"0000";
			if(data[i]<10)//不足4位,添0
				cout<<"000"<<data[i];
			 else
			   if(data[i]<100) 
					 cout<<"00"<<data[i];
				  else
						if(data[i]<1000)
							cout<<"0"<<data[i];
						 else
							 cout<<data[i];
		}
}

int main()
{
	int data[MAX];
  int i,n;
	for(i=0;i<MAX;i++)
		data[i]=0;
	//求n!
	cin>>n;
	data[0]=1;
	for(i=2;i<=n;i++)
	{
	  mutiplay(data,i);
		adjust(data);
	}
	print(data);

  cout<<"\ninput 0 to exit …";//方便中断看结果
	cin>>i;
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?