1.十进制转二-九进制
void DecToNum(int dec, int hex) //dec 代表十进制数,hex代表要转成什么进制
{
if(dec)
{
DecToAny(x / hex, hex);
printf("%d", x % hex);
}
}
3.二-九进制转十进制
void NumToDec(int num, int hex) //num是输入的数字,hex是该数字的进制形式
{
int dec = 0;
int k = 1;
while(num)
{
dec = dec + num % 10 * k;
num = num / 10;
k = k * hex;
}
printf("%d\n", dec);
}
2.十进制转任意进制
void DecToAny(int dec, int hex)//dec 代表十进制数,hex代表要转成什么进制
{
if(dec)
{
DecToAny(dec / hex,hex);
if(dec % hex < 10)
{
printf("%d", dec % hex);
}
else
{
printf("%c", dec % hex - 10 + 'A');
}
}
}
4.任意进制转十进制
#include<ctype.h>
void AnyToDec(char input[], int hex)//input是输入的数字,hex是该数字的进制形式
{
int length, i, num, dec = 0;
length = strlen(input);
for(i = 0; i < length; i++)
{
if(input[i] >= '0' && input[i] <= '9')
{
num = input[i] - '0';
}
else if(isupper(input[i])) //else if(input[i] >= 'A' && input[i] <= 'Z')
{
num = input[i] - 'A' + 10;
}
else if(islower(input[i])) //else if(input[i] >= 'a' && input[i] <= 'z')
{
num = input[i] - 'a' + 10;
}
dec = dec * hex + num;
}
printf("%d\n", dec);
}
5.任意进制转任意进制
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int AnyToDec(char input[], int hex)
{
int length, i, num, sum = 0;
length = strlen(input);
for(i = 0; i < length; i++)
{
if(input[i] >= '0' && input[i] <= '9')
{
num = input[i] - '0';
}
//else if(input[i] >= 'A' && input[i] <= 'Z' || input[i] >= 'a' && input[i] <= 'z')
else if(isupper(input[i]))
{
num = input[i] - 'A' + 10;
}
else if(islower(input[i]))
{
num = input[i] - 'a' + 10;
}
sum = sum * hex + num;
}
return sum;
}
void DecToAny(int x, int hex)
{
if(x)
{
DecToAny(x/hex,hex);
if(x % hex < 10)
{
printf("%d", x % hex);
}
else
{
printf("%c", x % hex - 10 + 'A');
}
}
}
int main()
{
int inhex, outhex;
char input[32] = {0};
int x = 0;
char again = 'y';
while(again == 'y'|| again == 'Y')
{
printf("\nSetting the hexadecimal form of input numbers:");
scanf("%d", &inhex);
printf("Input number: ");
scanf("%s", input);
x = AnyToDec(input, inhex);
printf("Target hexadecimal form(2-36):");
scanf("%d", &outhex);
printf("Convert resule: ");
DecToAny(x, outhex);
printf("\n*******IF CONTINUE [y|n]: ");
scanf(" %c", &again);
}
return 0;
}
(未完待续)