1.十进制转n进制
我们以十六进制为例:
利用字符串数组 对n位的字符串 第n位要乘以16的n-1次方,以此类推
#include <stdio.h>
#define N 100
int main()
{
char a[N];
int i = 0, re = 0;
printf("Enter a string:");
gets(a);
printf("New string:");
while (a[i]) //当读取到输入的最后一个字符之后,读取到0,跳出循环
{
if (a[i] >= '0' && a[i] <= '9') {
re = re * 16 + a[i] - '0';
} //a[i]-'0'利用ASCII码值差值求该位的值
else if (a[i] >= 'a' && a[i] <= 'f') {
re = re * 16 + a[i] + 10 - 'a';
} //a[i]-'a'利用ASCII码值差值求该位的值
else if (a[i] >= 'A' && a[i] <= 'F') {
re = re * 16 + a[i] + 10 - 'A';
} //a[i]-'A'利用ASCII码值差值求该位的值
i++; //从最高位依次往低一位遍历
}
printf("\nnumber=%d", re);
return 0;
}
2.n进制转化成十进制
首先我们要创建一个数组 ,存储着n进制下的字母形式(a-z/A-Z)
然后一遍遍让输入的数a 除以n,并将a%n的数字代入到一开始创建的那个数组中,求出十进制下的值(以完成转换)
char q[20] = { '0','1','2','3','4','5','6','7'};
void turn(int a)
{
int s[10] = { 0 };
int i = 0; int sum = 0;
while (a != 0)
{
s[++i] = q[a % 8];
a = a / 8;
}
for (i = i; i > 0; i--)
{
printf("%c", s[i]);
}
}
int main()
{
int a = 16;
turn(a);
return 0;
}