第三次上机-参考程序

合集下载

哈夫曼编码

哈夫曼编码

第三次上机报告哈夫曼编码一.上机目的通过构造huffman树(最优二叉树)来加深对于二叉树这一数据结构特点的理解,体会二叉树在实际生活中的应用价值。

利用堆实现排序,体会堆这一数据结构在排序与有序提取数据中的价值。

熟悉文件输入输出。

加深对于ASCII码的理解以及熟练char型数据的使用。

熟练使用按位操作。

二.问题描述已知26个英文小写字母的字频,将其用二进制编码,使得采用这种编码进行通信时,信息传输量最小。

并且,为了在字符间省去不必要的间隔符号,要求所给出的每一个字符的编码在系统中都能唯一确定。

即任意字符的二进制编码不能解释为其他字符编码的前缀。

以上问题可以转化为如何构造一棵具有最小带权外部路径长度的扩充二叉树(huffman树)的问题。

具体的构造方法见算法部分的说明。

要求给定一个字符序列,将其转化为对应的huffman编码,即编码过程。

要实现这一目标,可以在huffman树构造好后,通过深度周游,将26个字母对应的huffman编码记录下来并且构造一个编码本codebook,利用ASCII码中a到z的连续性,将codebook 中字母顺序也排成a到z。

编码本构造好后,通过查阅编码本就可以很容易的得到字符序列的huffman编码。

另外,还要求给定一个huffman编码序列,将其转化为26个小写英文字母的序列,即解码过程。

为此,只需要按照huffman编码序列的顺序,周游已构造好的huffman树,找到对应的外部结点,并读取外部结点的字符即可。

这里,在构造huffman树时,我使用了堆来对huffmantreenode进行排序。

在编码时,采用按位操作。

