请问我的2进制输入8 为什么输出0,以及对偶数的处理有什么问题?

请问我的2进制输入8 为什么输出0,以及对偶数的处理有什么问题?

问题描述:

给定一个正整数,写出它的 22 进制表示
多组输入,输入的第一行为一个正整数 n,表示接下来有 n 组数据,每一行为 1 个正整数 a (0 #include
int main ()
{
int n,x,d,m=0,e=0;
scanf("%d",&n);
if(n>0)
while(n--)
{
scanf("%d",&x);
if(x>0&&x<=10000)
m=0;
d=x;
do
{
m=m*10+x%2;
x=x/2;
e++;
}while(x!=0);
if(d%2!=0)
printf("%d\n",m);
if(d%2==0)
printf("%d\n",m*pow(10,e));
}
return 0;
}

到底是2进制还是22进制?从你代码看,是2进制

#include <math.h>
#include <stdio.h>

int main()
{
    int n,x,d,m=0,e;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&x);
        if(x>0&&x<=10000)
        {
            m=0;
            d=x;
            e = 1;
            do
            {
                m=x%2*e+m;
                e*=10;
                x=x/2;
            }while(x!=0);
            printf("%d\n",m);
        }
    }
    return 0;
}

另外 https://ask.csdn.net/questions/969762
这个解决了么

#include
int main ()
{
int n,x,m,i,j;
int e[100];
scanf("%d",&n);
if(n>0)
while(n--)
{
scanf("%d",&x);
if(x>0&&x<=10000){
m=0;
i = 0;
}

while(x>0)
{
m = x % 2;
x = x / 2;
e[i] = m;
i++;
}
for(j = i-1; j >= 0; j--){
printf("%d",e[j]);
}
printf("\n");
}
return 0;
}
你所写的代码块中存在错误,不仅是偶数,奇数也是存在问题的,你可以试一下十以上的奇数来计算测试一下。
具体原因在于do-while循环体中m = m* 10 +x%2;