请编写程序实现十进制转换为二进制、八进制、十六进制。要求如下:

(1)输入一个十进制数N,将它转换成R进制数输出。
(2)输入数据包含多个测试实例,每个测试实例包含两个整数:
N(整数)和R(2<=R<=16, R!=10)。
(3)输出数据单独占一行。

#include<stdio.h>
void convert(unsigned int n, unsigned int r){
int i = 0;
switch(r){
case 2:
for(i=0; i<16; i++){
printf("%d",(n&0x8000)>>15);
n<<=1;
}
printf("\n");
break;
case 8:
printf("%o\n",n);
break;
case 16:
printf("%X\n",n);
break;
default:
printf("Error input R!\n");
}
}
int main(){
unsigned int n,r;
scanf("%d%d",&n,&r); 
convert(n,r);
return 0;
}

追问

能不能用栈来实现

追答

数据结构题?

追问

嗯嗯 对的

追答

我先吃饭,吃完饭给你弄啊

追问

好的

追答#include<stdio.h>
#define uint unsigned int

uint stack[16];
int index=-1;

void push(uint* p,  uint data){//压栈 
index ++;
*(p+index)=data;
}
void pop(uint* p){//弹栈 
printf("%X",*(p+index));
index--;
}
void convert(uint* p,  uint data, uint r){//转换函数 

while(data/r != 0){
push(p,  data%r);
data /= r;
}
push(p, data);
while(index>=0){
pop(p);
}
}
int main()
{
uint data = 0, r = 0;
scanf("%d%d", &data, &r);
convert(stack,  data, r);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-25
chararr;intn;scanf("%c",&arr);n=arr-'0';这样就将其转化成10进制了,你再将其转化成二进制就可以载得到八进制和十六进制了追问

能不能给出个完整的程序

请编写程序实现十进制转换为二进制、八进制、十六进制。要求如下:
\\n");}}int main(){unsigned int n,r;scanf("%d%d",&n,&r); convert(n,

...实现十进制数转换成二进制数、八进制数、十六进制数的功能。_百度知...
itoa(L1, str1, 2);itoa(L1, str2, 8);itoa(L1, str3, 16);printf("2进制:%s\\n8进制:%s\\n16进制:%s\\n",str1,str2,str3);return 0;}

10进制向2进制,8进制,16进制转换!我写的程序,输入数字后就停止工作了...
void two();void eight();void tensix();void main(){ int b;\/\/功能号 b=10;while(b!=0){ printf("\\n0.退出;1.转换为二进制数;2.转换为八进制数;3.转换为十六进制数\\n");printf("请选择功能号:");scanf("%d",&b);switch(b){ case 0:break;case 1:two();break;case 2:e...

10进制转为2进制、8进制、16进制的公式
则214(十进制)=326(八进制)。3、十进制整数转十六进制数方法:除以16取余,逆序排列(除16取余法)具体做法:用16整除十进制整数,可以得到一个商和余数;再用16去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二...

编写一个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语言编程实现十进制选择转换为二进制八进制和十六进制
include include include \/*该函数可以实现小于整型数据的任意进制之间转换*\/ \/*以下函数将a进制数s转换成b进制并输出*\/ void f(int a,int b,char s[]){ char r[17];int i,n,t,k;for(n=strlen(s)-1,i=t=0;*(s+i)!='\\0';i++,n--) \/*这里先转换成十进制数*\/ { if(*(s...

...一个程序可以将十进制、二进制、八进制、十六进制数之间相互转换...
\/* 十进制到任意进制的转换 *\/ include<stdio.h> include<math.h> void main(){ int p(int x,int y);int a,x,i,c;char cc;printf("要转换的进制为:\\n");scanf("%d", &a);printf("请输入一个十进制数:\\n");scanf("%d", &x);for(i=1;;i++)if(x\/(int)pow(a,i)...

...可实现加减乘除取匀,十进制转换成二进制,8进制,16进制。谢谢...
"请输入一个十进制:b= "); scanf("%d",&b); do { c[i]=b%2; b=b\/2; i++; j++; } while(b!=1); c[j]=1; printf("二进制为: "); for(i=j;i>=0;i--) printf("%d",...

编程实现:输入一个十进制数,转换成对应的二进制数、八进制数和十六进制...
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...

请问用C语言编写一个十进制转换成二进制或八进制或十六进制的程序需要...
voidmain(){ \/\/进制转换函数的声明 inttransfer(intx);intx;printf("请输入一个十进制数:");scanf("%d",&x);printf("转换成二进制数是:%d\\n",transfer(x));} inttransfer(intx){ intp=1,y=0,yushu;while(1){ yushu=x%2;x\/=2;y+=yushu*p;p*=10;if(x<2){ y+=x*p;break;...

相似回答