编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。
在本题中,二进制、八进制及十进制算法思路一样,采取模除的方式,输出各个位置的数,接着采用逆序输出。在十六进制中"0123456789abcdef"[num%16],求出各位的数字。
#include<stdio.h>
void reverse(int len,char arr[]) //逆置
{
int left =0;
int right =len -1;
while(left < right)
{
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
right --;
left ++;
}
}
void itob(int num,char s[], int n) //以n进制形式输出
{
int i=0;
while(num)
{
if(n<10)
{
s[i]=num% n+‘0‘;
num /= n ; //模除
i++;
}
else if(n==16)
{
s[i]="0123456789abcdef"[num%16];
num/=16;
i++;
}
else
{
break;
}
}
s[i]=‘\0‘;
reverse(i , s);
}
int main()
{
char s[32];
int n=0;
int num;
scanf("%d",&n);
printf("num=");
scanf("%d",&num);
itob(num,s, n);
printf("%s\n",s);
return 0;
}本文出自 “朔月云影” 博客,请务必保留此出处http://19940325.blog.51cto.com/10789287/1718698
编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。
原文:http://19940325.blog.51cto.com/10789287/1718698