数组里面的元素按位置相加,但是结果有误差

#include <stdio.h>
#include <stdlib.h>
int main( )
{
int i=0,j=0,t=19,sum=0,num1[20],num2[20],num3[21];

printf("Please input num1[]:\n");
    for(i;i<20;i++)
      scanf("%d",&num1[i]);
printf("Please input num2[]:\n");
     for(j;j<20;j++)
      scanf("%d",&num2[j]);
//实现了数组数据的输入 ↑
 for(t;t>=0;t--)
 {
     sum=num1[t]+num2[t]+num3[t+1];
     if(sum<10)
     {
     num3[t+1]=sum;
    }
     else//进位
     {
     num3[t+1]=sum%10;
     num3[t]=1; 
    }   
 }
printf("array num is:\n");
 for(i=0;i<=20;i++)
    printf("%d",num3[i]);
    return 0;

}

img


要实现如图片所示的结果,可是我运行出来是 111111111197537874365

img


我刚才试了一下程序是没问题的,应该是初始化的问题