这个为什么输出一直为0

有好几处错误,代码修改如下
#include <stdio.h>
#include <malloc.h>
int main()
{
int n,i,k;
int *a;
k=0;
scanf("%d",&n);
a = (int*)malloc(n*sizeof(int)); //给a申请空间,动态申请空间
for (i=0;i<n;i++)
scanf("%d",&a[i]);
i=0; //这里重置i为0
while(i<n) //这里为什么要用a[i] != -1呢,应该是用i<n遍历,如果用a[i] !=-1,如果数组中间有-1,循环直接就结束了
{
if(a[i]%2 != 0)
k++;
i++; //这里i自增
}
printf("%d",k);
return 0;
}