三.数据结构与算法数据结构:小根堆类模板:template <class T>class minheap{private:T * heaparray;intcurrentsize;intmaxsize;void buildheap(T * hmtn);//建堆void swap(intpos_x,intpos_y);public:minheap(){};minheap(T * hmtn,int n);//构造函数,n为堆的最大元素数目virtual ~ minheap(){delete [] heaparray;};//析构函数bool remove(intpos,T& node);//删除给定下标的元素void siftup(int position);//从position开始向上调整void siftdown(int left);//从left开始向下调整friend class huffmantreenode;boolisempty();//判断堆是否为空boolisleaf(intpos) const;//判断是否为叶子结点intleftchild(intpos) const;//返回左孩子位置intrightchild(intpos) const;//返回右孩子位置int parent(intpos) const;//返回父结点位置bool insert(T &newnode);//插入新元素newnodeT &removemin();//从堆顶删除最小值};Huffmantree类:class huffmantree{private:huffmantreenode * root;public:huffmantree(huffmantreenode * hmtn,int n);//由一组huffmantreenode生成一个huffmantreehuffmantreenode * getroot() {return root;}virtual ~huffmantree(){}void deletetree(huffmantreenode * root);void encode(huffmantreenode * root,codebook * cb,unsignedinthuffcode,intcodenum);//产生编码,返回到codebook中void decode(char code[],char result[]);//解码,将结果放入result中friend class huffmantreenode;friend class minheap;};Huffmantreenode类:class huffmantreenode{private:huffmantreenode * left;//左子树huffmantreenode * right;//右子树float weight; //权重char oricode; //源码public:huffmantreenode(){left=NULL;right=NULL;}huffmantreenode(huffmantreenode * l,huffmantreenode * r){//给定数据的构造函数oricode=0;weight=l->getweight()+r->getweight();left=l;right=r;}float getweight() {return weight;};//返回数据char getoricode() {return oricode;}//返回字母huffmantreenode * leftchild() {return left;}//返回左子树huffmantreenode * rightchild() {return right;}//返回右子树void copy(huffmantreenode&hmtn) {left=hmtn.leftchild();right=hmtn.rightchild();weight=hmtn.getweight();oricode=hmtn.getoricode();}void merge(huffmantreenode&l,huffmantreenode& r){//将两棵树合并为一棵新树,其权重为两棵子树权重之和oricode=0;weight=l.getweight()+r.getweight();left=&l;right=&r;}void setinfo(char oric,floatwei) {oricode=oric; weight=wei;}boolisleaf() {//判断是否为叶子结点return(left==NULL&&right==NULL);}};编码本codebook类:class codebook{private:char oricode;//源码unsigned inthuffmcode;//huffman编码,按位操作intcodenum;//huffmancode的位数public:codebook(){oricode=0;huffmcode=0;codenum=0;}codebook(char &oric,unsignedint&hfmc){oricode=oric;huffmcode=hfmc;}~codebook(){}char getoricode() {return oricode;}void getinfo(char &ori,int&huff,int&num){//获取信息ori=oricode;huff=huffmcode;num=codenum;}void print() {cout<<"源码:"<<oricode;cout<<" 哈夫曼编码:";unsigned int m=0x00000001<<(codenum-1);while(m!=0x00000000){cout<<(huffmcode&m? '1':'0');m>>=1;}cout<<endl;}void setinfom(char oric,unsignedinthmc,int cum){//设定信息oricode=oric;huffmcode=hmc;codenum=cum;}friend void printcode(char message[],codebook * cb);};算法:非类成员函数:void printcode(char message[],codebook * cb){//打印哈夫曼编码int i(0);unsigned int m;ofstreamfout("huffmancode.txt");//打开文件输出到"huffmancode.txt"while(message[i]!='\0'){//字符串未到结尾时if (message[i]<'a'||message[i]>'z') fout<<message[i];//如果输入的字符不在a到z 之间则不编码,照源码输出else {m=0x00000001<<(cb[message[i]-'a'].codenum-1);//将1移到编码的最高位while(m!=0x00000000){//当1还在m中时fout<<((cb[message[i]-'a'].huffmcode)&m? '1':'0');//按位与,找到相应位置的huffmancode是1还是0;m>>=1;//1右移}}i++;}cout<<"编码完毕,结果已输出到文件huffmancode.txt中"<<endl;fout.close();//关闭文件输出}void printhuffmancode(codebook cb[M]){//打印哈夫曼编码表ofstreamfout("huffmancodelist.txt");char oric;inthuffmcode,codenum,i;for(i=0;i<M;i++){cb[i].getinfo(oric,huffmcode,codenum);fout<<"源码:"<<oric;fout<<" 哈夫曼编码:";unsigned int m=0x00000001<<(codenum-1);while(m!=0x00000000){fout<<(huffmcode&m? '1':'0');m>>=1;}fout<<endl;}fout.close();cout<<"哈夫曼编码表已输出到文件huffmancodelist.txt中"<<endl;}以下着重分析一下构造哈夫曼树的算法、编码算法、解码算法以及按位输出的算法。

第3次上机-C程序的运行环境-TC使用

第3次上机-C程序的运行环境-TC使用

实验: C 程序的运行环境-TC 的使用实验目的:熟练掌握在 Turbo C 系统上编辑、编译、连接和运行 C 程序的方法。

实验内容:一.TC 3.0的配置与基本使用步骤。

首先找到TC 安装的目录,如c:\tc-----注意:如果是其它目录请在下面步骤作相应调整。

1.在c:\tc 建立文件夹source 和output2.双击在桌面的TC3.03.进入菜单options | Directories 做设置填写output directories 项目为:c:\tc\output和source dirctories 项目为:c:\tc\source说明:output directories 参数的意思是编译源程序后生成的目标文件/可执行程序存储的目录在哪里source dirctories 参数的意思是源程序存储的目录,编译程序从这里找源程序做编译.4. 用菜单File | New 新建程序文件,输入下列源程序。

#include <stdio.h>a=1; b=2;}5.按Ctrl+F9编译运行程序。

说明:按Ctrl+F9是编译、连接、运行连续进行。

6.按Alt+F5查看程序运行的结果。

7. 进入菜单options | Directories ,观察第1栏“Include Directories ”和第2栏“Library Directories ”Include Directories表示要包含的头(header)文件存储在哪里,如:c:\tc\includeLibrary Directories表示要库(Library)文件存储在哪里,如:c:\tc\lib8 .退出。

按“Alt+x ”键,退出Turbo C。

9.在Windows资源管理器中,找到刚才的output文件夹,观察生成的可执行程序文件的扩展名,修改日期。

自己练习如下操作1.把自己写的源程序放在E:盘(或自己带的U盘)的mysource,可执行程序放在myoutput,应该如何设置。

第3次上机实习内容(2课时).

第3次上机实习内容(2课时).

第3次上机实习内容(2课时)实验名称:HTML及DHTML上机实习2实验目的及要求:1、通过练习,继续熟悉HTML文档的基本结构;2、掌握表格、表单、框架结构等。

3、掌握客户端动态页面(DHTML)的DOM(文档对象模型)、CSS(层叠样式表)和SCRIPT(脚本程序语言)技术的基本概念及进行简单的DHTML页面设计。

实验内容:1、表格、表单、框架结构的使用;2、CSS的使用;3、SCRIPT技术的使用。

一、表格、表单、框架的上机练习注意:本次实验使用工具为Windows自带写字板(可以结合Dreamweaver 的设计视图和代码视图来完成)(1)制作并完成个人简介表格(2)表单制作:制作并完成情况调查表(3)完成如下示例,体会JavaScript脚本语言的使用。

设计含有左、中、右3个纵向框架的框架集页面。

①框架集页面(sample2.html)文件代码如下:<html><head><title>框架页面示例2</title></head><noframes>您的浏览器不支持框架结构,故当前网页无法显示!</noframes><frameset cols=”20%,*,30%”><frame src=”left.htm”><frame src=”middle.htm”><frame src=”right.htm”></frameset></html>②left.htm页面文件代码如下:<html><head><title>left.htm文件</title></head><body>这是左面框架文件</body></html>③right.htm页面文件代码如下:<html><head><title>right.htm文件</title></head><body>这是右面框架文件</body></html>图纵向框架结构同样将这3个文件也存放在同一个文件夹中,浏览sample2.html文件即可看到如上图的效果。

计算机硬件上机参考程序

计算机硬件上机参考程序

1-1.DA TA SEGMENTIN1 DB 0FHIN2 DB 0AAHIN3 DB 0FFHIN4 DB 0FBHF DB ?DA TA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AXMOV AL,IN1NOT ALMOV AH,IN2OR AL,AHMOV BL,IN3AND BL,IN4XOR AL,BLMOV F,ALDONE: MOV AH,4CHINT 21HCODE ENDSEND START1-2DA TA SEGMENTNUM1 DW 0001HF DW ?DA TA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AX,NUM1MOV DX,AXSAL AX,1MOV CL,3SAL DX,CLADD AX,DXMOV F,AX DONE:MOV AH,4CHINT 21HCODE ENDSEND START1-3DA TA SEGMENTDA T1 DB22H,43H,78H,45HDB 65H,32H,14HDA T2 DB22H,23H,43H,65HDB 67H,78H,97HRESULT DB 7 DUP(?)DA TA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DAT1MOV CX,7XOR BL,BLAGAIN:MOV AL,[SI]ADC AL,[SI+7]MOV [SI+0EH],ALINC SILOOP AGAINADC BL,0MOV [SI+0EH],BLMOV AH,4CHINT 21HCODE ENDSEND START2-1DA TA SEGMENTA DB 24HB DB 23HC DB 12HN DB ?DA TA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,AMOV AL,BCMP AH,ALJLE NEXTSUB AH,ALMOV BL,CADD AH,BLJMP NEXT1NEXT: ADD AH,BLNEXT1: MOV N,AHMOV AH,4CHINT 21HCODE ENDSEND STARt2-2DA TA SEGMENTA DB 09HB DB 09HC DB 08HK DB ?DA TA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,AMOV AH,BMOV BL,CMOV BH,00HCMP AL,AHJZ NEXTCMP BL,AHJZ NEXTCMP AL,BLJZ NEXTNEXT: ADD BL,01HRETCMP BL,3JE NEXT1NEXT1: MOV BL,2MOV K,BLMOV AH,4CHINT 21HCODE ENDSEND START2-3DA TA SEGMENT FIRST DB 09H,09H,0AH,0FH,23H,0 8H,06H,45H,56H,05HX DB ?DA TA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXLEA SI,FIRSTMOV CX,8MOV AL,[SI]MOV BL,00H AGAIN: SHL AL,1JC NEXTINC BL NEXT: LOOP AGAINMOV AL,BLMOV X,ALMOV AH,4CHINT 21HCODE ENDSEND START2-4DA TA SEGMENTA DB 09HB DB 09HC DB 08HK DB ?DA TA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV AL,AMOV AH,BMOV BL,CCMP AH,BLJZ NEXT1CMP AL,AHJZ NEXT2NEXT3: CMP AL,BLJZ NEXT2JMP NEXT4NEXT1: INC KCMP AL,AHJZ NEXT2JMP NEXT3NEXT2:INC KJMP NEXT4NEXT4:MOV AH,4CHINT 21HCODE ENDSEND START3-1data segmentNUM DW1234H,1100H,1001HSUM DW ?data endscode segmentassumecs:code,ds:dataSTART: MOV AX,DATAMOV DS,AXLEA BX,NUMCALLADDSUBMOV CX,AXCALL DISPMOV AH,4CHINT 21HADDSUB PROC NEARMOV AX,[BX]MOVDX,[BX+2]ADD AX,DXMOVDX,[BX+4]ADD AX,DXMOVSUM,AXRETADDSUB ENDPDISP PROC NEARMOV DI,16YH: MOV DL,'0'RCL CX,1JNC YHHMOV DL,'1'YHH: MOV AH,2INT 21HDEC DIJNZ YHRETDISP ENDPcode endsend start3-2data segmentbuf db5aH,4BH,4EH,48H,5CH,41H,38H,3DH,32H,3FHbuf2 DB 20 DUP(0)data endscode segmentassume cs:code,ds:data,SS:DATAstart: mov ax,datamov ds,axlea si,bufLEA DI,BUF2mov cx,10loop1: mov BL,[si] ;将si传到bl中SHR BL,4call HEXASCmov BL,[si] ;将si传到bl中AND BL,0FHcall HEXASCinc siloop loop1mov ah,4chint 21hHEXASC proc neaRCMPBL,0AHJL ADDZADD BL,7 ADDZ: ADD BL,48MOV DL,BLmov ah,02hint 21hMOV [DI],BLINC DImov dl,' 'mov ah,02hint 21hret HEXASC endpcode endsend start3-3MLENGTH=12data segmentX DB 2 DUP(0),'$'BUFF DB MLENGTH data endscode1 segmentassumecs:code1,ds:datastart: MOV AX,DATAmov ds,axMOVDX,OFFSET BUFFMOV AH,10INT 21Hcall far ptr sab1CODE1 ENDScode2 segmentassume cs:code2sab1 proc farLEA DI,XMOV AL,0MOVAL,BUFF+1MOV [DI],ALMOV BH,0mov si,offset buff+2MOV CL,ALLOOP1:MOV BL,[si]cmp BL,78hjnz NEXT1INC BHNEXT1:INC siLOOP LOOP1MOV [DI+1],BHmov dl,0Ahmov ah,02hint 21hmov dl,'x'mov ah,02hint 21hmov dl,'='mov ah,02hint 21hmov dl,bhshr dl,4cmp dl,0ahjl add2add dl,7add2:add dl,48mov ah,02hint 21hmov dl,bhand dl,0FHcmp dl,0ahjl add3add dl,7add3:add dl,48mov ah,02hint 21hsab1 endpmov ah,4chint 21hcode2 endsend START4-1data segmentMESS0 DB'YINHUAqingshuru','$'MESS1 DB 'RIGHT','$'MESS2 DB 'ERROR','$'MESS3 DB 3data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axYHH: MOV DX,OFFSETMESS0MOV AH,9INT 21Hmov dl,0AHmov ah,02hint 21hMOV DX,OFFSETMESS3MOV AH,0AHINT 21HMOV SI,OFFSETMESS3+2MOV AL,[SI]CMP AL,'0'JB YHCMP AL,'9'JA YHJMP YHH1YHH1: MOV AL,[SI+1]CMP AL,'a'JB YH1CMP AL,'z'JA YH1JMP YH2YH1: CMP AL,'A'JB YHCMP AL,'Z'JA YHJMP YH2YH: mov dl,0AHmov ah,02hint 21hMOV DX,OFFSET MESS2MOV AH,9INT 21Hmov dl,0AHmov ah,02hint 21hJMP YHHYH2: mov dl,0AHmov ah,02hint 21hMOV DX,OFFSET MESS1MOV AH,9INT 21HMOV AH,4CHINT 21Hcode endsend start4-2MLENGTH=128data segmentDIGIT DB ?LETER DB ?OTHER DB ?MESS0 DB 'PLEASE INPUT','$'MESS1 DB 'digit=','$'MESS2 DB 'leater=','$'MESS3 DB 'other=','$'BUFF DB MLENGTHdata endscode segmentassumecs:code,ds:datastart: MOV AX,DATAmov ds,axMOV DX,OFFSET MESS0MOV AH,9INT 21HMOV DX,OFFSET BUFFMOV AH,10INT 21HMOV BL,0MOV BH,0MOV AL,0MOV ah,BUFF+1MOV SI,OFFSETBUFF+2MOV Cl,ahYH:MOV AH,[SI]CMP AH,'0'JB NEXTCMP AH,'9'JA NEXTINC ALjmp next3NEXT: CMP AH,'A'JB NEXT1CMP AH,'Z'JA NEXT1INC BLjmp next3NEXT1: CMP AH,'a'jb NEXT2CMP AH,'z'ja next2inc bljmp next3next2: inc bhnext3: INC SIloop yhlea si,DIGITmov [si],allea si,LETERmov [si],bllea si,OTHERmov [si],bhCALL HHMOV DX,OFFSETMESS1CALL DISPMESSMOV SI,OFFSETDIGIT+2MOV DL,[SI]CALL DISPAHLCALL HHMOV DX,OFFSET MESS2CALL DISPMESSinc siMOV DL,[SI]CALL DISPAHLCALL HHMOV DX,OFFSET MESS3CALL DISPMESSinc SIMOV DL,[SI]CALL DISPAHLmov ah,4chint 21hDISPAHL PROCmov dl,bhcall cccmov dl,bhand dl,0FHcall cccmov dx,0retDISPAHL ENDPHH PROCMOV DL,0AHCALL ECHOCHRETHH ENDPECHOCH PROCMOV AH,2INT 21HRETECHOCH ENDPDISPMESS PROCMOV AH,9INT 21HRETDISPMESS ENDPccc proccmp dl,0ahjl add2add dl,7add2:add dl,48call echochretccc endpcode endsend START5-1.486CODE SEGMENT USE16 ASSUME CS:CODEORG 4000H START:MOV DX,30HMOV AL,00010110BOUT DX,ALMOV DX,300HMOV AL,47OUT DX,ALWT: JMP WTCODE ENDSEND START5-2CODE SEGMENT USE16 ASSUMECS:CODEorg 4000h START:MOV DX,30CHMOV AL,01110010BOUT DX,ALMOV DX,304HMOV Ax,47000OUT DX,ALMOV AL,AHout dx,alwt:JMP WTCODE ENDSEND START5-3CODE SEGMENT USE16 ASSUME CS:CODEORG 4000HSTART:MOVDX,30CHMOVAL,01110110BOUT DX,ALMOV DX,304HMOV AX,256OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,30CHMOVAL,10010110BOUT DX,ALMOV DX,308HMOV AL,187OUT DX,ALWT:JMP WTCODE ENDSEND START6-1.486CODE SEGMENTUSE16ASSUME CS:CODEORG 4000HSTART:MOV DX,20FHMOV AL,80HOUT DX,ALMOV BL,10101010BAGAIN:MOV DX,207HMOV AL,BLOUT DX,ALMOV CX,0FFFFHLP:LOOP LPNOT BLJMP AGCODE ENDSEND START6-2.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:MOV DX,20FHMOV AL,82HOUT DX,ALMOV BH,00HAG: MOV DX,207HIN AL,DXCMP AL,BHJZ JP3CMP AL,11111110BJZ JP2CMP AL,11111100BJZ JP2CMP AL,11111000BJZ JP2CMP AL,11110000BJZ JP2CMP AL,11100000BJZ JP2CMP AL,11000000BJZ JP2CMP AL,10000000BJZ JP2CMP AL,00000000BJZ JP2JMP JP1JP2: MOV BL,ALMOV BH,ALJMP JP3JP1: MOV BL,0FFHJP3: MOV DX,20BHMOV AL,BLOUT DX,ALROR BL,1MOV CX,0FFFFHLP: LOOP LPJMP AGCODE ENDSEND START6-3CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:MOV DX,20FHMOV AL,90HOUT DX,ALAG:MOV DX,203HIN AL,DXTEST AL,11111111BJZ JP0TEST AL,11111110BJZ JP1TEST AL,11111100BJZ JP2TEST AL,11111000BJZ JP3TEST AL,11110000BJZ JP4TEST AL,11100000BJZ JP5TEST AL,11000000BJZ JP6TEST AL,10000000BJZ JP7TEST AL,00000000BJZ JP8JMP JP9JP0:MOV AL,00HJMP JPPJP1:MOV AL,01HJMP JPPJP2:MOV AL,02HJMP JPPJP3:MOV AL,03HJMP JPPJP4:MOV AL,04HJMP JPPJP5:MOV AL,05HJMP JPPJP6:MOV AL,06HJMP JPPJP7:MOV AL,07HJMP JPPJP8:MOV AL,08HJMP JPPJP9:MOV AL,00H JPP:MOV DX,207HNOT ALOUT DX,ALJMP AGCODE ENDSEND START7-1 .486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:MOV DX,20FHMOV AL,80HOUT DX,ALMOV DX,207HMOV AL,7FHOUT DX,ALNXTR:MOV BL,6MOV AL,01HNXTB:MOV DX,203HOUT DX,ALMOVECX,0FFFFFFFFHLOOP1:LOOP LOOP1SHL AL,1DEC BLJNZ NEXBJZ NEXTRCODE ENDSEND START7-2.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:MOV DX,20FHMOV AL,80HOUT DX,ALBG:MOV DX,207HMOV AL,06HOUT DX,ALMOV DX,203HMOV AL,01HOUT DX,ALMOV DX,207HMOV AL,5BHOUT DX,ALMOV DX,203HMOV AL,02HOUT DX,ALMOV DX,207HMOV AL,4FHOUT DX,ALMOV DX,203HMOV AL,04HOUT DX,ALMOV DX,207HMOV AL,E6HOUT DX,ALMOV DX,203HMOV AL,08HOUT DX,ALMOV DX,207HMOV AL,6DHOUT DX,ALMOV DX,203HMOV AL,10HOUT DX,ALMOV DX,207HMOV AL,7DHOUT DX,ALMOV DX,203HMOV AL,20HOUT DX,ALJMP BGCODE ENDSEND START7-3.486CODE SEGMENT USE16ASSUME CS:CODEORG 4000HSTART:JMP:WFTKEY DB06H,5BH,4FH,0E6H,6DH,7DHWFT:MOV DX,20FHMOV AL,80HOUT DX,ALLEA SI,KEYMOV BL,01HMOV CX,0006H WT:MOV DX,207HMOV AL,[SI]OUT DX,ALMOV DX,203HMOV AL,BLOUT DX,ALINC SISHL AL,1LOOP WTJMP WTFCODE ENDSEND START8-1.486CODE SEGMENT USE16 ASSUMECS:CODEORG 4000H START:MOV DX,20FHMOVAL,10000001BOUT DX,ALKSCAN:MOV BL,0B0HMOV AL,BLMOV DX,20BHOUT DX,ALMOV DX,20BHIN AL,DXAND AL,0FHCMP AL,0FHJNZ FNDKEYJMP KSCANFNDKEY: ORBL,ALMOV ECX,0FFHLOOP1:LOOP LOOP1KEYUP:MOV AL,0MOV DX,20BHOUT DX,ALMOV DX,20BHIN AL,DXAND AL,0FHCMP AL,0FHJNZ KEYUPCMP BL,0BBHJZ DSP_K10CMP BL,0B7HJZ DSP_K11MOV DX,207HMOV AL,0OUT DX,ALJMP KSCANDSP_K10:MOV DX,203HMOV AL,01110001BOUT DX,ALMOV DX,207HMOV AL,0FFHOUT DX,ALJMP KSCANDSP_K11:MOV DX,203HMOV AL,01000000BOUT DX,ALMOVDX,207HMOV AL,0FFHOUT DX,ALJMP KSCANCODE ENDSEND START。

C语言上机作业试题5套含答案

C语言上机作业试题5套含答案

第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。

程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。

例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。

例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。

(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。

)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。

方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。

例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。

⏹A说:不是我。

⏹B说:是C。

⏹C说:是D。

⏹D说:他乱说。

已知三个人说的是实话,一个人说的是谎话。

此刻要依照这些信息,找出做了好事的人。

CAAC实验报告第3次参考答案

CAAC实验报告第3次参考答案

计算机辅助电路分析第3次上机报告1.采用Multisim 设计实验, 求解下图电路的戴维宁等效模型。

要求画出实验接线图, 写出计算过程, 画出戴维宁等效电路。

分析调节 为何值时 。

提示:(1)利用“parameter sweep ”功能。

(提示:在“more option ”中设置“DC Operating Point ”, 分析范围1-150V ) (2)利用“DC sweep ”功能。

求解戴维宁等效模型的电路图(见3-1a.msm ):V11 VR11R22R33V20.3333 V1I12 A/AI235XMM14V U oc 1= A I SC 2.0= Ω==52.01eq R2) 绘制戴维宁等效模型(见3-1b.msm )Uoc 1 VReq 5213)parameter sweep: (见3-1c.msm)4)“DC sweep”: (见3-1c.msm)注: 本题在求解戴维宁模型时也可以采用图3-1c.msm, 这时需要对4Ω电阻设置开路故障(fault>open)Conditions ”设置为“User-Defined ”, 仿真时间[0 2])图1解: Multisim 电路模型如下: (见3-2.msm )ANSI 符号标准:I14 AL12 HR14 V110123DIN 符号标准:I14 AV110IL12 HR14231i L (t )仿真波形如下:注: 波形图可以直接在仿真窗口右键Copy或Edit菜单Copy后粘贴得到本题点评:1)动态元件初始值的设定方法。

