请问我的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;