C语言实现任意进制之间的转换


在程序中#的部分自己写代码实现相关功能*/
#include 
#include 
#include 
int TenNum(char a[], int B);  //将输入的数字转换成10进制数
void Numchange(int m, int B); //将转换好了的10进制数转换为所需进制数
int TenNum(char a[], int B)//将输入的数转化为十进制
{
	int len, i, num;
	int sum = 0;
	len = strlen(a); //求得字符串长度
	for (i = 0; i < len; i++)
	{
		if (a[i] >= '0' && a[i] <= '9')
			num = a[i] - '0';
		else if (a[i] >= 'A' && a[i] <= 'F')
			num = a[i] - 'A' + 10;
		sum = sum * B + num;
	}
	return sum;
}
void Numchange(int m, int B)//对十六进制的转换
{
	int n;
	if (m)
	{
		Numchange(m / B, B);
		n = m % B;
		if (n < 10)
			printf("%d", n);
		else
		{
			if (n == 10)
				printf("A");
			if (n == 11)
				printf("B");
			if (n == 12)
				printf("C");
			if (n == 13)
				printf("D");
			if (n == 14)
				printf("E");
			if (n == 15)
				printf("F");
		}
	}
}
int main()
{
	int B, b;
	char a[20];
	printf("请输入待转换数的进制(2-16):");
	do
	{
		scanf("%d", &B);
	} while (B < 2 && B > 16);
	printf("请输入待转换数:");
	getchar();
	gets(a);			  //将输入的n进制数存放在数组a中
	int m = TenNum(a, B); //将输入的数字转换成十进制数
	printf("请输入需要转成几进制数(2-16):");
	do
	{
		scanf("%d", &b);
	} while (B < 2 && B > 16);
	printf("%d进制数%s转换为%d进制数的结果为:", B, a, b);
	Numchange(m, b); //将十进制数转换为所需进制数
	printf("\n");
	system("pause");
	return 0;
}

此代码,目的是将输入的数据统统转为十进制,然后再由十进制转为各种所需进制。

采用函数调用的方法,函数调用即使用定义好的函数,其一般形式为:

函数名称(实参);

注意:实参可以是常数,变量,表达式等,多个实参用逗号隔开

函数可以嵌套调用,但不能嵌套定义,即在一个函数定义或调用的过程中允许出现对另外一个函数的调用。

如果一个函数int()在定义或调用的过程中出现了对另外一个函数A()的调用,那么称int()为主函数,A()为被调函数。例代码段中void Numchange()为被调函数,int()为主函数。

当主函数遇到被调函数时,主函数会暂停,转而执行被调函数的代码,被调函数执行完毕后再返回主调函数。

你可能感兴趣的:(C语言,c语言,学习)