您的位置:首页 > 其它

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

2017-11-26 22:25 357 查看
//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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