帮我解决一道C语言编程题:将一个十进制数转化为二进制数,统计该二进制数中"1"的个数和"0”的个数

2024-12-16 13:15:45
推荐回答(4个)
回答1:

#include
int main()
{
int a;
int b[1000],i,x0,x1,k,c;
x0=0;
x1=1;
printf("请输入十进制数a\n");
scanf("%d",&a);
if(a == 0)
{
printf("十进制数0转成二进制数为0\n");
printf("1的个数为0\n");
printf("0的个数为1\n");

}

c = a;
for(i=0;i<1000;i++)
b[i]=0;
i=0;
while(a!=1)
{
b[i]=a%2;
a=a/2;
i++;
}
k=i-1;
printf("十进制数%d转成二进制数为%d",c,a);
for(i=k;i>=0;i--)
printf("%d",b[i]);
printf("\n");
for(i=0;i<=k;i++)
{
if(b[i]==0)
x0++;
else
x1++;
}
printf("0的个数为%d\n",x0);
printf("1的个数为%d\n",x1);
return 0;
}
VC上调试成功

回答2:

标准数学库有相应的函数,不知道的时候可以去查下msdn,用索引来查找.首先自己想到整型为i,字符串为
a,自然联想到itoa,去查下有没有对应的函数就可以解决问题了.要多多的练习自学能力.

#include
#include
void main()
{
int number,i,j,z;
char buffer[20];
printf("输入十进制的数:");
scanf("%d",&number);
itoa(number,buffer,2);
//统计1的个数
for(i=0,j=0,z=0;buffer[z]!='\0';z++)
if(buffer[z]=='1')
i++;
else
j++;
printf("对应的二进制数为%s,1的个数是%d,0的个数是%d\n",buffer,i,j);

}

回答3:

#include
#include

main()
{
int a=0,b=0,c=0,i=0,j=0;
char acBuf[8+1];
char acTmp[2+1];

scanf( "%d" , &a ) ;
printf( "输入的十进制数为%d\n" , a ) ;

for( c=7;c>=0;c--)
{
memset( acTmp , 0x00 , sizeof( acTmp ) ) ;
b = a % 2 ;
if( b == 0 )
i ++ ;
if( b == 1 )
j ++ ;
sprintf( acTmp , "%d" , b ) ;
acBuf[c] = acTmp[0] ;
a = a/2 ;
}
printf( "二进制数为%s , 1的个数为%d , 0的个数为%d\n" , acBuf , j , i ) ;
}

回答4:

#include "stdio.h"
int main()
{
int number,i=7,b[8]={0},m=0,n=0;
printf("Input a number between 0 and 255:");
scanf("%d",&number);
while(number)
{
b[i]=number%2;
number/=2;
if(b[i]==0)
M++;
IF(B[i]==1)
n++;
i--;
}
for(i=1;i<8;i++)
{
printf("%d,%d,%d",b[i],m,n);
}printf("\n");
}