C语言阶乘新算法
虽然还是用递归来进行运算,但是,由于有些数字运算量大,容易溢出,所以采用数组来存放数据
首先打开VC++6.0
选择文件,新建
选择C++ source file 新建一个空白文档
首先声明头文件,和定义常量
#include
#include
#define MAXARRAY 1000/*定义数组的最大位数*/
定义一个数组,存放数据,声明变量
用循环来进行判断是否输入数据,然后进行计算
while(1)
{
/*输入要计算的整数*/
while(1)
{
printf("Please input the integer to compute:\n");
scanf("%d",&n);
if(n<0)
{
printf("Please input an integer greater -1\n");
continue;
}
else
break;
}
/*初始化结果数组和进位数组*/
fac=1;
add=0;
for(j=1;j<=MAXARRAY-1;j++)
{
fac[j]=0;
add[j]=0;
}
top=0;
for(i=1;i<=n;i++)
{
/*计算进位数组add*/
for(j=0;j<=top;j++)
{
fac[j]=fac[j]*i;
if(j==0)
add[j]=fac[j]/10;
else
add[j]=(fac[j]+add[j-1])/10;
}
/*更新top的值*/
if(add[top]>=1)
top++;
/*计算结果数组fac*/
for(j=0;j<=top;j++)
{
if(j==0)
fac[j]=fac[j]%10;
else
fac[j]=(fac[j]+add[j-1])%10;
}
}
/*输出结果数组fac*/
printf("\n%d!=",n);
for(j=top;j>=0;j--)
{
printf("%d",fac[j]);
}
printf("\n\n");
printf("Please input 'c' to continue.\n");
ch=getch();
if(ch!='c')
break;
}
return 0;
}
运行结果
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/life/180639.html