栈顶应用很广泛,最简单的是进制转换。请书写一个用于进制转换的程序,程序可以进行十以内任意进制的转换。当用户输入从终端输入100和2是,输出十进制数100的二进制形式。如下所示:注:要求能进行十以内任意进制转换,比如输入100和9,则输出十进制数100的9进制形式,如下所示:
时间: 2024-09-27 17:15:34 浏览: 36
栈的应用3——进制转化_栈;进制转换_
当然,我们可以使用循环和除法来实现十进制转任意小数进制的程序。下面是一个简单的C语言示例,它实现了从十进制转换成其他任意不超过10的进制数的功能:
```c
#include <stdio.h>
#include <string.h>
// 十进制转其他进制数的辅助函数
char convert(int base, int digit) {
static const char digits[] = "0123456789ABCDEF";
return digits[digit];
}
// 主函数实现进制转换
void decimal_to_other_base(int decimal, int target_base) {
if (decimal < 0 || target_base <= 0 || target_base > 10) {
printf("Invalid input.\n");
return;
}
char result[32]; // 预估最长的10进制数字为3位,加上前导0和分隔符
sprintf(result, "%o", decimal); // 使用'o'代表八进制,因为它是默认的进制转换格式
// 将八进制结果转换为目标进制
int i = strlen(result) - 2; // 从最后一个非零字符开始
while (i >= 0) {
result[i + 1] = convert(target_base, result[i] - '0'); // 减去'o'字符的ASCII值对应十进制值
result[i + 2] = '\0';
i--;
}
printf("The number %d in base %d is: %s\n", decimal, target_base, result);
}
int main() {
int decimal = 100;
int target_base = 2;
decimal_to_other_base(decimal, target_base);
return 0;
}
```
当你运行此程序并输入100和2作为参数,它将会输出`100 in base 2 is: 1100100`,这是100的二进制表示。
阅读全文