分析时初始条件的选择。

User defined 或??2)电流控电压源的连接3)仿真时间的设置, 一般4~5τ即可。

(1) 3.电路如图所示, R1=6.2ohm, R2=2.0ohm, C1=1.8uF, L1=30mH。

(2)f=50Hz, 用示波器观测电路的性质(电容性, 电感性, 电阻性)。

(3)用“AC Analysis”作出幅频和相频特性图, 找出并联谐振频率。

c语言上机练习

c语言上机练习

第一次上机练习(首次)1.阅读以下程序,说出其功能和运算结果(输入5↙)。

#include <stdio.h>int main( ){int n ;int factorial(int n) ;scanf("%d",&n) ;printf("%d\n", factorial(n)) ;return 0 ;}int factorial(int n){int i, fact=1 ;for(i=1;i<=n;i++)fact=fact*i ;return fact ;}答案:120 求n的阶乘。

2.改正下列程序中的错误,在屏幕上显示“Welcome to You!”。

#include <stdio.h>int mian( ){printf("Welcome to You!\n")return 0 ;}答案:2行main4行末尾少分号3.编写程序在屏幕上显示以下内容:Programming is fun.And Programming in C is even more fun!答案:#include <stdio.h>int main( ){printf("Programming is fun.\nAnd Programming in C is even more fun!\n") ;return 0 ;}4.编写程序输出以下图案:* * * ** * ** **答案:#include <stdio.h>void main( ){printf("* * * *\n");printf(" * * *\n");printf(" * *\n");printf(" *\n");}5.编写程序,计算并在屏幕上显示10~20的平方值。

