编程实现:输入一个十进制数,转换成对应的二进制数、八进制数和十六进制数并输出。

如题所述

1、#include<iostream>

using namespace std;

int main()

{

int a,b,c,d;

cout<<"请输入待转换的数:";

cin>>a;

//二进制分别计算每一位

if(a==0)cout<<a;

b=a;c=0;d=1;

while(b!=0)

{

c+=(b%2)*d;//依次把b除以2的余数写在c的对应位置上

b=b/2;

d*=10;

}

cout<<c<<endl;

//八进制和十六进制使用格式化输出即可,oct表示八进制,hex表示十六进制

cout<<oct<<a<<endl;

cout<<hex<<a<<endl;

}

2、main()

{ int a,i;char x[16];

float b;

scanf("%d",&a);

printf("八进制为%o,十六进制为%x",a,a);

for(i=0;i<=15;i++)

{b=a/2.0;

a=a/2;

if(b==(float)a) x[15-i]='0';

else x[15-i]='1';

}

printf("二进制为%s",x);

}

扩展资料:

编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序,然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。

参考资料来源:百度百科-编程

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-30
以下是C++的:
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
cout<<"请输入待转换的数:";
cin>>a;
//二进制分别计算每一位
if(a==0)cout<<a;
b=a;c=0;d=1;
while(b!=0)
{
c+=(b%2)*d;//依次把b除以2的余数写在c的对应位置上
b=b/2;
d*=10;
}
cout<<c<<endl;
//八进制和十六进制使用格式化输出即可,oct表示八进制,hex表示十六进制
cout<<oct<<a<<endl;
cout<<hex<<a<<endl;
}追问

看不懂,太深奥了,这种没学过,换种简单的?

追答

你要什么语言的?

追问

C语言

追答

#include
#define N 20
char *s="0123456789abcde"; /* 定义个字符串指针,用于输出 */
int INT[N]; /* 用于存放转换后的数据 */
void SWITCH(float a,int d) /* 转换的函数 */
{
int _int;
int i=0,j;
_int=a; /* 把小数部分去掉 */
while(_int)
{
INT[i]=_int%d;/*存放数据,把该数值模以进制,其结果就是转换后的数值*/
i++;
_int/=d; /* 把该数值除以进制,得出整数部分,如果不为零,继续转换*/
}
for(j=i;j>=0;--j)
printf("%c",*(s+INT[j])); /* 输出转换后的整数部分 */
if(a-(int)a>0.0) /* 如果这个数值有小数部分,就进行下面的程序*/
{
i=0; /* 下标赋初值 */
a-=(int)a; /* 得出小数部分 */
while(a!=0.0)
{
INT[i]=(int)(a*d); /* 存入数据,该数值乘以进制,其整数部分就是转换后的数值*/
a=(a*d)-(int)(a*d);/* 把整数部分去除,如果不为零,继续转换 */
i++;
}
printf("."); /* 输出小数点 */
for(j=0;j<i;++j)
printf("%c",*(s+INT[j])); /* 输出小数部分 */
}
printf("\n");
}
int main(void)
{
int n;
float a;
printf("input n a:\n");
while((scanf("%d %f",&n,&a))!=EOF) /* 输入数值,第一个输入进制,第二个输入数值 */
SWITCH(a,n); /* 当输入不为EOF时,进行转换 */
return 0;
}

本回答被提问者采纳
相似回答