c语言程序问题,无法输入

用代码块功能插入代码,请勿粘贴截图

#include
#include 

int main()
{
    int j,n,a[800004],b[8];
    scanf("%d",&n);//明文长度 
    for(j=0;j<8;j++)
        scanf("%d",&b[j]);//初始化向量 
    int i=0,z=0,num_2=0,num_16=0;
    int e[8];
    while(iwhile(z<(8*n))//分组输入 
        {
            scanf("%d",&a[z]);
            e[z]=a[z];//存储数据 
            while(a[z]/2!=0)
            {
                if(a[z]%2!=0)
                {
                    num_2++;
                    a[z]/=2;
                    }    
            }
            if(a[z]/2==0&&a[z]%2==1)
                num_2++;//1数
            a[z]=e[z]; 
            while(a[z]/16!=0)
            {
                if(a[z]%16>9)
                {
                    num_16++;
                    a[z]/=16;
                    }    
            }
            if(a[z]/16==0&&a[z]%16>9)
                num_16++;//求字母数        
            z++; 
        }
        printf("%04x%04x%04x%04x%04x%04x%04x%04x %d %d\n",e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],num_2,num_16);
        z=0,num_2=0,num_16=0;
        i++;
    }

    
 return 0;
}
运行结果及报错内容

能运行但是什么都没输入就结束了

我想要达到的结果

可以说说是什么问题吗,怎么解决

a[800004]数组太大,int a[800004];放到main函数外面,成员全局变量

栈内存溢出了,你数组a占了800004*4=3200016字节,栈不够保存的。你应该要分配到堆上面,用malloc。