三项考试上机考施考程序及上机考的有关内容

三项考试上机考施考程序及上机考的有关内容

考生守则(技术上机考试)一、考生报名时应认真阅读《诚信考试承诺书》的内容,并确认同意。

二、考生必须自觉服从监考员、系统管理员、候考(滞留)室管理员等考试工作人员的管理,不得以任何理由妨碍监考员、系统管理员等考试工作人员履行职责。

不得扰乱考场及其他考试工作地点的秩序。

三、考试时间以北京时间为准,考生必须凭准考证在规定的截止时间之前进入候考室等候,否则视为当次(每半年一次)考试缺考。

四、考生进入考场后,应对号入座,并将准考证放在电脑桌左下角。

五、考生除携带毛巾(擦汗用须拧干)、无商标纸的饮料外(除特殊规定的除外),其他任何物品不准带入候考室、滞留室和考场。

严禁携带具有发送或者接收信息功能的设备、电子存储记忆录放设备、移动存贮设备(如优盘、PDA)以及涂改液、修正带等物品进入候考室,滞留室和考场。

候考室、滞留室和考场内不得自行传递物品。

六、监考员宣布机考操作正式开始后,考生应立即进行系统登录,因考生原因超过5分钟未登录,以考生弃考(0分)论处。

七、考生登录时,应及时校对考生基本信息,如不符,立即举手,与监考员取得联系。

