哎,小弟我又来问有关问题了

哎,我又来问问题了。
第一道
执行以下程序段后,a 的值是 。(1 级) 
  static int a[]={5,3,7,2,1,5,4,10}; 
  int a=0;k; 
  for(k=0;k<8;k+=2) 
  a+=*(a+k); 
  A) 17 B) 27 C) 13 D) 有语法错误,无法确定
第二道

分析下列程序 
  main() 
  {int n[3],i,j,k; 
  for(i=0;i<3;i++) 
  n[i]=0; 
  k=2; 
  for(i=0;i<k;i++) 
  for(j=0;j<k;j++) 
  n[j]=n[i]+1; 
  printf("%d\n",n[1]); 
  } 
  上述程序运行后,输出的结果是 。(1 级) 
  A)2 B)1 C)0 D)3 

第一道的答案是:A
第二道的答案是:D
那位大哥能帮我解释一下。啊。哈哈哈谢了

------解决方案--------------------
第一题:
static int a[]={5,3,7,2,1,5,4,10};
int a=0;k; //加红色的a应该换成其它字母,像b,c...
for(k=0;k<8;k+=2)
a+=*(a+k); //不妨设为b,b=a[0]+a[2]+a[4]+a[6]=17;
第二题:
main()
{int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0; //初始化,n[0]=n[1]=n[2]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) //当i=0时,执行for(j=0;j<k;j++) ,n[0]=n[0]+1=1;同理n[1]=n[2]=1;
n[j]=n[i]+1; //当i=1时,执行for(j=0;j<k;j++) ,n[0]=n[1]+1=2;同理n[1]=n[2]=2;
printf("%d\n",n[1]);//当i=2时,执行for(j=0;j<k;j++),n[0]=n[2]+1=3;同理n[1]=n[2]=3;
} //所以n[1]=3;输出