高手过来看一下
#include <stdio.h>#include <string.h>
#define M 1000
char jieguo[M]={0};
void add(char a[M])
{
int jinwei=0;
for(int i=0;i<strlen(jieguo);i++)
{
if(jieguo[i]+(a[i]==0? '0':a[i])-'0'-'0'+jinwei<=9)
{
jieguo[i]=jieguo[i]+(a[i]==0? '0':a[i])-'0'+jinwei;//直接相加并加上进位
jinwei=0;
}else
{
jieguo[i]=jieguo[i]+(a[i]==0? '0':a[i])-'0'+jinwei-10;//直接相加并去掉进位
jinwei=1;
}
}
jieguo[strlen(jieguo)]=(jinwei==1? '1':0);
}
void calc(int n)//jieguo乘以n
{
char temp[M]={0};
for(int j=0;j<100;j++)
{
temp[j]=jieguo[j];
}
for(int i=0;i<n-1;i++)
{
add(temp);
}
return;
}
int main()
{
jieguo[0]='1';
//求80的阶乘
for(int i=1;i<=80;i++)
{
calc(i);
}
//输出结果
for(int j=strlen(jieguo)-1;j>=0;j--)
{
printf("%c",jieguo[j]);
}
printf("\n");
return 0;
}
算到70的阶乘还对的,到80开始就有错了,望高手找一下错误呀