编写一个VC++程序把十进制数转化成二进制,八进制,十六进制。

而且在编写VC++程序,实现他们的相互转换。分别写出~

#include <stdio.h>

#include <stdlib.h>
#include <string.h>
void trans(long m,int base,char *a); // 函数声明
int _tmain(int argc, _TCHAR* argv[])
{
long n;
int radix;
//char b[33];
char a[33];
printf("please input the integer:"); //要转换的十进制数
scanf("%ld",&n);
printf("please input the radix:"); // 进制数,可以为2、8、16
scanf("%d",&radix);

trans(n,radix,a); //调用函数
//for(int i=strlen(b)-1;i>=0;i--)
// printf("%c",*(b+i));
printf("%s",a);
return 0;
}

//只是16进制的转换
void trans(long m,int base,char *a)
{ int r;
char *p=a;

while(m>0)
{ r=m%base;
if(r<10) *p=r+48; //小于10的数转换为数字字符输出
else *p=r+55; //大于10的数转为A B C D E F输出
m=m/base;
p++; }
*p='\0';
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-13
#include "iostream.h"
void f1(double p,int q) //编辑对实数p的整数部分进制转换的子函数
{
int i,m,n,t=0,a[100];
for(i=0;;i++) //进制转换执行操作循环
{
n=(int)p/q; m=(int)p%q; p=n; a[i]=m; t++;
if(n==0) break; //当n为0时,循环结束
}
for(i=t-1;i>=0;i--) //倒序输出各个模值(m)
{
switch(a[i]) //十六进制转换过程中模值(m)若大于'9',则必须输出相应的大写字母
{case 10: cout<<'A'; break;<br> case 11: cout<<'B'; break;<br> case 12: cout<<'C'; break;<br> case 13: cout<<'D'; break;<br> case 14: cout<<'E'; break;<br> case 15: cout<<'F'; break;<br> default: cout<<a[i]; break; <strong> //若模值(m)不大于'9',则原样输出</strong><br> }
}
}
void f2(double p,int q) //编辑对实数p的小数部分进制转换的子函数
{
int i,t=0,a[100];
double n;
p=p-(int)p; //提取p的小数部分
for(i=0;;i++) //进制转换执行操作循环
{
n=p*q; a[i]=(int)n;
p=n-(int)n;
t++;
if(n-(int)n==0) break; //当n的值等于n的整数部分时,循环结束
}
for(i=0;i<t;i++) //正序输出各个整值((int)n)
{
switch(a[i]) //十六进制转换过程中整值((int)n)若大于'9',则必须输出相应的大写字母
{case 10: cout<<'A'; break;<br> case 11: cout<<'B'; break;<br> case 12: cout<<'C'; break;<br> case 13: cout<<'D'; break;<br> case 14: cout<<'E'; break;<br> case 15: cout<<'F'; break;<br> default: cout<<a[i]; break; <strong> //若整值((int)n)不大于'9',则原样输出<br></strong> }
}
cout<<endl;
}
void main() //主函数
{
double p;
int flag;
for(;;) //循环体
{
cout<<"输入一个要转换的实数p:";
cin>>p;
cout<<"输出转换后的实数:\n";
//转换之后实数的整数部分与小数部分之间用小数点'.'连接
cout<<" 2进制: "; f1(p,2); cout<<'.'; f2(p,2); //执行2进制转换及输出结果
cout<<" 8进制: "; f1(p,8); cout<<'.'; f2(p,8); //执行8进制转换及输出结果
cout<<"16进制: "; f1(p,16); cout<<'.'; f2(p,16); //执行16进制转换及输出结果
cout<<"Continue?('0': exit):"; //提示是否继续进行操作的信息
cin>>flag;
if(flag==0) break; //若flag值为0,循环体结束,跳出程序调试环境
cout<<endl;
}
cout<<endl;
}本回答被网友采纳
第2个回答  2013-08-13
这是以前写的一个十进制转换二进制,八进制,十六进制输出的.在VC6中测试通过. 你参考下. #include <stdio.h>/*输出*/
void print(int i,char *s)
{
while(i--)
{
printf("%c",s[i]);
}
printf("\n");
}/*十进制转换八进制*/
void TentoE(int n)
{
int i=0;
char str[10];

while(n>0)
{
str[i]=n%8+'0';
n/=8;
i++;
}
printf("八进制:");
print(i,str);
}/*十进制转换十六进制*/
void TentoHex(int n)
{

int i=0,t;
char str[10];

while(n>0)
{
t=n%16;
if(t>=10)
{
str[i]=t%10+'a';
}
else
str[i]=n%16+'0';
n/=16;
i++;
}
printf("十六进制:");
print(i,str);
}/*十进制转换二进制*/
void TentoB(int n)
{
int i=0;
char str[20]="\0";

while(n>0)
{
str[i]=n%2+'0';
n/=2;
i++;
}
printf("二进制:");
print(i,str);
}
void main()
{
int x;
scanf("%d",&x);
TentoB(x); //转换二进制并输出
TentoE(x); //转换八进制并输出
TentoHex(x); //转换十六进制并输出

}
第3个回答  2013-08-13
我学的也是c++ 给你个简单的进制转换的程序#include<iostream.h>
void look(int x)
{ if(x==1)
cout<<"1";
else
{look(x/2);<br> cout<<x%2;<br> }
}
void main()
{ int a=1;
cout<<"decimal"<<'\t'<<"binary"<<'\t'<<"octal"<<'\t'<<"hexadecimal"<<endl;
while(a<=256)
{cout<<dec<<a<<'\t'; look(a);cout<<'\t'<<oct<<a<<'\t'<<hex<<a<<endl;<br> a++;<br> }
}

编写一个VC++程序把十进制数转化成二进制,八进制,十六进制。
printf("please input the integer:"); \/\/要转换的十进制数 scanf("%ld",&n);printf("please input the radix:"); \/\/ 进制数,可以为2、8、16 scanf("%d",&radix);trans(n,radix,a); \/\/调用函数 \/\/for(int i=strlen(b)-1;i>=0;i--)\/\/ printf("%c",*(b+i));...

求c++各进制转换的代码(double浮点数)
void hex();void main(){ printf("进制转换器\\n");int select;do { printf("===\\n");printf("0、退出\\t1、十进制~二进制\\t2、十进制~八进制\\t3、十进制~十六进制\\n");printf("请选择功能:");scanf("%d",&select);if(select==0){ break;} switch(select){ case 1: binarysys(...

...键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同...
return 0; \/\/栈空 else{ x=S.data[S.top];S.top--;return 1;} } void display(Stack &S){ int x;while(S.top!=-1){ pop(S,x);cout<<x<<' ';} cout<<endl;} \/\/应用程序 void func(int n,int m)\/\/n为十进制数,m为2,8,或16 { Stack S;InitStack(S);while(n!=...

简易的10进制整数进制转换程序,要求支持2进制 8进制 支持16进制 要简单...
C语言,输出八、16进制形式,都有格式符。输出2进制,需要按照位,来输出。下列程序, 即可达到不同进制的输出要求。include <stdio.h> void main(void){ unsigned char xxx = 0, i;printf("输入一个十进制数字(0~15): ");scanf("%d", &xxx);printf("\\n十进制形式: %d. ", xxx);pri...

C++:如何输出2进制数
include<stdio.h> void a2();void a8();void a16();void main(){ int a;do { printf("\\n 菜单\\n");printf("---\\n");printf("1、十进制~二进制\\n");printf("2、十进制~八进制\\n");printf("3、十进制~十六进制\\n");printf("0、退出\\n");printf("\\n");printf("请选...

求用C语言编写代码,输入二进制数,输出十进制数,八进制数,十六进制数
\/\/#include "stdafx.h"\/\/vc++6.0加上这一行.include "stdio.h"void main(void){ char binary[33],i=0,x;int n=0;printf("Type a binary(<33 bit)...\\n");while((x=getchar())=='0' || x=='1'){ binary[i++]=x;if(i==33) break;} binary[i]='\\0';for(i=0;...

用VC++编制程序输入十进制数10,输出它的八进制和十六进制数
include <iostream> include <cmath> using namespace std;int main(){float a;cout<<"请输入一个十进制数:" ;cin>>a;cout<<hex<<a<<endl;cout<<oct<<a<<endl;return 0;}

C++ 将十六进制转换为八进制 帮忙看下我的代码
void f(int x,int y);int main(){ cout<<endl<<"欢迎使用进制转换程序!"<<endl;cout<<" 1. 十进制 "<<endl<<endl;cout<<" 2. 二进制 "<<endl<<endl;cout<<" 3. 八进制 "<<endl<<endl;cout<<" 4. 十六进制 "<<endl<<endl;cout<<" 0. 退出 "<<endl<<endl;cout<<"请...

c语言中我有个10进制数比如20000 我要怎么把它变成16进制数然后分别取高...
include <stdio.h> int main() { unsigned short num = 20000;printf("%d的低八位为 : %X\\n",num,num&0XFF);printf("%d的高八位为 : %X\\n",num,(num>>8)&0XFF);return 0;}

c语言中,我将一个十进制数转换成二进制并输出,怎么能让他在输出时每八...
数据在内存中本来就是以二进制补码存放的,设法从高字节至低字节一个bit一个bit地输出到屏幕上即可。根据题面要求,输出过程还要做以下工作:从最高字节开始检测,全0的字节略去;每8位增加输出一个空格。代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"...

相似回答