文档库 最新最全的文档下载
当前位置:文档库 › 数据结构课程设计魔王语言

数据结构课程设计魔王语言

数据结构课程设计魔王语言
数据结构课程设计魔王语言

山东理工大学计算机学院课程设计

(数据结构)

班级

姓名

学号

指导教师

二○○七年七月二十日

课程设计任务书及成绩评定

课题名称魔王语言解释

Ⅰ、题目的目的和要求:

设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题。通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。

通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和

严格的训练。

Ⅱ、设计进度及完成情况

日期内容

7.2-7.4 熟悉设计任务,查阅有关文献资料,确定所采用的数据结构,初步制定解决问题的方法,完成课程设计说明书内容1-3部分。

7.5~7.10 选择合适的存储结构,明确解决问题的算法,上机编写并调试源程序。

7.11~7.1

2 整体调试程序并记录调试中的问题,完成课程设计说明书第4-7部分。

7.13 演示设计成果,考核成绩。整理课程设计说明书,上午11时,由学习委员交课程设计说明书(计算机科学系9#213或直接交给指导教师)

Ⅲ、主要参考文献及资料

[1]严蔚敏、吴伟民主编,《数据结构》(C语言版),清华大学出版社,2002。

[2] 殷人昆等著,《数据结构》(C++版),清华大学出版社,2001。

[3] 金远平著,《数据结构》(C++描述),清华大学出版社,2005。

[4]许卓群等著,《数据结构与算法》,高等教育出版社,2004。

[5] Frank M.Carrano等著, 《数据结构与C++高级教程》,清华大学出版社,2004。

[6]严蔚敏、吴伟民著,《数据结构习题集》(C语言版),清华大学出版社。Ⅳ、成绩评定:

设计成绩:(教师填写)

指导老师:(签字)

二○○七年七月二十日

目录

第一章概述 (1)

第二章系统分析 (2)

第三章系统设计 (3)

第四章程序设计流程图 (7)

第五章源程序清单 (9)

第六章调试过程中的问题及系统测试情况 (13)

第七章结束语 (14)

第一章概述

1.1本课程设计意义

课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程进行更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。

数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

第二章系统分析

1.1主要功能:

魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听懂,但他的语言是可逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:

-----------------------------------------------------------

1)a---> (B1)(B2)....(Bm)

2)[(op1)(p2)...(pn)]---->[o(pn)][o(p(n-1))].....[o(p1)o]

-----------------------------------------------------------

在这两种形式中,从左到右均表示解释.试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话.

1.2基本要求:

用下述两条具体规则和上述规则形式(2)实现.设大写字母表示魔王语言的词汇;小写字母表示人的语言的词汇;希腊字母表示可以用大写字母或小写字母代换的变量.魔王语言可含人的词汇.

1) B --> tAdA

2) A --> sae

第三章 系统设计

功能模块层次结构图:

数据结构的名称及描述: (1)栈: ADT Stack {

数据对象:D={a[i]|a[i] ∈ Elemset,i=1,2,…,n, n>=0} 数据关系:R1={|a[i-1],a[i] ∈ D,i=2,…,n} 约定a[n]端为栈顶,a[1]端为栈底。 基本操作:

Initstack(&s) 操作结果:构造一个空栈s 。 Destroystack(&s) 初始条件:栈s 已存在。 操作结果:栈s 被取消。 Clearstack(&s) 初始条件:栈s 已存在。 操作结果:将s 清为空栈。

调用Gzcin ()输入规则

调用Mycin ()输入语

调用Change ()进行翻

在屏幕输出 输入一组规则

输入魔王语言

根据用POP ()

出栈的字符进行判断: A :大写字符

B :左括号

按规则进行翻译 调用Link ()把括号中的字符全部进队列,按规则翻译

Stackempty(s)

初始条件:栈s已存在。

操作结果:若栈s为空栈,则返回TRUE,否则FALSE。

Stacklength(s)

初始条件:栈s已存在。

操作结果:返回s的元素个数,即栈的长度。

Gettop(s,&e)

初始条件:栈s已存在且非空。

操作结果:用e返回s的栈顶元素。

Push(&s,e)

初始条件:栈s已存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&s,&e)

初始条件:栈s已存在且非空。

操作结果:删除s的栈顶元素,并用e返回其值。

Stacktraverse(s,visit())

初始条件:栈s已存在且非空

操作结果:从栈底到栈顶依次对s的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。

}ADT stack

栈的顺序存储表示:

#define STACK_INIT_SIZE 100; //存储空间初始分配量

#define STACKINCREMENT 10; //存储空间分配增量

Typedef struct{

SElemtype *base; //在栈构造之前和销毁之后,base的值为NULL

SElemtype *top; //栈顶指针

Int stacksize; //当前已分配的空间,以元素为单位

}Sqstack;

(2)队列:

