sdibt 2548 将十进制数转换成二进制数
键盘输入一个十进制正整数,求出其二进制值, 本题不允许使用数组,也不允许使用递归
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		int t=n,i;
		int cas1=0,cas2=0;
		while(t)//计算最大的2的几次方  
		{
			t/=2;
			cas1++;
		}
		cas1-=1;
		n-=pow(2,cas1);//剩余的数是多大 
		printf("1");//先把开头的1打出来 
		if(n==0)//当数刚好是2的次方直接打出剩下的0 
		{
			for (i=1;i<=cas1;i++)
			  printf("0");
			printf("\n");  
			continue;
		}
		while(n)
		{
			cas2=0;
			t=n;
			while(t)//计算接下来的数最大2的次方是多少 
			{
				t/=2;
				cas2++;
			}
			for (i=cas1;i>cas2;i--)
			   printf("0");//1和1之间有几个0 
		    cas1=cas2-1;
			printf("1");
			n-=pow(2,cas2-1);  
		}
		for (i=1;i<cas2;i++)
		  printf("0");
		printf("\n");
	}
	return 0;
}
 
 
 
/*试数法
**比如说100,最大是2^6输出1,其次2^5,这里也是输出一,再后来 
**就是2^2而对于2^4,3这里都要输出0,因为2^6+2^5=96+2^4>n(100) 
**
*/ 

#include<stdio.h>
int main()
{
	int n,m=1,sum,i;
	scanf("%d",&n);
	for(i=0;m<n/2+1;i++)
		m=m*2;
	sum=m;
	printf("1");
	for(;i>0;i--)
	{
		m=m/2;
		sum=sum+m;
		if(sum<=n)	
			printf("1");
		else
		{
			printf("0");
			sum=sum-m;
		}
	}
	printf("\n");
	return 0;
}
 
阅读更多
想对作者说点什么? 我来说一句

二进制数转换成十进制数

2010年12月01日 517KB 下载

没有更多推荐了,返回首页

不良信息举报

sdibt 2548 将十进制数转换成二进制数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