题目要求:输入一个正整数n(n<=100),输出1!+2!+3!+......+n!的值。
编程实现:
# include <stdio.h>
# define N 10000
int main() {
int n, d = 1, t = 1; //n:前n项;d当前项阶乘位数;t当前阶乘累加和位数
int A[N] = {1}, Sum[N] = {1}; //初始化数组A和Sum首元素为1
scanf("%d", &n);
for(int i = 2; i <= n; i++){ //循环计算1~n阶乘累加和
for(int j = 0; j < d; j++){
A[j] *= i;
}
for(int j = 0; j < d; j++){ //数组元素都更新为一位 (满10进1)
if(A[j] >= 10){
A[j+1] += A[j]/10;
A[j] %= 10;
if(j == d-1){ //更新数组A中元素个数(数的位数)
d++;
}
}
}
for(int j = 0; j < d; j++){ //计算数组Sum的元素(有可能大于10)
Sum[j] += A[j];
}
for (int j