ADT queue{

数据对象:D={a[i]|a[i]∈Elemset,i=1,2,…,n, n>=0}

数据关系:R1={|a[i-1],a[i]∈D,i=2,…,n}

约定其中a[1]端为队列头,a[n]端为队列尾。

基本操作:

Initqueue(&q)

操作结果:构造一个空队列q。

Destroyqueue(&q)

初始条件:队列q已存在。

操作结果:队列q被销毁,不再存在。

Clearqueue(&q)

初始条件:队列q已存在。

操作结果:将q清空为空队列。

Queueempty(q)

初始条件:队列q已存在。

操作结果:若队列q为空队列,则返回TRUE,否则FALSE。

Queuelength(q)

初始条件:队列q已存在。

操作结果: 返回q的元素个数,即队列的长度。

Gethead(q,&e)

初始条件:q为非空队列。

操作结果: 用e返回q的队头元素。

Enqueue(&q,e)

初始条件:队列q已存在。

插入元素e作为q的队尾元素。

Dequeue(&q,&e)

初始条件:q为非空队列。

操作结果: 删除q的队头元素,并用e返回其值。

Queuetraverse(q,visit())

初始条件:队列q已存在且非空。

操作结果: 从队头到队尾,依次对q的每个数据元素调用函数visit()。一旦visit()

失败,则操作失败。

}ADT Queue

队列的链式存储结构:

Typedef struct qnode{

Qelemtype data;

Struct qnode *next;

}qnode,*queueptr;

