c语言写一个十进制转任意进制
时间: 2024-10-05 21:00:30 浏览: 50
十进制转换至任意进制数——C语言代码
在C语言中,你可以使用`sprintf`函数结合数组来将十进制转换成任意进制。下面是一个基本的函数示例,用于将给定的十进制数字转换为用户指定的基数(进制):
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个字符串缓冲区
char buffer[100];
// 十进制转任意进制的函数
void decimalToBase(int num, unsigned base) {
char* result = buffer; // 结果指针
// 将数值转换为字符串
sprintf(result, "%u", num); // 首先转换为无符号整数表示
result[strlen(result) - 1] = '\0'; // 删除多余的'U'
// 循环计算每个位的值
for (int i = strlen(result) - 1; i >= 0; i--) {
*result = (result[i] - '0') % base; // 转换字符到对应进制数值
*result *= base; // 计算当前位值
result++; // 移动到下一个位置
}
// 添加前导零(如果必要)
while (*result == '0' && result > buffer) {
result--;
}
*result = '\0'; // 结束字符串并添加终止符
printf("十进制数 %d 转换成 %u进制后是:%s\n", num, base, buffer);
}
int main() {
int decimal_num;
unsigned base;
printf("请输入十进制数: ");
scanf("%d", &decimal_num);
printf("请输入要转换的进制(2~36): ");
scanf("%u", &base);
// 检查进制是否合法
if (base < 2 || base > 36) {
printf("错误的进制!\n");
return 1;
}
decimalToBase(decimal_num, base);
return 0;
}
阅读全文