(1)k=1;位置调整到变量定义的后面
(2)
for(i=0;i<m;i++)
{
if(i==m) e[i]=d[i];/*i的值不可能等于m,这个判断是多余的*/
else if(d[i]==d[i+1]) e[i]=0;
else e[i]=1;
sum+=e[i]*k;
k*=10;
}
(3)使用整数存储格雷码对应的十进制形式有问题,因为当a转换的二进制位数比较大时,sum计算出的结果就是错误的,可能超出整数的表示范围,直接输出数组吧
printf("%d\n",sum);
(2)
for(i=0;i<m;i++)
{
if(i==m) e[i]=d[i];/*i的值不可能等于m,这个判断是多余的*/
else if(d[i]==d[i+1]) e[i]=0;
else e[i]=1;
sum+=e[i]*k;
k*=10;
}
(3)使用整数存储格雷码对应的十进制形式有问题,因为当a转换的二进制位数比较大时,sum计算出的结果就是错误的,可能超出整数的表示范围,直接输出数组吧
printf("%d\n",sum);