C语言数制转换
作者:野牛程序员:2023-08-23 11:40:07C语言阅读 2648
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