八、考试过程中,如出现死机或系统问题,应及时举手与监考员取得联系;考生不得旁窥、交谈,不得拔动电源插座、禁止故意损坏考场设施设备,禁止考生将无关文件拷入考生文件夹、禁止抄录(复制)有关试题信息,否则视为违规。

九、上机考试时间由系统自动控制,考试期间考生必须及时进行存盘,在系统计时结束前提交考试结果;系统计时结束,应立即停止任何操作。

十、开考20分钟后,允许考生离场,考生离场后,不得以任何理由返回考场。

提前交卷考生,须经监考员、考场系统管理员确认考试包回收、检查无误后,方可离开考场,到滞留室等候进一步通知。

十一、整场考试结束时,考生在原位等候,待考场系统管理员将考生数据包回收、检查无误后,按监考员指令动作,不准在考场逗留。

十二、机考试题在考试结束前属国家机密级材料,考生不得以任何方式向外界透露。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三循环程序设计实验目的:1、熟悉Code::Bocks编程环境,逐步掌握常用的调试方法;2、继续理解分支语句,掌握使用方法与技巧;3、理解循环控制语句,初步使用循环结构解决简单问题;4、熟悉在OJ平台上做题的流程。

1、(中庸之道)读入三个整数a、b、c,找出中间数(按大小)#include <stdio.h>int main(){int a,b,c,i,T,t;freopen("E1.in","r",stdin);freopen("E1.out","w",stdout);scanf("%d",&T);for(i=0;i<T;i++){scanf("%d%d%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}if(a==b)printf("%d\n",c);elseprintf("%d\n",b);}return 0;}2、(中庸之道)读入三个整数a、b、c,找出中间数(按大小)有多组测试数据。

