您的位置:首页 > 其它

编写一个函数itob(),将整数n转换为以b进制的数,保存到s中

2015-11-04 22:54 711 查看
编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数,保存到s中。
对于转换的进制b,如果小于10,可通过n模b再加上'0',即为最后一位数,将其保存在数组str[]中,通过n/b依次得到其他数字。如果为十六位进制,需要再定义一个数组p,p为"0123456789ABCDEF",再将n模b的值保存在数组str[]中,通过n/b依次得到其他数字。最后逆置整个数组就可以得到转换后的数。
代码如下:
#include<stdio.h>
#include<stdlib.h>

void reverse(char str[],int len)//逆序整个字符数组
{
int left=0;
int right=len-1;
while(left<right)
{
char temp=str[left];
str[left]=str[right];
str[right]=temp;
left++;
right--;
}
}

void itob(int num, char str[],int b)
{
int i=0;
while(num)
{
if(b<10)//b进制
{
str[i]=num%b+'0';//数字逆序存入字符数组中
num/=b;
}
else if(b==16)
{
char *p="0123456789ABCDEF";
str[i]=p[num%b];//p[num%b]等价于*(p+(num%b))
//上面两个语句可写为str[i]="0123456789ABCDE"[num%b];
num/=b;
}
else break;
i++;
}
str[i]='\0';
reverse(str,i);
}

int main()
{
char str[32];
int num,b;
printf("请输入正数和转化的进制>\n");
scanf("%d%d",&num,&b);
itob(num,str,b);
printf("%s\n",str);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息