请帮我用C加加栈的知识完成此题编写一个程序实现十进制整数转换成其他进制的数。 1)提示用户输入待转换十进制整数和待转换的进制数(2-16)。 2) 输出转换后的数。
时间: 2024-09-18 20:16:09 浏览: 54
可以使用C语言的数组和循环结构来实现这个功能。这里我们可以创建一个函数,接受两个参数:十进制数和目标进制数。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 函数用于将十进制转为任意进制
char* decimal_to_base(int decimal, int base) {
static char result[50];
if (decimal == 0) {
result[0] = '0';
return result;
}
// 初始化结果字符串
result[0] = '\0';
while (decimal > 0) {
int remainder = decimal % base;
result(strlen(result) - 1] = (remainder <= 9) ? ('0' + remainder) : ('A' + remainder - 10);
decimal /= base;
}
// 如果最开始的数字是0,不需要显示前导零
if (result[0] == '0') {
result[0] = '\0';
}
return result;
}
int main() {
int decimal_num, base;
printf("请输入待转换的十进制整数: ");
scanf("%d", &decimal_num);
printf("请输入目标进制(2-16): ");
scanf("%d", &base);
// 检查目标进制的有效范围
if (base < 2 || base > 16) {
printf("无效的进制! 请重新输入。\n");
return 1;
}
char* converted_num = decimal_to_base(decimal_num, base);
printf("转换后的数(%d进制): %s\n", base, converted_num);
free(converted_num); // 注意释放内存
return 0;
}
```
在这个程序中,我们首先获取用户的输入,然后检查目标进制是否在有效范围内。接着,`decimal_to_base`函数通过循环计算余数并将它们添加到结果字符串的前面,直到十进制数变成0。最后,在main函数中打印出转换后的数值。
阅读全文