C-编程练习写一个方法计算任意一个数的二进制数使用栈结构方式存储,之后打印出来
目录
C# 编程练习:写一个方法计算任意一个数的二进制数使用栈结构方式存储,之后打印出来
[
新星杯·14天创作挑战营·第15期
10w+人浏览
429人参与
](
)
一、任务:使用栈结构方式实现十进制转化为二进制
实现目标:
(1)使用栈结构
(2)实现转化为二进制
二、核心功能:十进制转二进制
通过栈结构实现十进制数到二进制数的转换,采用"除2取余法":
Stack stack = new Stack();
while (num >= 1)
{
stack.Push(num % 2); // 压入余数
num /= 2; // 更新商
}
三、三种栈遍历方法对比
方法1:foreach 遍历(只读)
foreach (object i in stack)
{
Console.Write(i); // 保持栈内容不变
}
特点:不修改栈结构,按LIFO顺序遍历
**输出顺序:**与二进制阅读顺序一致(正确顺序)
方法2:ToArray() 后正向遍历
object[] array1 = stack.ToArray();
for (int i = 0; i < array1.Length; i++)
{
Console.Write(array1[i]); // 数组正向遍历
}
**特点:**转换为数组后遍历,栈内容不变
**输出顺序:**与二进制阅读顺序一致(正确顺序)
方法3:Pop() 遍历(清空栈)
while (stack.Count > 0)
{
Console.Write(stack.Pop()); // 弹出并移除元素
}
特点:遍历后栈被清空,按LIFO顺序
输出顺序:与二进制阅读顺序一致(正确顺序)
四、完整代码
using System;
using System.Collections;
using System.Diagnostics;
using System.Xml.Linq;
namespace 进阶测试
{
class Program
{
static public void NumToBinary(int num)
{
Stack stack = new Stack();
while (num >= 1)
{
stack.Push(num%2);
num /= 2;
}
//遍历方法1:
foreach (object i in stack)
{
Console.Write(i);
}
Console.WriteLine();
Console.WriteLine("***************************************");
//遍历方法2:
object[] array1 = stack.ToArray();
for (int i = 0; i < array1.Length; i++)
{
Console.Write(array1[i]);
}
Console.WriteLine();
Console.WriteLine("***************************************");
//遍历方法3:
while (stack.Count>0)
{
Console.Write(stack.Pop());
}
}
static void Main()
{
int num = 0;
Console.WriteLine("请输入一个正整数");
num=int.Parse(Console.ReadLine());
NumToBinary(num);
}
}
}