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

原创 2012年03月21日 16:23:49
键盘输入一个十进制正整数,求出其二进制值, 本题不允许使用数组,也不允许使用递归
#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--编写循环函数将十进制数转换成二进制数输出

实验目的:编写循环函数将十进制数转换成二进制数输出 实验内容: * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * C...

《第二周实验报告1-1》---递归函数将十进制数转换成二进制

/*(1‐1)编写递归函数将十进制数转换成二进制数输出。 * 算法说明:十进制数转换成二进制数输出 * 我们首先要知道具体的算法,知道了具体的算法我们才可能用代码实现; * 1.将n进行整除运...

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

先以数字23为例 具体程序为 Private Sub Command1_Click() Me.Font.Size = 60 Dim n As Byte n = 23 Const e...

将十进制数转换成二进制数输出

/*用数组十进制数转换成二进制数输出 */ #include using namespace std; int main() { int a[50],n,i,j; co...

【汇编】将ASCII码表示的十进制数转换成二进制数

程序要求 流程图 汇编代码 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SE...

第二周上机任务1-1--编写递归函数将十进制数转换成二进制数输出(改进版)

实验目的:编写递归函数将十进制数转换成二进制数输出 实验内容: * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * C...

第一周第二天([变量名] [运算符] [语句] [求水仙花数的算法][求一个十进制数转换成二进制数有多少个1的算法] [continue的用法])

目录变量名 运算符 变量名运算符 “` java public class yusuanfu { public static void main(String[] ...

把十进制数转换成十六进制后如何分割高低字节

把十进制数转换成十六进制后如何分割高低字节   今天公司的项目,遇到一个问题:要把云台输入转动角度转换成十六进制后把高地位分开赋给另外两个参数,比如90°(云台协议规定要计算9000即输入...

十进制数转换成x进制----栈实现

十进制数转换成x进制栈实现                        题目:输入一个十进制数n,以及要求转换成的进制x,输出x进制下的n.用栈实现.约定输入的数为正整数,进制x为2-36,输出的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sdibt 2548 将十进制数转换成二进制数
举报原因:
原因补充:

(最多只允许输入30个字)