博文

汇编 分支程序设计(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  &......

阅读全文(3127) | 评论:0

汇编循环程序设计(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......

阅读全文(4322) | 评论:1

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); ......

阅读全文(1939) | 评论:0

设计程序以实现构造哈夫曼树的哈夫曼算法(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......

阅读全文(5768) | 评论:8

课程设计哈夫曼树文件的压缩(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;

阅读全文(3283) | 评论:1

C#心得(2006-11-10 10:48:00)

摘要:以前不了解C#,但是学习后知道还是很好学的,它和我学过的C++十分相似,使我上手很快,那我就介绍一下我的学习过程.  起初我看的是一本C#基础教程,认为很简单,只是很浏览的看;但是后来的编程中发现有些细节还是没看到,如类型的长度,以及一些类权限的定义如internal,abstact等把握的不好.  C#中添加了一些参数声明:如ref,out等挺好的.其余的循环等都是蛮好学的. 第二步是在VS2005上编写自己的代码.为什么选择VS2005呢是因为它的代码提示功能和自动纠错功能我感到很好.如果有兴趣的话建议在那里编程.从编程中找到自己的不足,自己应该加强哪方面的学习,可以说受益菲浅. 以上是我学习的方法,其实我也是刚学的C#,没太多的经验可谈,只是将自己的想法说出来,和大家一起探讨学习C#的最佳方式.渴盼和大家一起交流.......

阅读全文(2093) | 评论:0