Manchester


私信TA

用户名:wenyajie

访问量:146553

签 名:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

等  级
排  名 1
经  验 35768
参赛次数 1
文章发表 183
年  龄 0
在职情况 学生
学  校 Qing Dao University
专  业 计算机科学

  自我简介:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

解题思路:
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分

4 人评分

  评论区