结果是a:Ti_sacporm b:Tss_pgm 运行的过程中当i=0时,a[0]=b[0]=‘\0’是怎么把T搞出来的,这两个运行的结果前面的T是怎么来的

下列程序运行时输入:This_is_a_C_Program! 运行结果为: __________  
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[81], a[81], b[81];
 int n, i, j=0, k=0;
 gets( str );
 n=strlen( str );
for ( i=0; i<n; i++ )
{
    if ( i%2==0 )  a[j++] = str[i];
    if ( i%3==0 )   b[k++] = str[i];
}
a[j] = b[k] = '\0';
printf("%s ", a );
 puts( b );
 return 0;
}

循环里每次往a, b添加字符时,j, k都会自增,所以循环结束后,j, k指向字符串的结尾,然后添加'\0'
i == 0是,两个if条件都满足,所以a, b里都有字符T


for ( i=0; i<n; i++ )
{
    if ( i%2==0 )  a[j++] = str[i];
    if ( i%3==0 )   b[k++] = str[i];
}

这里i==0时, i%2==0 和 i%3==0均等于1,所以第一个字符都会存入到数组a,b中,所以a和b的第一个字符都是T