起始值不能定义为0,这样的话i*j=0了。以后就不能循环了										
					
	
	
	
			
沫沫、努力学习呀!c++我来了!
 程序代码:
程序代码:#include <stdio.h>
#define N 20
#define SIZE 50
int a[N][SIZE] = {{1, 1}, {1, 2}, {1, 6}};
void out(int s[])
{
    for (int i = 1;i <= s[0];printf("%d", s[i++]));
    puts("");
}
void Init(int n)
{
    int i, j = 1, temp = 0;
    for (i = a[n-1][0];i > 0;--i)
    {
        temp += a[n-1][i] * (n+1);
        a[n][j++] = temp % 10;
        temp /= 10;
    }
    while (temp)
    {
        a[n][j++] = temp % 10;
        temp /= 10;
    }
    a[n][0] = --j;
    for (i = 0;++i <= j;--j)
        temp = a[n][j], a[n][j] =
        a[n][i], a[n][i] = temp;
    
    printf("%2d! = ", n+1);
    out(a[n]);
}
void Add(int s[], int b[])
{
    int temp = 0, c[SIZE] = {0};
    int k = 1, i = s[0], j = b[0];
    
    for (;i && j;--i, --j)
    {
        temp += s[i] + b[j];
        c[k++] = temp % 10;
        temp /= 10;
    }
    while (i)
    {
        temp += s[i--];
        c[k++] = temp % 10;
        temp /= 10;
    }
    while (j)
    {
        temp += b[j--];
        c[k++] = temp % 10;
        temp /= 10;
    }
    while (temp)
    {
        c[k++] = temp % 10;
        temp /= 10;
    }
    s[0] = --k;
    for (i = 1;k;s[i++] = c[k--]);
}
int main()
{
    int i, b[SIZE] = {0};
    for (i = 3;i < N;Init(i++));
    for (i = 0;i < N;Add(b, a[i++]));
    
    printf("\n1! + 2! + ... + %d! = ", N);
    out(b);
    return 0;
}
										
					
	