每一组测试数据只有一行,分别为整数a、b和c,相邻两数之间有一个空格,最后一行三个数字均为0,表示输入结束,该行不需要处理。

其中-2^31<a,b,c<2^31。

#include <stdio.h>int main(){int a,b,c,t;freopen("E2.in","r",stdin);freopen("E2.out","w",stdout);while(1){scanf("%d%d%d",&a,&b,&c);if(a==0 && b==0 && c==0)break;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}if(a==b)printf("%d\n",c);elseprintf("%d\n",b);}return 0;}3、(跳水打分问题)运动员跳水时,有n个评委打分,假设为10分制,有两位小数。

如果去掉最高分和最低分,该运动员的得分是多少?输入的第一行是数据组数T,随后的每一行的第一个数是评委数n,其后是n个评分。

对应每组评分,输出一行平均分。

#include <stdio.h>int main(){int T,n,i;double mi,ma,temp,sum;freopen("1.in","r",stdin);freopen("1.out","w",stdout);scanf("%d",&T);while(T--){scanf("%d",&n);mi=100;ma=-1;sum=0.0;for(i=0;i<n;i++){scanf("%lf",&temp);if(mi>temp) mi=temp;if(ma<temp) ma=temp;sum+=temp;}sum-=mi+ma;printf("%.4lf\n",sum/(n-2));}return 0;}4、(最大公约数与最小公倍数)任给两个正整数,求两数的最大公约数数据只有一行,分别为整数a和b,两数之间有一个空格。

