用c语言编写把十进制正整数转换为S进制数输出的函数
时间: 2024-11-29 13:35:17 浏览: 4
在C语言中,可以编写不同的函数来实现不同进制的转换。这里有两个示例:
1. **将十进制正整数转换为二进制**[^1]:
```c
void decimalToBinary(int num) {
while (num > 0) {
a[l++] = num % 2;
num /= 2;
}
// 反转数组并输出
for (int i = l - 1; i >= 0; i--) {
printf("%d", a[i]);
}
}
```
调用这个函数时,传入十进制数值,它会返回其二进制表示。
2. **用递归方式将十进制正整数转换为八进制**[^2],这种方法适用于八进制,但同样原理可扩展到其他任意S进制:
```c
#include <stdio.h>
// 定义一个辅助函数用于计算最大公约数
int gcd(int x) {
return (x == 0) ? 0 : gcd(x / 8, x % 8);
}
// 主函数,将十进制转换为八进制
void decimalToOctal(int num) {
if (num / 8 != 0)
decimalToOctal(num / 8);
printf("%d", num % 8);
}
int main() {
int n;
scanf("%d", &n);
printf("%o", decimalToOctal(n)); // 输出八进制结果
return 0;
}
```
在这个递归版本中,`decimalToOctal` 函数会先递归地处理高位的数字,然后打印当前位的值。
阅读全文