悠游


私信TA

用户名:uq_87643911115

访问量:6788

签 名:

你好

等  级
排  名 42
经  验 12783
参赛次数 0
文章发表 206
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

大家好!我是糕手

解题思路:
创建一个数组存储x转化的二进制,然后好办了
注意事项:

参考代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int x;
	scanf("%d",&x);
	printf("%d=",x);
	int b=x;
	int a[b];//x转化为二进制
	for(int i=0;i<b;i++)//初始话数组
	a[i]=0;
	int count=0;
	while(x)//二进制转换,按序放入数组
	{
	    a[count]=x%2;
	    count++;
	    x=x/2;
	}
	int t=0;//处理加号
	for(int i=count;i>=0;i--)//题目要求的输出是高位到低位
	{
	    if(a[i]==1)
	    {
	        if(t!=0)
	        printf("+");
	       
	       printf("%d",1<<i);//<<是二进制左移的意思,你也可以用pow(2,i),不过这函数的返回值的double类型,要先转化为int类型
	       t++;
	    }
	}
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »