解题思路:
1.设输入的数为number=12;

2.求其对应二进制数的算法为:

     12 /2 =6......(0)

       6 /2 =3......(0)

       3 /2 =1......(1)

       1 /2 =0......(1)

当每次除以2得到新的number,当number==0时结束;

余数从下向上为:1 1 0 0就是该整数对应的二进制数;

注意事项:

该方法仅仅针对整数部分的二进制数;小数部分方法不同;

按题目条件输出;

参考代码:

#include <stdio.h>
#include <math.h>
void bina( int number );
void output( int *A, int number, int n );

int jinzhi = 2;
/*----------------------------------------*/
int main()
{
    int number;

    while ( scanf( "%d", &number ) != EOF )
        bina( number );
    return(0);
}


/*----------------------------------------*/
void bina( int number )
{
    int    t    = fabs( number );//取绝对值,方便计算以及输出
    int    i    = 0;
    int    A[10000];//存放二进制数
    do
    {
        A[i]    = t % jinzhi;
        t    /= jinzhi;
        i++;
    }while ( t != 0 );

    output( A, number, i );
    return;
}


/*----------------------------------------*/
void output( int *A, int number, int n )
{
    printf( "%d-->", number );//输出10进制数
    if ( number < 0 )    //输出二进制数负号
        printf( "-" );
    for ( int i = n - 1; i >= 0; i-- )
        printf( "%d", A[i] );
    printf( "\n" ); //换行
    return;
}

别忘点赞哦-.-

点赞(17)
 

0.0分

9 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

Sion258 2年前 回复TA
#include <stdio.h>
int DtoB(int n){
	int x=1,y,sum=0;
	while(n!=0){
		y=n%2;
		sum+=x*y;
		x*=10;
		n/=2;
	}
    return sum;
}
int main(){
	int sm10,sm2;
	while(~scanf("%d",&sm10)){
	sm2=DtoB(sm10);
	printf("%d-->%d\n",sm10,sm2);
    }
	return 0;
}
能帮我看看哪儿错了吗谢谢大佬
一路向北 3年前 回复TA
我怎么不能不能运行呢