Typedef struct{

Queueptr front; //对头指针 Queueptr rear; //队尾指针}linkqueue;

第四章程序设计流程图

(1)程序开始先由用户输入一种规则使用cin和cout函数。

(2)接着程序再读入想要翻译的魔王语言。

(3)程序对输入的规则进行翻译,翻译成人类语言。

(4)对魔王语言进行翻译,首先用POP()函数把魔王语言每一个字符读出。

(5)再对字符进行筛选,符合输入规则的立即翻译。保存至transl中。

(6)对于括号中的字符,即人类语言。先把括号中的字符全部出栈,保存至link中。(7)按规则把队列中的字符串进行翻译,保存至transl中。

(8)依次执行,直到翻译完所有字符串。

程序设计流程图如下:

第五章源程序清单

程序清单如下:

魔王.cpp

/*-----------------------定义头文件---------------------------*/

#include

#include

#include

/*-----------------------定义全局变量-------------------------*/

int top=0;

int find=0;

//top=0;

char transl[200];

char leag[200];

char link[100];

int rear=1;

//rear=1;

/*-------------------MAIN()主函数---------------------------*/

int main()

{

char pop(); //定义出栈函数

char ml[2][200]; //定义两个规则,把它们存放到ml中

cout<

cout<<" ** ===魔王语言程序设计===

** "<

cout<<"

******************************************************* "<

cout<<"

******************************************************* "<

cout<<" ** 本程序可以翻译魔王语言且按以下两条形式规则由人

** "<

cout<<" **

** "<

cout<<" **的语言逐步抽象上去: ** "<

cout<<" **

** "<

cout<<" **①α->β1β2β3β4...

** "<

cout<<" **

** "<

cout<<" **②(θβ1β2β3)->θβ3θβ2θβ1θ

** "<

cout<<" **

** "<

cout<<" ** 下面只输入2个第一种形式的规则,且后输入的可以嵌

** "<

cout<<" **

** "<

cout<<" **套已输入的规则。 ** "<

cout<<" **

** "<

cout<<"

******************************************************* "<

cout<<"

******************************************************* "<

cout<<"******************************************************************

**************";

//本程序可以翻译魔王语言且按以下两条形式规则由人的语言逐步抽象上去:

// ①α->β1β2β3β4...

// ②(θβ1β2β3)θβ3θβ2θβ1θ

//下面只输入2个第一种形式的规则,且后输入的可以嵌套已输入的规则

//

/*开始输入规则A和B,A比B先输入,再输入B,这样B就可以嵌套A*/

cout<<"以下请开始翻译:"<

cout<<"请先输入一组形式规则:"<

cout<<"A->";

cin>>ml[0];

cout<<"B->";

cin>>ml[1];

cout<

/*输入魔王语言,其规则为大写为魔王语言,只限定A和B(暂时),小写为人类语言,

输入时用括号括起来*/

cout<<"请输入要解释的魔王语言:";

cin>>leag;

char temp[100]; //定义一个缓冲区,存放B的翻译

int sizeA=0; //定义A的长度

sizeA=strlen(ml[0]);

int wh=0; //定义缓冲区中的位置变量

for(int i=0;ml[1][i]!='\0';i++) //开始翻译B

{

if(ml[1][i]=='A') //如果嵌套了A

{

//cout<<"here is doing!!";

for(int n=0;n

{

temp[wh]=ml[0][n]; //翻译至缓存区}

}

else

{

temp[wh]=ml[1][i]; //如果不是A则原样写入

wh++;

}

}

temp[wh]=0; //为缓存区加上结束符

strcpy(ml[1],temp); //把缓存区中的串给ml[1] int sizeB=0; //定义B的长度

sizeB=strlen(ml[1]);

int length;

length=strlen(leag); //取得魔王语言的长度

int ch; //定义一个变量保存字符

int a;

int b;

/*-------开始翻译魔王语言,并把结果存至transl中------------*/

for(int t=0;t

{

ch=pop();

switch(ch)

{

case 'A': //如果是A的话for(a=0;a

{

transl[find]=ml[0][a];

}

break;

case 'B': //如果是B的话for(b=0;b

{

transl[find]=ml[1][b];

}

break;

case '(': //但ch='('时,把括号中的小写字母保存至link中

ch=pop();

link[0]=ch; //先把第一个字符存入,后面的从link[1]开始

while(ch!=')')

{

ch=pop();

link[rear]=ch; //记得rear的初值为1

rear++;

}

//由于while循环的原因,在link队列中多加了一个右括号字符,且rear 指针向后多移了2个单位

//故使rear减2

rear=rear-2;

transl[find++]=link[0];

for(rear;rear!=0;rear--)

{

transl[find++]=link[rear];

transl[find++]=link[0];

}

//为了使后面的翻译可行话,得把rear还原为初值,即rear=1

rear=1;

break;

default:break;

}//switch结束

/*--------翻译魔鬼语言结束,结果已存至transl中------------*/ }//for结束

cout<<"经过翻译,魔王想表达的语言是:";

//输出得到的翻译语言

cout<

cout<

cout<

return 0;

}

char pop() //出栈函数的实现{

return leag[top++];

}

第六章调试过程中的问题及系统测试情况

输入输出:

*输入注意:先输入的规则可以被后输入的规则嵌套,后输入的可以嵌套先输入的,但是注意先输入的不可以嵌套后输入的。

输入魔王语言时,人类语言(小写字符)要用括号括起来,魔王字符(大写字符)只能是以上规则提到的字符。

输入例子:

A->yui回车

B->tuAsdA回车

魔王语言:BABA(fqwerjijilo)ABAB

输出结果:

翻译输出:

结果正确。

第七章结束语

经过几天和同学进行的程序设计合作,使我明白了做一件事情如果靠团结的力量是很容易完成的。

再次感谢指导我们的老师,给了我们莫大的帮忙,使我们的工作事半功倍。

本次任务完成情况良好,能够完好的解决题目所给的要求,达到了程序设计的输入、输出、有穷性、可行性、确定性的程序要求。

参考文献:

[1]严蔚敏、吴伟民主编,《数据结构》(C语言版),清华大学出版社,2002。

[2] 殷人昆等著,《数据结构》(C++版),清华大学出版社,2001。

[3] 金远平著,《数据结构》(C++描述),清华大学出版社,2005。

[4]许卓群等著,《数据结构与算法》,高等教育出版社,2004。

[5] Frank M.Carrano等著, 《数据结构与C++高级教程》,清华大学出版社,2004。

[6]严蔚敏、吴伟民著,《数据结构习题集》(C语言版),清华大学出版社。

魔王语言解释-大数据结构课程设计

实习2、魔王语言解释 一、需求分析 1. 问题描述 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听的懂,但他的语言是可以逐步解释成人能懂得语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α->β1 β2 ... βn (2)(θδ1 δ2 ... δn) —>θδn θδn-1 ...θδ1 θ 在这两种形式中,从左到右均表示解释。试写一个魔王解释系统,把他的话解释成人能听懂得话。 2. 基本要求 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写或小写字母代换的变量。魔王语言可含人的词汇。 (1)B—>tAdA (2)A—>sae 3. 测试数据 B(ehnxgz)B 解释成tsaedsaeezegexenehetsaedsae 若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是“天上一个鹅地上一个鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一个鹅地上一个鹅”。 4. 实现提示 将魔王的语言自右至左进栈,总是处理栈顶字符。若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。其他情形较简单,请读者思考如何处理。应首先实现栈和队列的基本操作。 二、概要设计 1、设定栈的抽象数据类型定义: ADT Stack { 数据对象:D= {a i| a i∈CharSet, i= 1,2,……n,. n≥0 } 数据关系:R1={ | a i-1,a i∈D, a i-1

数据结构实验

1 线性表及其应用 问题:约瑟夫环 问题描述:编号为1,2,…,n的n个人按顺时针方向围坐一 圈。每人持有一个密码(正整数),一开始任选一个正整数作为 报数上限值m,从第一个人开始按顺时针方向自1开始报数, 报到m时停止报数。报m的人出列,将他的密码作为新的m值, 从他顺时针方向的下一个人开始重新从1报数,直至所有人全 部出列为止。试设计一个程序求出出列顺序。 基本要求:利用单向循环链表存储结构模拟此过程。 2 栈和队列及其应用 题目:魔王语言解释 问题描述:有一个魔王总是使用自己的一种非常精练而抽象的语 言讲话,没有人能听的懂,但他的语言是可以逐步解释成人能听 懂的语言,因为他的语言是由以下两种形式的规则由人得语言逐 步抽象上去的: (1)α→β 1β 2… β m (2)(θδ 1δ 2… δ n )→θδ n θδ n-1… θδ 1 θ 在这两种形式中,从左到有均表示解释。试写一个魔王语言的解 释系统,把他的话解释成人能听的懂的话。 基本要求:用下述两条具体规则和上述规则形式(2)实现。设 大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希 腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可 含人的词汇。 (1)B→tAdA (2)A→sae 3 串及其应用

题目:文学研究助手 问题描述:存在一篇英文文章(以串表示),以及若干关键字。编 写程序统计关键字的出现次数。 基本要求:改进KMP算法以适应多关键字匹配。 4 数组和广义表 题目:数组转置 问题描述:存在稀疏矩阵A,编写程序将A转置为B。 基本要求:用三元组表示稀疏矩阵,应用算法5.2完成转置。 5 树、图及其应用 题目:Huffman编/译码器 问题描述:使用Huffman编码进行通信可以节省通信成本。对于 双工系统而言,要求在发送端和接受端均有编码器和译码器。试 为该系统设计一个编/译码器。 基本要求:至少具有功能(1)初始化(2)编码(3)译码(4) 打印代码。 6 存储管理、查找和排序 题目:内部排序算法比较 问题描述:通过随机数据比较各算法的关键字比较次数与移动次数。 基本要求:至少比较快速排序与堆排序。对结果进行简单分析。

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100;显示DS段, 0100开始的128个节内容

说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ①DSEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址]开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容

魔王语言解释

实习报告 题目:编制一个魔王语言解释的程序 班级:06052711 姓名:曹旭学号:06057104 完成日期:2007.11.27 一、需求分析 [问题描述] 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听的懂。但他的语言是可以逐步解释成人能懂得语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α->β1β2...βn (2)(θδ1δ2...δn)->θδnθδn-1...θδ1θ 在这两种形式中,从左到右均表示解释;从右到左表示抽象。试写一个魔王解释系统,把他的话解释成人能听懂得话。 [基本要求] 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字 母表示人的语言词汇;希腊字母(a,b1,s,y1等)表示可以用大写或小写字母代换的变量。魔王语言可含人的词汇。 (1)B->tAdA (2) A->sae [测试数据] B(einxgz)B 解释成tsaedsaeezegexeneietsaedsae 若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是“天上一个鹅地上一个鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一个鹅地上一个鹅。” t d s a e z G x n i 天地上一个鹅追赶下蛋恨 [实现提示] 将魔王的语言自右至左进栈,总是处理栈顶。若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。其他情形较简单,请读者思考如何处理,应首先实现栈和队列的基本运算 二、概要设计 为实现上述程序功能,应以栈和队列来表示。 1.设定栈的抽象数据类型定义为: ADT Stack{ 数据对象:D={ai | ai∈CharSet,I=1,2,......,n,n≥0} 数据关系:R1={< ai-1,ai > |ai-1,ai∈D,I=1,2,......,n} 基本操作: ListInitiate (&S)

汇编语言综合实验报告

XXXX大学XX学院 实验报告 课程名称:汇编语言 学号: 姓名: 系: 专业: 年级: 指导教师: 职称: 20xx~20xx学年第一学期

实验项目列表 序号实验项目名称成绩指导教师 1 实验一汇编程序的汇编及运行 2 实验二顺序程序设计 3 实验三分支循环程序设计 4 实验四 DOS功能调用 5 实验五子程序设计 总平均

福建农林大学金山学院实验报告 系:专业:年级: 姓名:学号:实验课程:汇编语言 实验室号:__ __ 实验设备号:实验时间: 90分钟 指导教师签字:成绩: 实验一汇编程序的汇编及运行 1.实验目的和要求 (1)熟悉汇编程序的汇编、连接、执行过程 (2)生成LST文件,查看LST文件 (3)生成OBJ文件,修改语法错误 (4)生成EXE文件 (5)执行 2.实验环境 IBM—PC机及其兼容机 实验的软件环境是: 操作系统:DOS 2.0以上;调试程序:https://www.wendangku.net/doc/af17988990.html,;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。 3.实验内容及实验数据记录 (1)将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少? DA TA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB ‘IBM PC’ DA2 DB 0AH, 0DH COUNT EQU $-DA1

设计题目要求举例

数据结构课程设计题目 地图着色 马踏棋盘 栈的实现 八皇后算法 车厢调度 公园导游图 通讯录实现 同学录实现 导游系统实现 最小生成树实现 统计成绩系统 利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,让学生自己到图书馆查阅资料或网上咨询独立完成程序的编写,并能运用学过的技巧独立上机调试完成。 系统类题目: 题目1:学生信息管理系统设计 试设计一学生信息管理系统,使之能提供以下功能: 系统以菜单方式工作 学生信息包括:学号,姓名,年龄,别,出生年月,地址,电话,E-mail 等。 3https://www.wendangku.net/doc/af17988990.html,、学生信息录入功能(学生信息用文件保存)---输入 4、学生信息浏览功能---输出

5、查询、排序功能---算法 6、学生信息的删除与修改(可选项) 题目2:职工信息管理系统设计 试设计一职工信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作。 2、职工信息包括职工号、姓名、别、年龄、学历、工资、住址、电话等(职工号不重复)。 3、职工信息录入功能(职工信息用文件保存)--输入。 4、职工信息浏览功能--输出。 5、查询和排序功能:(至少一种查询方式) --算法。 6、职工信息删除、修改功能(任选项)。 题目3:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:输入数据输入m、,n 其中m、,n 为整数,n输出形式提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号。 难度1:编程先由计算机?想?一个1到100之间的数请人猜,如果人猜对了,则计算机给出提示:?Right!?,否则提示:?Wrong!?,并告诉人所猜的数是大(Too high)还是小(Too low),然后结束游戏。要求每次运行程序时机器所?想?的数不能都是一样的。 难度2:编程先由计算机?想?一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者?猜?的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。 难度3:编程先由计算机?想?一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者?猜?的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则结束游戏。 难度4:编程先由计算机?想?一个1到100之间的数请人猜,如果人猜对

汇编语言综合实验报告

综合性设计性实验报告 班级:计算机科学与技术专2014 级 4 班实验项目名称:循环显示1 0 个数字符号 实验项目性质:综合性 实验所属课程:计算机组成原理与汇编语言 实验室(中心):实验室(4 0 7 ) 指导教师: 实验完成时间: 2016 年 5 月 27

一、实验目的 (1)掌握子程序的定义和调用方法。 (2)掌握子程序的编写方法及参数传递的方法。 二、实验内容及要求 本实验内容主要是编写一个显示过程汇编程序,使得在屏幕上依次显示10 个数字符号,每一行13 个字符,然后循环进行显示。实验要求是在代码段中编写这个过程,并要求用主程序调用该过程。 三、实验设备及软件 实验室(407)电脑一台以及编译器DEBUG MASM LINK软件。 四、设计方案 ㈠题目(老师给定或学生自定) 循环显示10个字符 ㈡设计的主要思路 首先,先定义一个数据段和代码段。数据段内定义一个名称为prl大小为一个字节的字符串,即本人学号。代码段内首先借助段寻址伪指令ASSUME规定好代码段和数据段分别在段寄存器CS、DS。然后start内将数据段段地址放入DS中。接下来定义一个子程序dgdsp,其实现的功能主要是先将bl(字符数目控制)清零,dl(字符范围0-9)赋值为字符0的ascll码。然后定义一个lp循环,循环内调用DOS2号功能显示字符,并bl、dl自增,接着比较dl与字符9的ascll码值的大小,若大于就将dl重置为字符0的ascll码。若小于则跳转到next循环,next循环中主要比较bl与13的大小,若小于则跳转到lp,若大于就进入bbb子程序。bbb子程序主要是先保护DX将其压栈,然后使用DOS9号功能显示prl字符串,最后将DX出栈。然后进入next循环将DX压栈,分别使用DOS0a、02号功能将dl输入显示,最后将DX出栈。分别将bl、al清零,最后跳转到lp子程序继续循环执行。 流程图如下:

魔王语言数据结构实验报告课案

数据结构实验报告 2.2 魔王语言解释 [问题描述] 有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α-> β1β2…βm (2)(θδ1δ2…δn)->θδnθδn-1…θδ1θ 在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。 [基本要求] 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。 (1)B -> tAdA (2)A -> sae [测试数据] B(ehnxgz)B解释成tsaedsaeezegexenehetsaedsae

若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。 t d s a e z g x n h 天地上一只鹅追赶下蛋恨 一:需求分析 (1)以一维数组demon[ i ]表示魔王语言. (2)魔王语言由用户输入,初始保存在demon[ i ]中. (3)魔王语言与人类语言对应关系固化在程序中. (4)实现过程: A:初始,魔王语言接收后存放在demon[ i ]中. B:初次遍历数组,将数组中括号内的元素入栈,同时插入相应首字母; C:再次遍历数组,将数组元素依次入队。(小写字母直接入队;大写字母经翻译成相应字符后入队;遇到括号,将栈中保存的元素依次出栈入队)在翻译过程中,如果依旧包含大写字母,则置flag为1,否则为0。 D:将队列中元素赋值给demon[ i ]。如果此时flag=1,则再次重复C过程。直至所有元素为人类语言。 E:输出demon[ i ]。此时数组中元素为对应的人类语言。注:如果程序中没有相应的对应关系,则翻译成“???”。二:概要设计: 1:设定栈的抽象数据类型定义:

大学课程汇编语言的实验报告

实验报告 实验课程: 学生姓名: 学号: 专业班级:电气信息类III班 2011年12月20日

目录 (1)汇编语言程序上机过程 (2) (2)字符串处理程序实验 (6) (3)子程序实验 (13) (4)中断程序实验 (21) (5)C++调用汇编子程序 (25)

南昌大学实验报告 ---(1)汇编语言程序上机过程学生姓名:学号:专业班级: 实验类型:□验证■综合□设计□创新实验日期:2011.11.12/13实验成绩:一、实验目的 熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。 二、实验内容 1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用; 2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP; 3.利用的INT21H的1号功能实现键盘输入的方法; 三、实验环境 PC微机 DOS操作系统或Windows操作系统 MASM.EXE,LINK.EXE,https://www.wendangku.net/doc/af17988990.html,或宏汇编集成环境 四、实验要求 1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容; 2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法; 3.阅读下面程序段。 五、主要实验步骤 程序: data segment message db'This is a sample program of keyboard and disply' db0dh,0ah,'Please strike the key!',0dh,0ah,'$' data ends stack segment para stack'stack' db50dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax mov dx,offset message mov ah,9 int21h again:mov ah,1

数据结构 课程设计报告 魔王语言解释

题目:魔王语言解释 [问题描述] 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α->β1β2……βm (2)(θδ1δ2……δn)—>θδnθδn-1……θδ1θ 在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话; [基本要求] 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用大写字母或小写字母代换的变量。魔王语言可含人的词汇。 (1)B->tAdA (2)A->sae [测试数据] B(ehnxgz)B解释成tsaedsaeezegexenehetsaedsae 若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是:“天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅”。 [实现提示] 将魔王的语言自右至左进栈,总是处理栈顶字符。若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。其他情形较简单,请读者思考应如何处理。应首先实现栈和队列的基本操作。

[源代码] #include #include #define STACK_INIT_SIZE 100 #define STACK_INCREMENT 10 struct Stack{ char* base; char* top; int stacksize; }; void InitStack(struct Stack &s){//构造栈 s.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char)); s.top=s.base; s.stacksize=STACK_INIT_SIZE; } void Push(struct Stack &s,char e){//压入元素 if(s.top-s.base>=STACK_INIT_SIZE){ s.base=(char*)realloc(s.base,(s.stacksize+STACK_INCREMENT)*sizeof(char)); s.top=s.base+s.stacksize; s.stacksize+=STACK_INCREMENT;

魔王语言实验报告

数据结构实验报告 (魔王语言) 一、【实验构思(Conceive)】(10%) (本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识) 魔王语言的解释规则: 大写字母表示魔王语言的词汇,小写字母表示人的词汇语言,魔王语言中可以包含括号,魔王语言的产生式规则在程序中给定,当接收用户输入的合法的魔王语言时,通过调用魔王语言翻译函数来实现翻译。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 抽象数据类型:typedef struct {StackElementType elem[Stack_Size]; int top; }SeqStack; 主程序模块:int main() { GhostLanage(); printf("\n\t按任意键退出\n\n"); }

各子程序模块:/*初始化栈*/ void InitStack(SeqStack *s) {s->top=-1; } /*进栈操作*/ void Push(SeqStack *s,StackElementType x) {if(s->top==Stack_Size-1) printf("\n\t栈已满!"); else {s->top++;s->elem[s->top]=x;} } /*出栈操作*/ void Pop(SeqStack *s,StackElementType *x) {if(s->top==-1) printf("\n\t栈为空!"); else {*x=s->elem[s->top];s->top--;} } /*取栈顶元素*/ void GetT op(SeqStack *s,StackElementType *x) {if(s->top==-1) printf("\n\t栈为空!"); else *x=s->elem[s->top]; } /*判断栈是否为空*/ int IsEmpty(SeqStack *s) {if(s->top==-1) return(0); else return(1); }

魔王语言实习报告

实习报告2(魔王语言) 《数据结构》 课程设计报告 课程名称:《数据结构》课程设计课程设计题目:魔王语言实习报告 姓名:倪哲 院系:计算机学院 专业:软件工程 年级:大三 学号:08052319 指导教师:赵葆华

一、需求分析: (1)按要求输入魔王语言,出现相应的格式执行相应的转化,魔王语言中出现的需要翻译的字母要在之后输入其替换内容。 (2)字母替换中,可以存在魔王语言的字母,但最终要翻译成全部是小写字母。 二、概要设计 设计思想 (1)存储结构 根据问题描述,可采用堆栈结构。 结点描述: 定义如下: typedef struct { StackElementType elem[Stack_Size]; int top; }SeqStack; (2)基本思想 a.建立一个规则的结构体,其中一个char型存储某个字母的转换规则,一个int 型存储某个字母的转换规则的长度。 b.输入魔王语言后,再输入出现的要翻译的字母的规则,然后按转换格式进行转换,输出。 设计表示法 GhostLanage - InitStac-Push-Pop-Gettop-Stackempty (1)过程或函数调用的关系图 (2)基于数据结构的操作组 本次实习题目比较简单,只用到一个堆栈,函数 InitStack(),Push(),Pop(),Gettop(),Stackempty(),都是堆栈的基本操作,函数void GhostLanage();就是一个按照规则输出。 (3)过程与接口规格说明 void InitStack(SeqStack *s); //建立栈 void Push(SeqStack *s,StackElementType x); //入栈 void Pop(SeqStack *s,StackElementType *x); //出栈 void GetTop(SeqStack *s,StackElementType *x);取栈顶元素 int StackEmpty(SeqStack *s);判断栈是否为空 void GhostLanage() //主函数

魔王语言翻译 数据结构课程设计

魔王语言翻译 题目:编制一个演示魔王语言的翻译程序 班级:信管08-2 姓名:顾先 学号:0801051409 完成日期:2010.5.27 一、需求分析 1. 本演示程序中,魔王语言限制在小写字母‘a’-‘z’之间,且必须限制在括号内以及大写字母A和B。且允许出现重复字符或非法字符,程序运用时自动过滤去,输出的运算结果中将不含重复字符和非法字符。 2. 魔王语言遵守如下规则: (θδ1δ2δ3…δn)→θδnθδn-1…θδ1θ B→tAdA A→sae 3. 演示程序以用户和计算机对话的形式进行,即在计算机终端中显示提示信息之后,有用户自行选择下一步命令,相应输入数据和运算结果在其后显示。 4. 程序的执行命令有:1)选择操作2)任意键清屏 5. 数据测试 B(ehnxgz)B解释成:tsaedsaeezegexenehetsaedsae 二、概要设计 为实现上述功能,需要栈和队列两个抽象数据类型。 1. 栈抽象数据类型定义 ADT stack{ 数据对象:D={ai|a i∈Elemset,i=1,2,3,…n,n>=0} 数据关系:R1={|ai-1,ai∈D,i=2, … n} 基本操作: InitStack(&s) 操作结果:构造一个空栈s。 Push(&s, e) 初始条件:栈s已存在。 操作结果:插入元素e为新的栈顶元素。 Pop(&s, &e) 初始条件:栈s已存在且非空。 操作结果:删除栈s的栈顶元素,并用e返回其值。 StackLenth(&s) 初始条件:栈s已存在。 操作结果:返回s的元素个数,即栈的长度。 ClearStack(&s)

数据结构课程设计

《数据结构课程设计》 Data Structure Course Design 一、课程的性质、教学目的 《数据结构》是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各种类型的数据结构。学好数据结构对掌握实际编程能力是很有帮助的。为了学好《数据结构》,必须编写一些在特定数据结构上的算法,通过上机调试,才能更好地掌握各种数据结构及其特点,同时提高解决计算机应用实际问题的能力。 二、实验(上机)时间、地点 第4,5,6,7,8,9,10,12,13,14周,每周一晚上18:30—21:10在一教南一楼机房上机。 三、课程设计要求 每位同学须在线性表、栈和队列、树和图三个部分中各选一题(共三题)按以下要求完成课程设计: 1、设计、调试、运行源程序。 2、通过老师的测试及验收。 3、完成实验报告。 四.设计题 1、线性表部分 【joseph环】 *问题描述:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。 *要求:利用不带表头结点的单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。 *测试数据: m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出

是什么? *输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表。 *输出形式:建立一个输出函数,将正确的输出序列 【长整数四则运算】 *问题描述:设计一个实现任意长的整数进行加法运算的演示程序。*基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -(2^15 - 1) (2^15 - 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 *测试数据: (1)0;0;应输出“0”。 (2)-2345,6789;-7654,3211;应输出“-1,0000,0000”。 (3)-9999,9999;1,0000,0000,0000;应输出“999 (4)1,0001,0001;-1,0001,0001;应输出“0”。 (5)1,0001,0001;-1,0001,0000;应输出“1”。 (6)-9999,9999,9999;-9999,9999,9999;应输出“1,9999,9999,9998”。 (7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。 *实现提示: (1)每个结点中可以存放的最大整数为32767,才能保证两数相加不会溢出,但若这样存放,即相当于按32768进制存放,在十进制与32768进制数之间的转换十分不方便,故可以在每个结点中仅存十进制的4位,即不超过9999的非负整数,整个链表表示为万进制。(2)可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。不能给长整数位数规定上限。 选做内容 实现长整数的四则运算。 2、栈和队列部分 【马踏棋盘】 *问题描述:将马随机放在国际象棋的8X8棋盘Bo阿rd[0..7,0..7]的某个方格中,马按走棋规则进行移动。要求每个方格上只进入一次,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入8X8的方阵输出之。 *测试数据:由读者指定,可自行指定一个马的初始位置。 *实现提示:每次在多个可走位置中选择一个进行试探,其余未曾试探过的可走位置必须用适当结构妥善管理,以备试探失败时的“回溯”(悔棋)使用。并探讨每次选择位置的“最佳策略”,以减少回溯的次数。 【魔王语言解释】 [问题描述] 有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐

魔王语言 数据结构试验报告

魔王语言系统解释 一、需求分析 [问题描述] 有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没人能听的懂。但他的语言是可以逐步解释成人能懂得语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α->β1β2...βn (2)(θδ1δ2...δn)->θδnθδn-1...θδ1θ 在这两种形式中,从左到右均表示解释;从右到左表示抽象。试写一个魔王解释系统,把他的话解释成人能听懂得话。 [基本要求] 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字 母表示人的语言词汇;希腊字母(a,b1,s,y1等)表示可以用大写或小写字母代换的变量。 魔王语言可含人的词汇。 (1)B->tAdA (2) A->sae [测试数据] B(einxgz)B 解释成 tsaedsaeezegexeneietsaedsae 若将小写字母与汉字建立下表所示的对应关系,则魔王说的话是“天上一个鹅地上一个鹅 鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一个鹅地上一个鹅。” t d s a e z G x n i 天地上一个鹅追赶下蛋恨 [实现提示] 将魔王的语言自右至左进栈,总是处理栈顶。若是开括号,则逐一出栈,将字母顺序入队列,直至闭括号出栈,并按规则要求逐一出队列再处理后入栈。其他情形较简单,请读者思考如何处理,应首先实现栈和队列的基本运算 二、概要设计 为实现上述程序功能,应以栈和队列来表示。 1.设定栈的抽象数据类型定义为: ADT Stack{ 数据对象:D={ai | ai∈CharSet,I=1,2,......,n,n≥0} 数据关系:R1={< ai-1,ai > |ai-1,ai∈D,I=1,2,......,n} 基本操作: ListInitiate (&S) 操作结果:构造一个空栈S。

汇编语言实验报告

汇编语言程序设计实验报告 学院:计算机科学与技术 专业:计算机科学与技术 指导教师: ** 班级: ** 学号: ** 姓名:**

实验一集成环境及调试工具 一、实验题目 认识Tddebug集成操作软件 二、分析设计思想,绘制实验原理图、流程图 (一)、汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。 图1.1 汇编语言程序开发过程 1、源程序的编辑 E: > EDIT TEST.ASM 编辑过程就是将源程序输入内存,生成一个扩展名为ASM的文本文件并存入硬盘。2、源程序的编译 E:>TASM TEST.ASM 编译也称为汇编,就是利用汇编器(如TASM或MASM)对源程序进行编译,生成扩展名为OBJ的目标文件。在编译过程中,检查语法错误,若有错,则不生成目标代码文件,并给出错误信息。根据错误信息应返回到编辑状态,修改源程序。 3、目标程序的链接 E:> TLINK TEST.OBJ 链接过程是利用链接程序(如TLINK或LINK)将用户目标程序和库文件链接、定位,生成扩展名为EXE的可执行文件。链接时,如果链接文件找不到所需要的链接信息,则发出错误信息,不生成可执行文件。 4、调试可执行程序 E:>TD TEST.EXE 如果生成的EXE文件运行后,并没有按照设计意图运行,就需要对程序进行调试,找出错误。再对源程序进行修改,即重复进行编辑、编译、链接、调试,直到生成完全正确的可执行文件为止。 (二)、Tddebug集成操作软件使用说明 1.该软件是集编辑(Edit.exe)、编译(Tasm.exe)、连接(Link.exe)和调试(TD.exe)

(精选)云南大学软件学院数据结构实验3

实验难度: A □ B □ C □序号学号姓名成绩 指导教师(签名) 学期:2017秋季学期 任课教师: 实验题目: 组员及组长: 承担工作: 联系电话: 电子邮件: 完成提交时间:年月日

一、【实验构思(Conceive)】(10%) (本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计等相关知识,对问题进行概要性地分析) 魔王语言的解释规则: 大写字母表示魔王语言的词汇,小写字母表示人的词汇语言,魔王语言中可以包含括号,魔王语言的产生式规则在程序中给定,当接收用户输入的合法的魔王语言时,通过调用魔王语言翻译函数来实现翻译。 在 A 的基础上,(根据产生式)自定义规则,将一段魔王的话翻译为有意义的人类语言(中文):输入wasjg,则魔王语言解释为“我爱数据结构”。 运用了离散数学的一些基本知识及程序设计知识。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的定义和基本操作说明,程序包含的模块以及各模块间的调用关系,关键算法伪码描述及程序流程图等,如有界面则需包括界面设计,功能说明等) //---------------抽象数据类型的定义------------------// #define STACK_INIT_SIZE 50 #define STACKINCREMENT 10 #define OVERLOW -2 #define ERROR -1 typedef struct { char *base; //顺序栈的栈底指针 int top; //顺序栈的栈顶 int size; //栈元素空间的大小 }SqStack; //结构体类型顺序栈 typedef struct { char *base; int front; int rear; }SqQueue; //结构体类型队列 //---------------各个模块功能的描述------------------// void Init_SqStack(SqStack &s) //初始化顺序桟 void Push_SqStack(SqStack &s, char c) //压入数据 int Pop_SqStack(SqStack &s, char &e) //出桟 char GetTop_SqStack(SqStack s)//或得栈顶

课程设计——魔王语言解释

#include "stdio.h" #include "stdlib.h" #include "malloc.h" //定义全局变量 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define NULL 0 #define OVERFLOW -1 #define MAXSIZE 100 #define stack_init_size 100 #define stackincrement 10 char e; char MoWords[MAXSIZE]; //定义数组,从系统输入要翻译的魔王语言static int length=0; //定义链栈类型 typedef struct{ char *base; //栈底指针 char *top; //栈顶指针 int stacksize; //栈存储空间的大小 }sqstack; //定义链队列类型 typedef struct qnode{ char data; struct qnode *next; }qnode,*queueptr; typedef struct{ queueptr front; //队头指针 queueptr rear; //队尾指针 }linkqueue; int InitStack(sqstack *s){ s->base=(char *)malloc(stack_init_size*sizeof(char)); if(!s->base) exit (OVERFLOW); s->top=s->base; s->stacksize=stack_init_size; return OK; }//end 初始化栈

汇编实验报告(详细版).

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号:2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

魔王语言实验报告

魔王语言实验报告本页仅作为文档页封面,使用时可以删除 This document is for reference only-rar21year.March

数据结构实验报告 (魔王语言) 一、【实验构思(Conceive)】(10%) (本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识) 魔王语言的解释规则: 大写字母表示魔王语言的词汇,小写字母表示人的词汇语言,魔王语言中可以包含括号,魔王语言的产生式规则在程序中给定,当接收用户输入的合法的魔王语言时,通过调用魔王语言翻译函数来实现翻译。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 抽象数据类型:typedef struct {StackElementType elem[Stack_Size]; int top;

}SeqStack; 主程序模块:int main() { GhostLanage(); printf("\n\t按任意键退出\n\n"); } 各子程序模块:/*初始化栈*/ void InitStack(SeqStack *s) {s->top=-1; } /*进栈操作*/ void Push(SeqStack *s,StackElementType x) {if(s->top==Stack_Size-1) printf("\n\t栈已满! "); else {s->top++;s->elem[s->top]=x;} }

相关文档
相关文档 最新文档