第三次上机-参考程序
哈夫曼编码
第三次上机报告哈夫曼编码一.上机目的通过构造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使用
实验: 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课时)实验名称: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套含答案
第一次上机作业(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次参考答案
计算机辅助电路分析第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语言上机练习
第一次上机练习(首次)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.启动服务端,监听1024端口,打印客户端连接信息
2.启动客户端,输入服务端IP地址,成功后输入用户名,服务端自动响应“success:login”
后,进入待发送消息提示符(启动了3个客户端,在服务端截图中可以看到连接成功)
3.客户端发送消息,其他客户端可以同时收到服务端转发过来的消息
4.服务端将接收到的消息打印出来,并且可以看到连接线程管理器检查到的已连接客户端
的数量,一旦检测到有连接主动断开,也会自动打印提示信息。
5.客户端输入exit后退出服务,可以在上图中服务端断开连接信息中,通过端口确定客户
端连接已断开
6.服务端一直监听新的客户端连接,并且可以持续与现有未关闭的连接进行通信,接收并
转发所有客户端的消息
7.新连入的客户端与之前未关闭的客户端也能持续收到服务端转发的消息。
西电_C++_第三次上机报告
第三次上机报告一、题目1. 创建一个Person类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。
其功能有修改姓名、显示数据信息。
要求其功能函数的原型放在类定义中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。
其中数据成员为保护的,函数为公有的。
2. 编写设计一个People(人)类。
该类的数据成员有年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eating)、运动(Sporting)、睡眠(Sleeping)、显示(Show)和显示人数(ShowNum)。
其中构造函数由已知参数年龄(a)、身高(h)和体重(w)构造对象,进食函数使体重加1,运动函数使身高加1,睡眠函数使年龄、身高、体重各加1,显示函数用于显示人的年龄、身高、体重,显示人数函数为静态成员函数,用于显示人的个数。
假设年龄的单位为岁,身高的单位为厘米,体重的单位为市斤,要求所有数据成员为protected访问权限,所有成员函数为public 访问权限,在主函数中通过对象直接访问类的所有成员函数。
3. 定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。
其中姓名定义为长度为18的字符数组,其他数据成员类型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(showStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数,用于显示人数、数学总成绩、英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。
吉林大学数据结构第三次上机实验题目
第三次上机
验证试验(必作题):
题目:二叉树相关算法的实验验证
[实验目的]
验证二叉树的链接存储结构及其上的基本操作。
[实验内容及要求]
1、定义链接存储的二叉树类。
2、实验验证如下算法的正确性、各种功能及指标:
1)创建一棵二叉树,并对其初始化;
2)先根、中根、后根遍历二叉树;
3)在二叉树中搜索给定结点的父结点;
4)搜索二叉树中符合数据域条件的结点;
3、由教师随机指定树结构,测试上述功能;
设计实验(选作题):
题目:判别给定二叉树是否为完全二叉树。
[实验目的]
在掌握二叉树的链接存储及基本操作的基础上,设计解决问题的算法。
[实验内容及要求]
设计算法判别给定二叉树t是否为完全二叉树;实现链接存储的二叉树类。
华中科技大学c++第3次上机作业
华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第三次上机实验实验学时:4:学号:班级:电气实验日期:2017/3/27 教师批阅签字:一、实验目的●掌握三种循环语句的使用。
●学会使用continue 和break。
●掌握多重循环的设计。
●掌握常用算法的应用。
二、实验容1.在vc环境下编写下述程序代码,编译调试然后用不同的数据测试直至得到完全正确的结果。
并解释出错原因。
#include<iostream>#include<cmath>using namespace std;int main( ){float x0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<a<<"不能开平方!"<<endl;else ;{x0=a/2;x1=(x0+a/x0)/2;while (abs(x1-x0)>=1e-5){x0=x1;x1=(x0+a/x0)/2;}cout<< a<<"的平方根为:"<<x1<<endl;}return 0;语法错误:1.最后缺少花括号。
逻辑错误:1.else后面有分号,导致花括号中的语句不受else限制。
2.abs所提供的精度为整数更改后的程序:#include<iostream>#include<cmath>using namespace std;int main( ){float x0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<a<<"不能开平方!"<<endl;else{x0=a/2;x1=(x0+a/x0)/2;while (fabs(x1-x0)>=1e-5){x0=x1;x1=(x0+a/x0)/2;}cout<< a<<"的平方根为:"<<x1<<endl;}return 0;}2.下列程序的功能是:计算一对兔子,从出生后第3个月起每个月都生一对兔子。
操作系统实验指导书(江西农业大学)
操作系统实验指导书(江西农业大学)————————————————————————————————作者:————————————————————————————————日期:操作系统原理实验指导书课程号:0540251适用专业:软件工程制定人:邓泓、熊焕亮、李光泉教研室:软件开发教研室江西农业大学软件学院2010 年7 月前言操作系统是计算机的核心和灵魂。
操作系统软件的设计对整个计算机的功能和性能起着至关重要的作用,所以此门课也是必不可少的,是面向计算机科学与技术、网络工程、软件工程等大多数计算机专业本科生和研究生开设的一门计算机专业课程。
操作系统是计算机系统的核心,《操作系统》课程是计算机科学与技术专业的重要必修课。
本课程的目的是使学生掌握现代计算机操作系统的基本原理、基本设计方法及实现技术,具有分析现行操作系统和设计、开发实际操作系统的基本能力。
操作系统实验是操作系统课程的重要组成部分,属于学科基础实验范畴。
作为与相关教学内容配合的实践性教学环节,应在操作系统理论课教学过程中开设。
操作系统是计算机科学与技术专业必修的专业基础课程,操作系统实验的作用是:理解操作系统的设计和实现思路,掌握典型算法.基本要求是:理解进程的概念,理解死锁,掌握银行家算法;掌握请求页式存储管理的实现原理及页面置换算法。
学生应具有高级语言编程能力、具有数据结构等基础知识.实验要求为了顺利完成操作系统课程实验,学生应做到:(1)实验前,认真学习教材以及实验指导书的相关内容,提前做好实验准备.(2)实验结束一周后提交实验报告。
实验报告内容应包括:实验目的、实验内容、设计思路和流程框图,源程序(含注释)清单、测试结果以及实验总结.(3)遵守机房纪律,服从辅导教师指挥,爱护实验设备。
实验的验收将分为两个部分.第一部分是上机操作,随机抽查程序运行和即时提问;第二部分是提交书面的实验报告。
此外杜绝抄袭现象,一经发现雷同,双方成绩均以0分计算。
第三次上机实验参考答案.doc
第三次上机实验参考答案1、类对象的定义【项目要求】定义一个圆类,计算圆的面积和周长。
(1)控制台应用程序的参考代码如下:namespace SY3_1{class Program{static void Main(string[] args){double r;Console.Write(”请输入圆的半径:”);r = Convert.ToDouble(Console.ReadLine());Circle cl = new Circle(r);Console.WriteLineC'圆周长={0}\n 圆面积={1}", cl.getCircumference(), cl.getAreaO);Console.ReadLine();}}class Circle{private double radius;public Circle(double r){radius = r;}图3-1 1MI类求面积和周长public double getArea(){return Math.PI * radius * radius;}public double getCircumference(){return 2 * Math.PI * radius;}〃定义一个圆类,计算圆的面积和周长。
(2)用面向对彖的思想实现Windows应用程序,用八输入圆的半径,点击计算按钮能输出圆的面积和周长。
界面如图3・2所示。
private void buttonl_Click(object sender, EventArgs e) {double r;r = Convert.ToDouble(tbRadius>Text); Circle cl = new Circle(r);tbArea.Text = cl .getArea().ToString("F2M ); tbPeri.Text = c 1 .getCircumference().ToString("F2"); }class Circle {private double radius; public Circle(double r) {radius = r; }public double getArea() {return Math.PI * radius * radius; }public double getCircumference() {return 2 * Math.PI * radius;〃用面向对彖的思想实现Windows 应用程序,用八输入圆的半径,点击计算按钮能输出圆的面积和 周长。
五次上机内容及要求
数字图像处理上机要求1.请同学们在上机前将U盘,相关参考书(matlab语言书,课本或其他参考书或C语言书或VC++书)带上,上机时把所用图片拷上,并将每次上机程序提前写好,在机房调试;2.五次上机程序最终以电子版上交(班长最后一次上机汇总,每人以姓名学号文件夹命名)。
程序不可拷贝别人的,否则以零分计。
3.请同学们总结编程过程易出错的地方,并把解决措施写上,并在五次上机结束时提交思考题答案(纸板)。
4.若用C语言或VC++实现,用matlab的,有界面设计的等可适当加分。
实验1图像的基本操作实验目的:熟悉matlab环境,学会图像的读,写,显示,会编写函数;实验内容:1.熟悉matlab环境或C语言环境。
总结matlab能支持的图像类型。
2.学会图像的读,写,显示,将指定图像Lena.bmp和Lena.dat图像的第13-15行第71-100列的数据显示在屏幕上。
3.试着把Lena.bmp图像的右上角四分之一的数据变为0,并将结果写入新图像Lenacrop.bmp。
4.学会使用help命令。
熟悉常见的图像处理的函数。
5.在matlab中读一幅原始灰度图,并给它加一定噪声,计算加噪后的图像和加噪前图像的PSNR值(或下述另外两个值),编写相应的子函数,并会调用。
改变噪声强度,观察PSNR值的变化,体会该值表现的物理含义。
思考题(1)matlab 和c 语言编程有哪些区别?(2)用matlab 编写函数时,有哪些注意事项?怎样检验自己编写函数的正确性?谈谈你的看法。
实验2 图像变换及直方图均衡实验内容:理解图像变换及其在图像压缩中的应用;掌握直方图及直方图均衡的实现方法。
实验内容:1. 在matlab 环境中,进行图像的离散余弦变换和离散余弦逆变换,初步理解DCT 变换在压缩编码中的应用。
减少DCT 系数,观察重建信号和误差信号。
具体步骤: (1) MATLAB COMMAND 窗口,输入Demo,并执行。
129750454899531250CA上机指导书(2012)
《C语言程序设计A》实验指导书张吴波编史旅华审计算机实验教学示范中心2012年2月目录上机实验要求 (1)实验一熟悉C语言的运行环境 (2)一、实验目的 (2)二、实验要求 (2)三、实验内容 (2)实验二简单程序设计 (8)一、实验目的 (8)二、实验要求 (8)三、预习内容 (8)四、实验内容 (10)五、附加题 (11)实验三选择程序设计 (12)一、实验目的 (12)二、实验要求 (12)三、预习内容 (12)四、实验内容 (14)五、附加题 (15)实验四循环程序设计 (16)一、实验目的 (16)二、实验要求 (16)三、预习内容 (16)四、实验内容 (18)五、附加题 (20)实验五数组程序设计 (21)一、实验目的 (21)二、实验要求 (21)三、预习内容 (21)四、实验内容 (23)五、附加题 (25)实验六函数程序设计 (26)一、实验目的 (26)二、实验要求 (26)三、预习内容 (26)四、实验内容 (28)五、附加题 (30)实验七指针程序设计 (31)一、实验目的 (31)二、实验要求 (31)三、预习内容 (31)四、实验内容 (33)五、附加题 (35)实验八结构体程序设计 (36)一、实验目的 (36)二、实验要求 (36)三、预习内容 (36)四、实验内容 (38)五、附加题 (40)实验九文件程序设计 (41)一、实验目的 (41)二、实验要求 (41)三、预习内容 (41)四、实验内容 (43)五、附加题 (45)实验十综合程序设计实验 (46)一、实验目的 (46)二、实验要求 (46)三、实验内容 (46)实验十一综合程序设计实验 (47)一、实验目的 (47)二、实验要求 (47)三、实验内容 (47)VC6.0调试程序 (48)VC6.0编译常见错误 (51)第一部分编译错误 (51)第二部分链接错误 (53)上机实验要求上机实验一般经历上机前的准备(预习并且编程)、上机调试运行和实验后的总结三个步骤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; }。