输入两个数,第一个数是一个十进制数number,第二个数是进制K,输出该十进制数转换成的对应进制的数(K应为2-16的整数,输出可以为字符型)用c语言完成
时间: 2024-10-05 15:01:21 浏览: 30
在C语言中,你可以使用`switch`结构和一些基本算术运算来实现这个功能。下面是一个简单的示例函数,它接收一个十进制数`number`和一个基数`base`,然后返回其转换后的字符串表示形式:
```c
#include <stdio.h>
#include <string.h>
// 函数用于将十进制数转换为指定进制的字符串
char* convertBase(int number, int base) {
static char result[32]; // 结果数组足够大以容纳16进制的最大值
if (base < 2 || base > 16) {
printf("Error: Base should be between 2 and 16.\n");
return "";
}
// 如果number为0,直接返回对应的基数字符
if (number == 0) {
return "0";
}
char convertedChar;
int remainder;
// 反转结果字符串便于正确排列
for (int i = sizeof(result) - 1; i >= 0; --i) {
remainder = number % base;
if (remainder < 10) {
convertedChar = '0' + remainder;
} else { // 对于10-15的数字,使用十六进制字母A-F
convertedChar = 'A' + (remainder - 10);
}
result[i] = convertedChar;
number /= base;
}
// 添加前导零(如果需要)
if (result[0] != '0') {
result[0] = '0';
}
result[sizeof(result) - 1] = '\0'; // 确保字符串结尾有'\0'
return result;
}
int main() {
int number;
int base;
printf("请输入十进制数: ");
scanf("%d", &number);
printf("请输入进制(2-16): ");
scanf("%d", &base);
char* convertedNum = convertBase(number, base);
printf("转换后的数字为: %s\n", convertedNum);
// 相关问题
阅读全文