今天心情不错!编写了一个32位机的关于10进制转换为2进制输出程序,希望大家多多指点;
#include<iostream.h>
int tow(int n)
{
unsigned i,j=1;
for(i=1;i<=n;i++)j=j*2;
return(j);
}
void main()
{
unsigned i,a[32]={0};
int j=0,h=1;
cout<<”请输入你要转换的10进制数字为:”;
cin>>i;
cout<<endl;
while(h)
{
if(i>=tow(31-j)){i=i-tow(31-j);a[31-j]=1;}
else a[31-j]=0;
if(i==0){a[0]=0;h=0;}
if(i==1){a[0]=1;h=0;}
j++;
}
cout<<”最后32位二进制结果为:”;
for(j=0;j<=31;j++)cout<<a[31-j];
cout<<endl;
cin>>j;
}//程序已经运行过了!没问题!谢谢大家支持!
>> 本文固定链接: http://www.vcgood.com/archives/3112
>> 转载请注明: wxjwxjwkjl 2009年03月26日 于 C语言帝国 发表
可以用数据结构里的栈来写
给出一个用递归来实现的十进制转换为二进制的程序,存储结构为数组。
#include “stdio.h”
#define MAX 32
int data[MAX];
int change(int x){
int i;
if(x==0)
return 0;
i=change(x/2);
data[i]=x%2;
return i+1;
}
int main(){
int a,i,j;
scanf(“%d”,&a);
i=change(a);
for(j=0;j<i;j++)
printf(“%d”,data[j]);
return 0;
}
呵呵……
我是新手,能具体解释一下
int change(int x){
int i;
if(x==0)
return 0;
i=change(x/2);
data[i]=x%2;
return i+1;
} 吗,谢谢了