求用c语言编的2进制转8进制 要求有进栈出栈的 急用 谢谢合作

2025-12-14 20:51:15
推荐回答(1个)
回答1:

//二进制转八进制
//输入:szBin 二进制表示的字符串
//输出:szOct 八进制表示的字符串
void BinToOct(char *szBin, char *szOct)
{

int nLen = strlen(szBin);
if (nLen == 0) return;
int nPos = (nLen <= 3) ? 0 : nLen - 3;
char temp[4];
strcpy(temp, szBin + nPos);
szBin[nPos] = '\0';
BinToOct(szBin, szOct);//这里就是你要的入栈操作

int nOct = 0;
int nRadix = 1;
for (int i = strlen(temp) - 1; i >= 0; i--)
{
nOct += ((temp[i] - '0') * nRadix);
nRadix *= 2;
}

sprintf(temp, "%d", nOct);
strcat(szOct, temp);
//递归函数退出时就是出栈了
}