内容发布更新时间 : 2025/1/9 17:28:30星期一 下面是文章的全部内容请认真阅读。
《数据结构》实验报告
说明:本软件在win7 64位系统测试通过,需要安装.net 3.5以上
版本
七、数制转换问题
1.问题描述
对于输入的任意一个非负十进制整数,输出与其等值的其他进制数(二进制、八进制或十六进制)。
2.任务要求
⑴ 建立模型,确定存储结构;
⑵ 对任意十进制数,实现进制转换问题。
3.实验指导
(1) 实验类型:
设计实验。本实验要求同学们针对“数制转换”这个经典的问题,应用栈的存储结构,自己设计一个方案,并上机实现。此实验的目的是培养学生对数据结构的简单应用能力。 (2) 预备知识:
栈的基本定义、栈的基本操作算法、栈的存储结构。 (3) 实现方法提示:
1) 以十进制转换为八进制为例。将十进制数整除8,计算过程中得到的余数依次进栈,按出栈序列输出栈中的内容即为与输入的十进制数对应的八进制数。设Conversion函数执行数制转换的操作,对(1348)10 转换为8进制的过程如下:
N 1348 168 21 2
2) 设计数制转换的算法。
N div 8 168 21 2 0
N mod 8 4 0 5 2
4.实现方案
1) 方案描述:
本方案采用C#语言实现,实现十进制与其他进制直接的转换 2) 实现代码:
主要实现代码如下
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;
using System.Windows.Forms;
namespace 进制转换器 {
public partial class MainFrm : Form {
public MainFrm() {
InitializeComponent(); }
private void MainFrm_Load_1(object sender, EventArgs e) {
txtStart.Focus(); }
///
/// 十进制转换为八进制 ///
///
private void radio_dto_Click_1(object sender, EventArgs e) {
txtEnd.Text = \;
if (txtStart.Text.Length != 0)
{
// TODO: 十进制转为八进制。 Int32 i; try {
i = Convert.ToInt32(txtStart.Text.Trim()); lblTitle.Text = \十进制转为八进制\; txtEnd.Text = Convert.ToString(i, 8); } catch {
MessageBox.Show(\请输入合法的十进制数\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else {
MessageBox.Show(\请提供转换数据!\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); }
txtStart.Focus(); }
///
/// 十进制转换为十六进制 ///
///
private void radio_dth_Click(object sender, EventArgs e) {
txtEnd.Text = \;
if (txtStart.Text.Length != 0) {
// TODO: 十进制转换为十六进制。 Int32 i; try {
i = Convert.ToInt32(txtStart.Text.Trim()); lblTitle.Text = \十进制转换为十六进制\; txtEnd.Text = Convert.ToString(i, 16); } catch {
MessageBox.Show(\请输入合法的十进制数\, \提示\,
MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else {
MessageBox.Show(\请提供转换数据!\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); }
txtStart.Focus(); }
///
/// 十进制转换为二进制 ///
///
private void radio_dtb_Click(object sender, EventArgs e) {
txtEnd.Text = \;
if (txtStart.Text.Length != 0) {
// TODO: 十进制转换为二进制。 Int32 i; try {
i = Convert.ToInt32(txtStart.Text.Trim()); lblTitle.Text = \十进制转换为二进制\; txtEnd.Text = Convert.ToString(i, 2); } catch {
MessageBox.Show(\请输入合法的十进制数\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else {
MessageBox.Show(\请提供转换数据!\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); }
txtStart.Focus(); }
///
/// 八进制到十进制 ///
///
private void radio_otd_Click(object sender, EventArgs e) {
txtEnd.Text = \;
if (txtStart.Text.Length != 0) {
// TODO: 八进制到十进制。 try {
lblTitle.Text = \八进制到十进制\; txtEnd.Text =
Convert.ToString(Convert.ToInt32(txtStart.Text.Trim(), 8));//八进制转为十进制 } catch {
MessageBox.Show(\请提供合法的八进制数\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else {
MessageBox.Show(\请提供转换数据!\, \提示\, MessageBoxButtons.OK, MessageBoxIcon.Warning); }
txtStart.Focus(); }
///
///
private void radio_htd_Click(object sender, EventArgs e) {
txtEnd.Text = \;
if (txtStart.Text.Length != 0) { try {
// TODO: 十六进制到十进制。
lblTitle.Text = \十六进制到十进制\;