您的位置:首页 > 编程语言 > C语言/C++

将10进制数转换成任意进制数

2016-11-22 21:56 363 查看
要想解决这个问题我们先来看看10进制转2进制的代码

#include<stdio.h>
main()
{
int n,i,a[100],j=0;
scanf("%d",&n);
while (n) //当n为0时,也就是n/2为0时就取余完毕停止循环
{
a[j++]=n%2; //将每次的余数放在数组a中
n=n/2;
}
for (i=j-1;i>=0;i--) //将数组逆序输出
printf("%d",a[i]);
printf("\n");
}我们再来看看10进制转16进制的
#include <stdio.h>
main()
{
int i,j=0,n,m,a[100]={0};
char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",&n);
while (n)
{
a[j++]=n%16;
n=n/16;
}
for (i=j-1;i>=0;i--)
{
m=a[i];
printf("%c",b[m]); //m作为下标值对应到b数组
}
}
用到了函数递归,不是太懂以后再看吧
#include<stdio.h>
void binary(int, int);
int main()
{
int N, R;
while(scanf("%d %d", &N, &R)!=EOF)//输入数和进制
{
if(N==0)
printf("%d",0);  //输入的是0直接输出0
else if(N<0)
{
printf("-");
N=-N;
}
binary(N, R);//把N,R发送过去
printf("\n");
}
return 0;
}

void binary(int n, int r)
{
int m;
if(n==0)
return;
else
{
binary(n/r, r);   // 将n/r返回给自身
m=n%r;           //取余数
if(m<10)
printf("%d", m);
else
printf("%c", 'A'+m-10);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言