对应每组输入,输出一行对应两数的最大公约数和最小公倍数,两数之间用一个空格隔开。

#include <stdio.h>int main(){int a,b,s,r,T;freopen("E4.in","r",stdin);freopen("E4.out","w",stdout);scanf("%d",&T);while(T--){scanf("%d %d",&a,&b);s=a*b;if(a<b){r=a;a=b;b=r;}do{r=a%b;a=b;b=r;}while(b!=0);printf("%d %d\n",a,s/a);}return 0;}5、(右递进整除数)把0、1、2、…、9这个0个数字组成无重复数字的10位整数A。

若A 的右边k个数字所成的k位数能被k整除(1<=k<=10),我们把这样的数A称为右递进整除数。

你的任务是读入整数A,判断它是否是右递进整除数。

#include <stdlib.h>int main(){int k,T;long long n,s,t;freopen("E5.in","r",stdin);freopen("E5.out","w",stdout);scanf("%d",&T);while(T--){scanf("%lld",&n);t=100;for(k=2;k<10;k++){s=n%t;if(s%k!=0)break;t*=10;}if(k>=10)printf("Yes\n",n);elseprintf("No\n",n);}return 0;}6、(正三角形的顶点)给出坐标平面上正三角形其中两个顶点的坐标,求第三个顶点的坐标。

