原题链接:十->二进制转换
解题思路:
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;
}别忘点赞哦-.-
0.0分
9 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
 
#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; } 能帮我看看哪儿错了吗谢谢大佬