博文
汇编 分支程序设计(2006-11-13 10:00:00)
摘要:实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。假设学生成绩在[90,100]区间为优秀,在[80,90)区间为良好,在[70,80)区间为一般,在[60,70)区间为及格,在[0,60)区间为不及格,要求统计出不及格,及格,一般,良好和优秀的人数,分别送入Notpassed,Passed,Good,Better和Best字节单元。
1. 用普通的跳转语句实现上述功能。
2. 用地址表法和转移表实现。
*******************************************
DATASEG SEGMENT
NOTPASSED DB 0
PASSED DB 0
GOOD DB 0
BETTER DB 0
BEST DB 0
SCORE DB 90,80,75,30,64,95 DUP(70)
DATASEG ENDS
CODESEG SEGMENT
ASSUME DS:DATASEG,CS:CODESEG
START:
MOV AX,DATASEG
MOV DS,AX
MOV BX,0
MOV CX,100
AGAIN: CMP SCORE[BX],90
JB NEXT
INC BEST ;if >= 90 , Best!
JMP DONE
NEXT: CMP SCORE[BX],80 &......
汇编循环程序设计(2006-11-13 09:58:00)
摘要:实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。设计程序完成如下功能:
①根据用户输入的一个2位十进制数,作为查找对象,在该数组中查找,若找到则显示“Y”,若没找到则显示“N”。
②根据用户输入的一个2位十六进制数,作为查找对象,在该数组中查找,若找到则显示“Y”,若没找到则显示“N”。
************************************************************************
(1)
DATASEG SEGMENT
SCORE DB 90,80,75,30,64,95 DUP(70) ;数据段
DATASEG ENDS
CODESEG SEGMENT
ASSUME DS:DATASEG,CS:CODESEG
START:
MOV AX,DATASEG
MOV DS,AX
MOV AH,1 ;读入第一个数字a
INT 21H
SUB AL,30H
MOV CL,10
MUL CL
MOV BL,AL
MOV AH,1 ;读入第二个数字b
INT 21H
SUB AL,30H
ADD AL,BL ;得到a*10+b
MOV AH,2 ;Ready to print char
MOV BX,0
MOV CX,100
AGAIN: CMP SCORE[BX],AL
JE FOUND
INC BX
LOOP AGAIN
MOV DL,'N' ;Not found, print 'N'
JMP DONE
FOUND: MOV D......
kruskal 算法实现(2006-11-13 09:53:00)
摘要://kruskal 算法实现;
#include"graph2.h"
datagraph g2,g1;
struct node{//定义结构体;
int weight;
};
struct enode{
int v1,v2;
int weight;
int key;
};
enode edge[100];
node pp[100];
int keys[100];
int n;
int nweight;
int ecount1=0,ncount,ecount=0,ecount3=0;//初始化;
void change_weight(int weight1,int weight2)//改变节点的权值;
{
for(int k=1;k<=n-ncount;k++)
if(pp[keys[k]].weight==weight1||pp[keys[k]].weight==weight2)
pp[keys[k]].weight=n;
}
void get_tree()//生成树函数;
{
int min,min1,min2;
while(ecount!=ncount-1)
{
int m=1000;
for(int i=1;i<=ecount1;i++)
if(edge[i].weight<m&&edge[i].key==0)//选择权值最小的边;
{m=edge[i].weight;min=i;}
visite_gnode(g2,edge[min].v1,1); min1=edge[min].v1;
visite_gnode(g2,edge[min].v2,1); ......
设计程序以实现构造哈夫曼树的哈夫曼算法(2006-11-13 09:52:00)
摘要://数据结构课程设计、
//设计程序以实现构造哈夫曼树的哈夫曼算法。
//要求:使用实验工具的有关功能;要能有演示过程;求解出所构造的哈夫曼
//树的带权路径长度。
#include"btreint.h"
int count=0;
//数据的个数;
bitre data[50];//存储数组
void delete_min()//获得最小元素、
{
for(int i=1;i<=count-2;i++)
data[i]=data[i+2];
}
int tree_insert(bitre t)//插入新的节点;
{ if(t->data>=data[count]->data){data[++count]=t;return 0;}
else{int m;
for(int j=1;j<=count;j++)
if(data[j]->data>=t->data){m=j;break;}
for(int k=count;k>=m;k--)
data[k+1]=data[k];
data[m]=t;
count++;}
}
int num=0;
get_long(bitre t)//求解huffman树的带权路径长度;
{
if(t!=NULL)
{
if(t->rchild!=NULL&&t->lchild!=NULL)
{
visite_bnode(t,1);
num=num+t->data;
get_long(t->lchild);
get_long(t->rchild);
}
}
}
void main()
{
cout<<endl<<end......
课程设计哈夫曼树文件的压缩(2006-11-13 09:43:00)
摘要://课程设计哈夫曼树文件的压缩
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
#include"stdio.h"
using namespace std;
string remfile[6000];//存放原文件字符的数组;
int remcount=0;//记录元素个数;
float bitecount=0;//记录二进制码的个数;
/****************************************************************/
struct huffchar{//存放读入字符的类;
int count;//字符出现的个数;
char data;//字符;
};
int count=1;//记录huff数组中字符实际出现的个数;
huffchar huff[1000];//类的对象;
/****************************************************************/
/*文件读入部分和统计字符出现的频率*/
bool char_judge(char c)//判断字符出现的函数;
{
for(int i=1;i<=count;i++)
if(huff[i].data==c){huff[i].count++;return true;}//如果出现过,出现的频数加1;
return false;
}
void char_add(char c)//添加新出现的字符;
{
huff[count].data=c;
huff[count++].count++;//个数增加,
}
//文件的读取
void read_file_count()
{
char c;
C#心得(2006-11-10 10:48:00)
摘要:以前不了解C#,但是学习后知道还是很好学的,它和我学过的C++十分相似,使我上手很快,那我就介绍一下我的学习过程.
起初我看的是一本C#基础教程,认为很简单,只是很浏览的看;但是后来的编程中发现有些细节还是没看到,如类型的长度,以及一些类权限的定义如internal,abstact等把握的不好. C#中添加了一些参数声明:如ref,out等挺好的.其余的循环等都是蛮好学的.
第二步是在VS2005上编写自己的代码.为什么选择VS2005呢是因为它的代码提示功能和自动纠错功能我感到很好.如果有兴趣的话建议在那里编程.从编程中找到自己的不足,自己应该加强哪方面的学习,可以说受益菲浅.
以上是我学习的方法,其实我也是刚学的C#,没太多的经验可谈,只是将自己的想法说出来,和大家一起探讨学习C#的最佳方式.渴盼和大家一起交流.......