要求保留小数点后两位小数。

输入第一行是测试数据组数T,其后每一行是四个带两位小数的实数,表示两个顶点的横纵坐标。

对应每组输入,输出两个解。

若横坐标不相等,#include <stdio.h>#include <math.h>int main(){int i,T;double a1,b1,a2,b2,x1,y1,x2,y2,cs,sn,pi;freopen("E3.in","r",stdin);freopen("E3.out","w",stdout);pi=acos(-1);scanf("%d",&T);for(i=0;i<T;i++){scanf("%lf%lf%lf%lf",&a1,&b1,&a2,&b2);cs=cos(pi/3);sn=sin(pi/3);x1=((a2-a1)*cs-(b2-b1)*sn)+a1;y1=((a2-a1)*sn+(b2-b1)*cs)+b1;x2=((a2-a1)*cs+(b2-b1)*sn)+a1;y2=(-(a2-a1)*sn+(b2-b1)*cs)+b1;x1=(x1>0)?(((int)(x1*100+0.5))/100.0):(((int)(x1*100-0.5))/100.0);y1=(y1>0)?(((int)(y1*100+0.5))/100.0):(((int)(y1*100-0.5))/100.0);x2=(x2>0)?(((int)(x2*100+0.5))/100.0):(((int)(x2*100-0.5))/100.0);y2=(y2>0)?(((int)(y2*100+0.5))/100.0):(((int)(y2*100-0.5))/100.0);if((x1>x2) || (x1==x2 && y1>y2))printf("%.2lf %.2lf %.2lf %.2lf\n",x2,y2,x1,y1);elseprintf("%.2lf %.2lf %.2lf %.2lf\n",x1,y1,x2,y2);}return 0;}7、(分数运算)读入4个整数a、b、c、d和一个运算符(‘+’、‘-’、‘*’、‘/’中的一个),进行分数a/b和c/d的对应运算,输出最简结果。

#include <stdlib.h>int main(){int T;freopen("E6.in","r",stdin);freopen("E6.out","w",stdout);scanf("%d",&T);while(T--)char ch;int a,b,c,d,p,q,s,t,r,flag;flag=0;scanf("%d %d %d %d %c",&a,&b,&c,&d,&ch);//求出新分数的分子与分母switch(ch){case '+':q=a*d+b*c;p=b*d;break;case '-':q=a*d-b*c;p=b*d;if(q<0){q=-q;flag=1;}break;case '*':q=a*c;p=b*d;break;case '/':q=a*d;p=b*c;break;}//化简(p>q)?(s=p,t=q):(s=q,t=p);do{r=s%t;s=t;t=r;}while(t!=0);q/=s;p/=s;//输出if(flag==1)q=-q;if(p==1)printf("%d/%d%c%d/%d=%d\n",a,b,ch,c,d,q);elseprintf("%d/%d%c%d/%d=%d/%d\n",a,b,ch,c,d,q,p);return 0; }。

相关文档
最新文档