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;
}

 
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值