#include <stdio.h>
int main() {
int decimal; // 存储输入的十进制整数
int temp; // 临时存储十进制数(保护原始输入不被修改)
int remainder; // 存储每次除以3得到的余数
int i = 0; // 数组下标计数器
int ternary[100]; // 存储三进制各位余数(低位→高位),足够容纳常规整数
// 输入提示:decimal(保持之前的设置)
printf("decimal: ");
scanf("%d", &decimal);
// 特殊情况处理:输入为0时,输出提示替换为ternary
if (decimal == 0) {
printf("ternary: 0\n");
return 0;
}
// 负数处理:输出提示替换为ternary
temp = decimal;
if (decimal < 0) {
temp = -temp; // 转为正数执行取余运算
printf("ternary: -");
} else {
// 正数情况:输出提示替换为ternary
printf("ternary: ");
}
// 核心算法:除3取余法,存储余数(低位→高位)
while (temp > 0) {
remainder = temp % 3; // 取当前数除以3的余数
ternary[i++] = remainder; // 存入数组,下标自增
temp = temp / 3; // 更新为商(整数除法,舍弃小数部分)
}
// 逆序输出:数组中是低位在前,逆序后得到高位在前的正确三进制数
for (int j = i - 1; j >= 0; j--) {
printf("%d", ternary[j]);
}
printf("\n");
return 0;
}