将一个十进制正整数转为二进制形式输出。
输入说明
一个十进制正整数。
输出说明
转化后的二进制形式。
输入样例
6
输出样例
110
源地址:http://58.193.10.238/oj/problem.php?id=1055
要求 定义一个二进制转换的函数,使用递归方法
13 个解决方案
#1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int decimal;//存储十进制数
int n=1;//记录二进制位数
int t=2;//
int base=2;//二进制的基,即2
int *binary;//存储转化后的二进制数组
int j=0;//循环变量
int temp;
printf("请输入一个十进制数:");
scanf("%d",&decimal);//read the input number
while(decimal/t!=0)
{
n++;
t=t*base;
}
printf("该十进制数可以被%d位二进制表示.\n",n);
binary=(int *)malloc(sizeof(int)*n);
j=0;
temp=decimal;
for(j=n-1;j>=0;j--)
{
binary[j]=temp%2;
temp=temp/2;
}
printf("%d对应的二进制位数为:",decimal);
for(j=0;j<n;j++)
{
printf("%d",binary[j]);
if(j%4==0) printf("\t");//每四位输出一个Tab
}
return 0;
}
#2
抱歉,看错题目了,这个
//十进制与二进制数的转化
//作者:nuaazdh
//时间:2011年11月30日
#include <stdio.h>
void Scale(int d,int base);
int main()
{
int decimal;//存储十进制数
int n=1;//记录二进制位数
int t=2;//
int base=2;//二进制的基,即2
int *binary;//存储转化后的二进制数组
int j=0;//循环变量
int temp;
printf("请输入一个十进制数:");
scanf("%d",&decimal);//read the input number
while(decimal/t!=0)
{
n++;
t=t*base;
}
printf("该十进制数可以被%d位二进制表示.\n",n);
binary=(int *)malloc(sizeof(int)*n);
j=0;
temp=decimal;
for(j=n-1;j>=0;j--)
{
binary[j]=temp%2;
temp=temp/2;
}
printf("%d对应的二进制位数为:",decimal);
for(j=0;j<n;j++)
{
printf("%d",binary[j]);
if((j+1)%4==0) printf(" ");//每四位输出一个空格
}
//递归实现
printf("\n递归实现结果:");
Scale(decimal,2);
return 0;
}
//递归实现数制转换
void Scale(int d,int base)
{
if(d/base!=0)
{
Scale(d/base,base);
printf("%d",d%base);
}
else
{
printf("%d",d%base);
}
}
#3
十进制转换成任意进制:
#include <iostream>
using namespace std;
void swap(a,b)
{
for(;a>=b;)
{
c[i]=a%b;
a=(a-c[i])/b;
i++;
if (a<b)
c[i]=a%b;
}
cout<<"转换后的"<<b<<"进制数为:"<<endl;
for(int m=i;m>=0;m--)
{cout<<c[m];}
cout<<endl;
}
int main()
{
long a;int b;
int c[100];
int i=0;
cout<<"请输入要转换的数据:"<<endl;
cin>>a;
cout<<"请输入要转换成的进制:"<<endl;
cin>>b;
swap(a,b);
return 0;
}
#4
能转换为16进制吗?甚至20进制吗。。
#5
嗯,常用的就递归,简单
#6
#include <stdio.h>
void Convert(int n)
{
if (n!=0)
{
Convert(n/2);
printf("%d",n%2);
}
}
int main()
{
int n;
while (scanf("%d",&n))
{
Convert(n);
}
return 0;
}
#7
位运算
#include<stdio.h>
int main()
{
int a,i;
i=sizeof(int)*8;
for(scanf("%d",&a);i>0;i--,printf("%d",a>>i&1));
system("pause");
}
#include<stdio.h>
int main()
{
int a,i;
i=sizeof(int)*8;
for(scanf("%d",&a);i>0;i--,printf("%d",a>>i&1));
system("pause");
}
#8
LZ要递归
#9
欢迎来到常州信息学院OnlineJudge系统
有点亲切感。
有点亲切感。
#10
楼主嵌入式111的?
#11
#2楼少了一个
#include <stdlib.h>
如果你觉的以上复杂的话,我有一个简单的:
#include <stdio.h>
#define maxsize 100
void main()
{
int decimal,n=0,i=0,elem[maxsize];
printf("请输入一个十进制数:");
scanf("%d",&decimal);
while(decimal!=0)
{
elem[n]=decimal%2;
n++;
decimal=decimal/2;
}
for(i=n-1;i>=0;i--)
printf("%d ",elem[i]);
}
#include <stdlib.h>
如果你觉的以上复杂的话,我有一个简单的:
#include <stdio.h>
#define maxsize 100
void main()
{
int decimal,n=0,i=0,elem[maxsize];
printf("请输入一个十进制数:");
scanf("%d",&decimal);
while(decimal!=0)
{
elem[n]=decimal%2;
n++;
decimal=decimal/2;
}
for(i=n-1;i>=0;i--)
printf("%d ",elem[i]);
}
#12
#include <stdio.h>
#include "cs50.h"
// 要转换的进制系统 SYS, 读者可以任意该,不能超过36;
#define SYS 16
void SysConver(int);
int main(void)
{
if (SYS > 36)
{
printf("the System make no sense!!!!!");
return 1;
}
int d;
// enter the decimal number you want to convert
printf("enter a num to convert: ");
d = GetInt();
// convert to binary
SysConver(d);
printf("\n");
getchar();
return 0;
}
void SysConver(int x)
{
if (x >= SYS)
SysConver(x / SYS);
int Base = x % SYS;
// > 9部分用字母表示.
if (Base > 9)
{
Base += 'a' - 10;
printf("%c", (char)Base);
}
else
printf("%d", Base);
}
#13
#include<stdio.h>
int transformToBin(int dnum,int bin[]);
main()
{
int dnum;//定义一个变量输入一个十进制数
int bin[100];//定义一个数组,用于存放转换后的二进制
int n,i;
printf("请输入一个十进制数:");
scanf("%d",&dnum);
n = transformToBin(dnum,bin);
for(i=n-1;i>=0;i--)//倒序输出数组得到正确的二进制数
{
printf("%d",bin[i]);
}
printf("\n");
}
int transformToBin(int dnum,int bin[])
{
int i;
int len = 0;//用于记录数组长度
for(i=0 ;i<100 ;i++ )
{
if(dnum == 0)
break;
bin[i] = dnum%2;
dnum = dnum/2;//整型除整型还是整型
len++;
}
return len;
}
int transformToBin(int dnum,int bin[]);
main()
{
int dnum;//定义一个变量输入一个十进制数
int bin[100];//定义一个数组,用于存放转换后的二进制
int n,i;
printf("请输入一个十进制数:");
scanf("%d",&dnum);
n = transformToBin(dnum,bin);
for(i=n-1;i>=0;i--)//倒序输出数组得到正确的二进制数
{
printf("%d",bin[i]);
}
printf("\n");
}
int transformToBin(int dnum,int bin[])
{
int i;
int len = 0;//用于记录数组长度
for(i=0 ;i<100 ;i++ )
{
if(dnum == 0)
break;
bin[i] = dnum%2;
dnum = dnum/2;//整型除整型还是整型
len++;
}
return len;
}
#1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int decimal;//存储十进制数
int n=1;//记录二进制位数
int t=2;//
int base=2;//二进制的基,即2
int *binary;//存储转化后的二进制数组
int j=0;//循环变量
int temp;
printf("请输入一个十进制数:");
scanf("%d",&decimal);//read the input number
while(decimal/t!=0)
{
n++;
t=t*base;
}
printf("该十进制数可以被%d位二进制表示.\n",n);
binary=(int *)malloc(sizeof(int)*n);
j=0;
temp=decimal;
for(j=n-1;j>=0;j--)
{
binary[j]=temp%2;
temp=temp/2;
}
printf("%d对应的二进制位数为:",decimal);
for(j=0;j<n;j++)
{
printf("%d",binary[j]);
if(j%4==0) printf("\t");//每四位输出一个Tab
}
return 0;
}
#2
抱歉,看错题目了,这个
//十进制与二进制数的转化
//作者:nuaazdh
//时间:2011年11月30日
#include <stdio.h>
void Scale(int d,int base);
int main()
{
int decimal;//存储十进制数
int n=1;//记录二进制位数
int t=2;//
int base=2;//二进制的基,即2
int *binary;//存储转化后的二进制数组
int j=0;//循环变量
int temp;
printf("请输入一个十进制数:");
scanf("%d",&decimal);//read the input number
while(decimal/t!=0)
{
n++;
t=t*base;
}
printf("该十进制数可以被%d位二进制表示.\n",n);
binary=(int *)malloc(sizeof(int)*n);
j=0;
temp=decimal;
for(j=n-1;j>=0;j--)
{
binary[j]=temp%2;
temp=temp/2;
}
printf("%d对应的二进制位数为:",decimal);
for(j=0;j<n;j++)
{
printf("%d",binary[j]);
if((j+1)%4==0) printf(" ");//每四位输出一个空格
}
//递归实现
printf("\n递归实现结果:");
Scale(decimal,2);
return 0;
}
//递归实现数制转换
void Scale(int d,int base)
{
if(d/base!=0)
{
Scale(d/base,base);
printf("%d",d%base);
}
else
{
printf("%d",d%base);
}
}
#3
十进制转换成任意进制:
#include <iostream>
using namespace std;
void swap(a,b)
{
for(;a>=b;)
{
c[i]=a%b;
a=(a-c[i])/b;
i++;
if (a<b)
c[i]=a%b;
}
cout<<"转换后的"<<b<<"进制数为:"<<endl;
for(int m=i;m>=0;m--)
{cout<<c[m];}
cout<<endl;
}
int main()
{
long a;int b;
int c[100];
int i=0;
cout<<"请输入要转换的数据:"<<endl;
cin>>a;
cout<<"请输入要转换成的进制:"<<endl;
cin>>b;
swap(a,b);
return 0;
}
#4
能转换为16进制吗?甚至20进制吗。。
#5
嗯,常用的就递归,简单
#6
#include <stdio.h>
void Convert(int n)
{
if (n!=0)
{
Convert(n/2);
printf("%d",n%2);
}
}
int main()
{
int n;
while (scanf("%d",&n))
{
Convert(n);
}
return 0;
}
#7
位运算
#include<stdio.h>
int main()
{
int a,i;
i=sizeof(int)*8;
for(scanf("%d",&a);i>0;i--,printf("%d",a>>i&1));
system("pause");
}
#include<stdio.h>
int main()
{
int a,i;
i=sizeof(int)*8;
for(scanf("%d",&a);i>0;i--,printf("%d",a>>i&1));
system("pause");
}
#8
LZ要递归
#9
欢迎来到常州信息学院OnlineJudge系统
有点亲切感。
有点亲切感。
#10
楼主嵌入式111的?
#11
#2楼少了一个
#include <stdlib.h>
如果你觉的以上复杂的话,我有一个简单的:
#include <stdio.h>
#define maxsize 100
void main()
{
int decimal,n=0,i=0,elem[maxsize];
printf("请输入一个十进制数:");
scanf("%d",&decimal);
while(decimal!=0)
{
elem[n]=decimal%2;
n++;
decimal=decimal/2;
}
for(i=n-1;i>=0;i--)
printf("%d ",elem[i]);
}
#include <stdlib.h>
如果你觉的以上复杂的话,我有一个简单的:
#include <stdio.h>
#define maxsize 100
void main()
{
int decimal,n=0,i=0,elem[maxsize];
printf("请输入一个十进制数:");
scanf("%d",&decimal);
while(decimal!=0)
{
elem[n]=decimal%2;
n++;
decimal=decimal/2;
}
for(i=n-1;i>=0;i--)
printf("%d ",elem[i]);
}
#12
#include <stdio.h>
#include "cs50.h"
// 要转换的进制系统 SYS, 读者可以任意该,不能超过36;
#define SYS 16
void SysConver(int);
int main(void)
{
if (SYS > 36)
{
printf("the System make no sense!!!!!");
return 1;
}
int d;
// enter the decimal number you want to convert
printf("enter a num to convert: ");
d = GetInt();
// convert to binary
SysConver(d);
printf("\n");
getchar();
return 0;
}
void SysConver(int x)
{
if (x >= SYS)
SysConver(x / SYS);
int Base = x % SYS;
// > 9部分用字母表示.
if (Base > 9)
{
Base += 'a' - 10;
printf("%c", (char)Base);
}
else
printf("%d", Base);
}
#13
#include<stdio.h>
int transformToBin(int dnum,int bin[]);
main()
{
int dnum;//定义一个变量输入一个十进制数
int bin[100];//定义一个数组,用于存放转换后的二进制
int n,i;
printf("请输入一个十进制数:");
scanf("%d",&dnum);
n = transformToBin(dnum,bin);
for(i=n-1;i>=0;i--)//倒序输出数组得到正确的二进制数
{
printf("%d",bin[i]);
}
printf("\n");
}
int transformToBin(int dnum,int bin[])
{
int i;
int len = 0;//用于记录数组长度
for(i=0 ;i<100 ;i++ )
{
if(dnum == 0)
break;
bin[i] = dnum%2;
dnum = dnum/2;//整型除整型还是整型
len++;
}
return len;
}
int transformToBin(int dnum,int bin[]);
main()
{
int dnum;//定义一个变量输入一个十进制数
int bin[100];//定义一个数组,用于存放转换后的二进制
int n,i;
printf("请输入一个十进制数:");
scanf("%d",&dnum);
n = transformToBin(dnum,bin);
for(i=n-1;i>=0;i--)//倒序输出数组得到正确的二进制数
{
printf("%d",bin[i]);
}
printf("\n");
}
int transformToBin(int dnum,int bin[])
{
int i;
int len = 0;//用于记录数组长度
for(i=0 ;i<100 ;i++ )
{
if(dnum == 0)
break;
bin[i] = dnum%2;
dnum = dnum/2;//整型除整型还是整型
len++;
}
return len;
}