Manchester


私信TA

用户名:wenyajie

访问量:312825

签 名:

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

等  级
排  名 1
经  验 62751
参赛次数 1
文章发表 188
年  龄 0
在职情况 学生
学  校 Xiamen 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分

14 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#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;
}
能帮我看看哪儿错了吗谢谢大佬
2022-09-07 10:43:10
我怎么不能不能运行呢
2021-08-12 12:33:23
  • «
  • 1
  • »