练习3-5,编写函数itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。例如,itob(n, s, 16)把整数n格式化成16进制整数保存在s中。

C程序设计语言,练习3-5

测试结果与代码如下,有bug欢迎指正!
练习3-5,编写函数itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。例如,itob(n, s, 16)把整数n格式化成16进制整数保存在s中。_第1张图片
代码:

#include 
#include 
#include 

void itob(int n,char *s,int b);
void reverse(char *s);

int main()
{
	char s[100];
	int n,b;
	printf("输入带转换数:\n");
	scanf_s("%d",&n,sizeof(int));
	printf("输入底数:\n");
	scanf_s("%d",&b,sizeof(int));
	itob(n,s,b);
	printf("转换结果为:\n%s\n",s);
	return 0;
}

void itob(int n,char *s,int b)
{
	int i = 0,sign;
	if((sign = n) < 0)
		n = -n;
	do{
		s[i] = n % b + '0';
		if(s[i] - '9' > 0)
			s[i] = 'a' + s[i++] - 9 - 1;
		i++;
	}while((n /= b) > 0); 
	if(sign < 0)
		s[i++] = '-';
	s[i] = '\0';
	reverse(s);
}

void reverse(char *s)
{
	char s2[100];
	int i,len;
	len = strlen(s);
	for(i = 0; i < len; i++)
		s2[len-i-1] = s[i];
	s2[i] = '\0';
	for(i = 0; i < (int)strlen(s2); i++)
		s[i] = s2[i];
}

你可能感兴趣的:(练习3-5,编写函数itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。例如,itob(n, s, 16)把整数n格式化成16进制整数保存在s中。)