#include<stdio.h>
#include<math.h>
int main()
{
int n,j,t=0,z;
double a,i;
int b[t];
scanf("%d",&n);
j=n%2;
n/=2;
if(j==1)
{
printf("-1");
}
else
{for(i=1;n!=0;i++)
{
j=n%2;
n/=2;
a=(pow(2,i))*j;
if(a!=0)
{
t++;
b[t]=a;}
}
for(z=t;z>0;z--)
{
printf("%d ",b[z]);
}}
return 0;
}
我的这个代码数据到26就出错了,这个怎么解决尼?
提交显示是75分。
这个题n是有范围的,可知数组里最多有20个数,所以只需要把int b[t],改成int b[任意大于等于20的数],就可以运行;至于为什么变长数组不能实现,我还是不懂