C语言数制转换
作者:野牛程序员:2023-08-23 11:40:07C语言阅读 2830
C 语言中可以通过代码实现不同进制(如十进制、二进制、八进制、十六进制)之间的转换。以下是几种常见的数制转换示例:
1. 十进制转其他进制:
#include <stdio.h>
// 十进制转其他进制
void decimalToOther(int num, int base) {
if (num == 0) {
printf("0\\n");
return;
}
char result[32]; // 存放转换结果
int index = 0;
while (num > 0) {
int remainder = num % base;
if (remainder < 10) {
result[index++] = remainder + '0';
} else {
result[index++] = remainder - 10 + 'A';
}
num /= base;
}
printf("转换结果:");
for (int i = index - 1; i >= 0; i--) {
printf("%c", result[i]);
}
printf("\\n");
}
int main() {
int decimalNum;
printf("请输入一个十进制数:");
scanf("%d", &decimalNum);
printf("转换为二进制:");
decimalToOther(decimalNum, 2);
printf("转换为八进制:");
decimalToOther(decimalNum, 8);
printf("转换为十六进制:");
decimalToOther(decimalNum, 16);
return 0;
}2. 其他进制转十进制:
#include <stdio.h>
#include <math.h>
// 其他进制转十进制
int otherToDecimal(const char *num, int base) {
int decimalNum = 0;
int length = strlen(num);
for (int i = length - 1; i >= 0; i--) {
int digit;
if (num[i] >= '0' && num[i] <= '9') {
digit = num[i] - '0';
} else if (num[i] >= 'A' && num[i] <= 'F') {
digit = num[i] - 'A' + 10;
} else if (num[i] >= 'a' && num[i] <= 'f') {
digit = num[i] - 'a' + 10;
} else {
printf("无效的输入\\n");
return -1;
}
decimalNum += digit * pow(base, length - 1 - i);
}
return decimalNum;
}
int main() {
char num[32];
int base;
printf("请输入一个数字和它的进制(如 101 2):");
scanf("%s %d", num, &base);
int decimalNum = otherToDecimal(num, base);
if (decimalNum != -1) {
printf("转换为十进制:%d\\n", decimalNum);
}
return 0;
}以上代码示例演示了十进制与其他进制之间的相互转换,具体转换方式可以根据进制的特点来处理。需要注意输入的合法性以及不同进制的表示方式。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

