用c语言写一个程序。输入十进制整数N和待转换的进制x(2、8、16),分别代表十进制N转换成二进制、八进制和十六进制,输出对应的结果。十六进制中A~F用大写字母表示 输入格式: 输入两个整数N(十进制整数N)和x(x进制),中间用空格隔开。 输出格式: 输出对应的结果
时间: 2024-10-13 20:13:03 浏览: 55
进制转换:输入一个十进制数n,把它转化为r进制数输出
以下是用C语言编写的程序,可以将给定的十进制整数N转换为二进制、八进制和十六进制:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Function to convert decimal to binary
char* decToBin(int n) {
char *binary = malloc(sizeof(char) * 33);
sprintf(binary, "%d", n);
while (binary[strlen(binary)-1] == '0') {
binary[strlen(binary)-1] = '\0';
}
strcat(binary, "b");
return binary;
}
// Function to convert decimal to octal
char* decToOct(int n) {
char *octal = malloc(sizeof(char) * 21);
sprintf(octal, "%o", n);
if (strlen(octal) > 1 && octal[strlen(octal)-1] == '0') {
octal[strlen(octal)-1] = '\0';
}
strcat(octal, "O");
return octal;
}
// Function to convert decimal to hexadecimal
char* decToHex(int n) {
char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char *result = malloc(sizeof(char) * 17);
for (int i = 0; n > 0; n /= 16, i++) {
result[i] = hex[n % 16];
}
result[i] = '\0';
strcat(result, "H");
return result;
}
int main() {
int N, x;
// 输入
printf("请输入十进制整数N和进制x(2、8、16),中间用空格隔开:\n");
scanf("%d %d", &N, &x);
// 转换并输出
switch (x) {
case 2:
printf("二进制: %s\n", decToBin(N));
break;
case 8:
printf("八进制: %s\n", decToOct(N));
break;
case 16:
printf("十六进制: %s\n", decToHex(N));
break;
default:
printf("无效的进制选择!\n");
}
free(decToBin(N));
free(decToOct(N));
free(decToHex(N));
return 0;
}
```
这个程序包含三个辅助函数:decToBin(), decToOct(), 和 decToHex() 分别负责将十进制转换为二进制、八进制和十六进制。在main函数中,根据用户输入的进制x进行相应的转换并输出结果。注意,这个程序假设输入的x为2、8或16。如果用户输入其他值,程序会输出错误信息。
阅读全文