问题遇到的现象和发生背景
输入一个1000以内的正整数n,输出n的阶乘,有多组输入
问题相关代码,请勿粘贴截图
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//用结构体储存运算结果 len为数字长度 每一位存在d[]中
struct bign{
int d[1000];
int len;
bign(){
memset(d,0,sizeof(d));
len=0;
}
};
bign multi(bign a,int n){
bign temp;
int carry=0,i,t;
for(i=0;i<a.len;i++){
t=carry+n*a.d[i];
temp.d[temp.len++]=t%10;
carry=t/10;
}
//余数不为0时逐位放进数组中
while(carry!=0){
temp.d[temp.len++]=carry%10;
carry/=10;
}
return temp;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int i;
bign a;
a.d[0]=1;
a.len=1;
//初始化a 使其初值为1 这样如果n为0或者1 结果就是1 否则就从2开始依次乘
for(i=2;i<=n;i++){
a=multi(a,i);
}
for(i=a.len-1;i>=0;i++){
printf("%d",a.d[i]);
}
printf("\n");
}
return 0;
}
运行结果及报错内容
输出是一串很长的数字