将十进制数 N 转换为 r 进制的数,其转换方法利用辗转相除法:以 N=3456,r=8 为例C语言
时间: 2024-09-26 20:14:20 浏览: 38
在C语言中,将十进制数N转换为任意基数r(这里以r=8为例)可以使用循环和取模运算(%),同时记录每一位的值。下面是一个简单的函数示例:
```c
#include <stdio.h>
// 函数用于将十进制数转换为八进制字符串
char* decimalToOctal(int n) {
static char octalStr[100]; // 存储结果的字符数组
int i = 0;
if (n == 0) {
octalStr[i++] = '0'; // 特殊情况处理,0直接转化为'0'
} else {
while (n > 0) {
octalStr[i] = n % 8 + '0'; // 取余并转为字符(0-7),加'0'转换为字符表示
n /= 8; // 商作为下一次计算的基数
i++;
}
}
octalStr[i] = '\0'; // 结束符
octalStr = octalStr + i - 1; // 移动指针到字符串开始位置
return octalStr;
}
int main() {
int decimalNum = 3456;
char* octalNum = decimalToOctal(decimalNum);
printf("十进制数 %d 转换成八进制是 %s\n", decimalNum, octalNum);
return 0;
}
```
在这个例子中,`decimalToOctal`函数接收一个十进制数,通过循环不断对n取模8并将结果添加到字符串的前面,最后返回转换后的八进制字符串。
阅读全文