将10进制整数转换任意进制输出

//10进制转换为2/8/16进制的算法就是10进制整数先对相应的进制取余,然后将余数逆序输出。

#include <stdio.h>

#include <string.h>


void hex(char str[],int num,int n)
{
int i = 0;

while(num != 0) //判断输入的整数是否为0;非0进行循环;
{
str[i] = num % n; //对输入的整数要转化的进制取余;
if(str[i] <= 9) //判断余数是否大于9;若大于9则为16进制,进入switch语句;否则为2进制或者8进制;
{
str[i] = str[i] ;
}
else
{
switch(str[i]) //相应的16进制转换;
{
case 10 : str[i]=A;break;
                case 11 : str[i]=B;break;
                case 12 : str[i]=C;break;
              case 13 : str[i]=D;break;
              case 14 : str[i]=E;break;                    
              case 15 : str[i]=F;break;        
                default : break;


}
}
i++; //计算转换后进制的长度;
num = num / n;
}
str[i] = 0; //当输入的整数为0;

}
void reverse(char p[])
{
int i = 0;
int len = 0;
char temp = 0;

len = strlen(p); //计算进制转换后长度;

for(i = 0; i < len / 2; i++) //转换顺序;
{
temp = p[i];
p[i] = p[len - 1 - i];
p[len - 1 -i] = temp;
}
}
int main()
{
int num = 0;
int n = 0;
char s[100] = {0};

printf("please input (整数和进制,以空格间隔开):\n"); //输入整数以及所要转换的进制;
scanf("%d %d",&num,&n);

hex(s,num,n); //调用取余函数;转化成相应的进制;
reverse(s); //调用逆序函数;

printf("%d\n",s); //打印最后得到的结果;

return 0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值