#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。