N=5142;
N N/8(整除) N%8(求余)
5142 642 6
642 80 2
80 10 0
10 1 2
1 0 1
八进制结果是:12026
class Program
{
static void Main(string[] args)
{
Program p = new Program();
Console.WriteLine("十进制18到八进制的转换(使用递归):");
Console.WriteLine(p.TenConverToEight(5142).ToString());
Console.WriteLine("十进制18到八进制的转换(使用栈结构):");
Console.WriteLine(p.TenConverToEightString(18));
Console.ReadLine();
}
//递归求解
public int TenConverToEight(int num)
{
if (num == 0)
{
return 0;
}
return TenConverToEight(num / 8)*10 + num % 8;
}
//使用栈结构
public string TenConverToEightString(int num)
{
Stack<int> temp = new Stack<int>();
do
{
temp.Push((num % 8));
num = num / 8;
} while ( num > 0);
//输出最终结果
StringBuilder builder = new StringBuilder();
//foreach (int item in temp)
//{
// builder.Append(item.ToString());
//}
int count = temp.Count;
for (int i = 0; i < count; i++)
{
builder.Append(temp.Pop());
}
return builder.ToString();
}
}