问答题试题三(15分)阅读以下说明和流程图,从供选择的答案中选出应填入流程图(n)处的字句写在答题纸的对应栏内。[说明]一个印刷电路板的布线区域可分成n×m个方格,如图3-1(a)所示,现在需要确定电路板中给定的两个方格的中心点之间的最短布线方案。电路只能沿水平或垂直方向布线,如图3-1(b)中虚线所示。为了避免线路相交,应将已布过线的方格作封锁标记,其他线路不允许穿过被封锁的方格。[图3-1]设给定印刷电路板的起始方格x与目的方格y尚未布线,求这两个方格间最短布线方案的基本思路是:从起始方格x开始,先考查距离起始方格距离为1的可达方格并用一个路径长度值标记,然后依次考查距离为2、3、...的可达方格,直到距离为k的某一个可达方格就是目标方格y时为止,或者由于不存在从x到y的布线方案而终止。布线区域中的每一个方格与其相邻的上、下、左、右四个方格之间的距离为1,依次沿下、右、上、左这四个方向考查,并用一个队列记录可达方格的位置。表3-1给出了沿这四个方向前进1步时相对于当前方格的相对偏移量。[表3-1]例如,设印刷电路板的布线区域可划分为一个6×8的方格阵列,如图3-2(a)所示,其中阴影表示已封锁方格。从起始方格x(位置[3,2],标记为0)出发,按照下、右、上、左的方向依次考查,所标记的可达方格如图3-2(a)所示,目标方格为y(位置[4,7],标记为10),相应的最短布线路径如图3-2(b)虚线所示。[图3-2]图3-3和图3-4所示的流程图即利用上述思路,在电路板方格阵列中进行标记,图中使用的主要符号如表3-2所示。在图3-4中,设置电路板初始格局即将可布线方格置为数值-1、已布线方格(即封锁方格)置为-9。设置方格阵列“围墙”的目的是省略方格位置的边界条件判定,方法是在四周附加方格,并将其标记为-9(与封锁标记相同)。[表3-2][图3-3][图3-4]●供选择的答案
问答题[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用Java语言实现,能够正确编译通过。[Java代码]
问答题[说明]S公司开办了在线电子商务网站,主要为各注册的商家提供在线商品销售功能。为更好地吸引用户,S公司计划为注册的商家提供商品(Commodity)促销(Promotion)功能。商品的分类(Category)不同,促销的方式和内容也会有所不同。注册商家可发布促销信息。商家首先要在自己所销售的商品的分类中,选择促销涉及的某一具体分类,然后选出该分类的一个或多个商品(一种商品仅属于一种分类),接着制定出一个比较优惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息,并将该促销信息公布在网站上。商家发布促销信息后,网站的注册用户便可通过网站购买促销商品。用户可选择参与某一个促销活动,并选择具体的促销商品,输入购买数量等购买信息。系统生成相应的一份促销订单(POrder)。只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付该促销订单(即完成支付),就可以优惠的价格完成商品的购买活动,否则该促销订单失效。系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,图1是该系统类图中的一部分;系统的动态行为采用UML序列图表示,图2是发布促销的序列图。
问答题[说明]
①定义私有数据成员code、english分别用于表示考生的编号、英语成绩,它们都是int型的数据。
②完成成员函数void Student::inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下:
输入编号:
英语成绩:
计算机成绩:
③利用已实现的类Student的成员函数,完成函数void firstname(Student *A[],int uum)的定义,该函数根据考生信息A[],输出num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。
源程序文件test1.cpp清单如下:
#include < iostream. h >
class Student
{{U}}(1) {{/U}}
int computer;
int total;
public
void getinformation( );
void computesum( );
int getcode( );
int gettotalscore( );
~Student( );
};
void Student: :getinformation( )
{
{{U}} (2) {{/U}}
cout <<"英语成绩:";
cin> >english;
cout <<"计算机成绩:";
cin > > computer;
void Student:: computesum ( )
total = english + computer;
cout <<"编号" << code <<"总分:" <<total << endl;
int Student::getcode( )
return code;
}
int Student:: gettotalscore ( )
{
return total;
}
void firstname(Student * A[] ,int num)
{
{{U}} (3) {{/U}}
tempsum = ( * A[0] ). gettotalscore( );
for( int i=1; i <num; i++)
{
if ( ( ( * A[i] ). gettotalscore( ) ) > tempsum)
{
tempcode = ( * A[i] ). getcode( );
tempsum = ( * A[i] ). gettotalscore( );
}
}
cout <<"总分最高者--" << tempcode <<":" << tempsum <<endl;
}
void main( )
{
Student * A[3];
int i,n =3
for(i=0;i<n;i ++)
A[i] = new Student;
A[i] -> getinformation( )
for(i=0;i<n;i ++)
{
A[i] -> computesum( )
firstname ( A,3 );
}
问答题[说明]下列最短路径算法的具体流程如下:首先构造一个只含n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达到最小,则应使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出n-1条互不构成回路的权值最小边为止。[算法]/*对图定义一种新的表示方法,以一维数组存放图中所有边,并在构建图的存储结构时将它构造为一个“有序表”。以顺序表MSTree返回生成树上各条边。*/typedefstruct{VertexTypevex1;VertexTypevex2;VRTypeweight;}EdgeType;typedefElemTypeEdgeType;typedefstruct{//有向网的定义VertexTypevexs[MAX_VERTEX_NUM];//顶点信息EdgeTypeedge[MAX_EDGE_NUM];//边的信息intvexnum,arcnum;//图中顶点的数目和边的数目IELGraph;voidMiniSpanTree_Kruskal(ELGraphG,SqListInitSet(F,G.vexnum);//将森林F初始化为N棵树的集合InitList(MSTree,G.vexnum);//初始化生成树为空树i=0;k=1;while(k<{{U}}(1){{/U}}){e=G.edge[i];//取第i条权值最小的边/*函数fix_mfset返回边的顶点所在树的树的根代号,如果边的两个顶点所在树的树根相同,则说明它们已落在同一棵树上。*/ri=fix_mfset(F,LocateVex(e.vex1));r2={{U}}(2){{/U}};//返回两个顶点所在树的树根if(r1{{U}}(3){{/U}}r2){//选定生成树上第k条边if(Listlnsert(MSTree,k,e){{{U}}(4){{/U}};//插入生成树mix_mfset(E,r1,r2);//将两棵树归并为一棵树}{{U}}(5){{/U}};//继续考察下一条权值最小边}DestroySet(F);}}
问答题[说明]面是一个Applet程序,其功能是有2个按钮,分别为First和Second,以及一个Label控件。要求点击First时则能在Label中显示出Command:First,而点击Second时则能显示出Command:Second,要求只能使用重载一次actionPerfonned()方法。程序运行结果如图6所示。importjava.awt.*;importjava.awt.event.*;importjava.applet.*;/*<appletcede=exl_7,classwidth=800height=400></applet>*/publicclassex]_?extendsAppletimplementsActionListenerprivateStringstr="ok";privateLabel|;privateButtonbtn;publicvoidinit()(1)I=newLabel(str);I.reshape(10,10,150,30);add(I);(2)btn.reshape(10,50,60,20);(3)add(btn);btn=newButton("Second");btn.reshape(10,100,60,20);(4)btn,addActionListener(this);add(btn);publicvoidactionPerformed(ActionEventae)str="Command:"+ae.getActionCommand()(5)ex1_7,html<HTML><HEAD><TITLE>ext_7</TITLE></HEAD><BODY><appletcode="ext?.class"width=800height=400></applet></BODY></HTML>
问答题[问题1]
数据流图4-1(住宅安全系统顶层图)中的A和B分别是什么?
[数据流图4-2]
问答题阅读以下说明和表,回答问题1~3问题。
[说明] 在学校中,存在以下关系:
(a)一个系有若干学生,但一个学生只能在一个系;
(b)一个学生可以选修多门课程,每门课程有若干学生选修;
(c)每个学生所学的每门课程都有一个成绩。
该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。
(a)表一:学生信息表STUDENT(STID,NAME,AGE,DEPTNO),其中,STID表示学号,NAME表示学生姓名,AGE表示年龄,DEPTNO表示系号。
(b)表二:课程表COURSE(COID,NAME),其中,COID表示课程号,NAME表示课程名。
(c)表三:成绩表SCORE(SCID,COID,GRADE),其中,SCID表示学号,COID表示课程号,
GRADE表示成绩,成绩为空时表示这学期正在上的课程。
问答题阅读以下说明,回答问题1至问题3,将答案写在答卷的对应栏内。
【说明】 下面是某ERP系统中零件供应模块的3个关系模式。
供应商:S(SNO,SNAME,CITY,STATUS)
零件:P(PNO,PNAME,WEIGHT,COLOR,CITY) 供应单:SP(SNO,PNO,PTY,SP
Date) 属性说明:
SNO—供应商编号,SNAME—供应商名称,CITY—地址,STATUS—供应商状态
PNO—零件编号,PNAME—零件名称,WEIGHT—零件重量,COLOR—零件颜色, CITY—地址,PTY—数量,SP
Date—订单日期 问题: 用SQL语句完成以下操作。
问答题阅读下列说明和图,回答问题。[说明]某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图1所示的顶层数据流图和图2所示的0层数据流图。图1顶层数据流图图20层数据流图
问答题[说明]考务处理系统具有如下功能:(1)对考生送来的报名单进行检查。(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷。(3)对阅卷站送来的成绩清单进行检查,并根据考试中心制订的合格标准审定合格者。(4)制作考生通知单送给考生。(5)进行成绩分类统计(按地区、年龄、文化程度、职业、考试级别等分类)和试题难度分析,产生统计分析表。以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定项层数据流图是正确的。图1是顶层数据流图,图2是第0层数据流图,图3是第1层数据流图,其中(A)是加工1的子图,(B)是加工2的子图。图1图2图3[数据字典]报名单=地区+序号+姓名+性别+年龄+文化程度+职业+考试级别+通信地址正式报名单=报名单+准考证号准考证=地区+序号+姓名+准考证号+考试级别考生名单=准考证号+考试级别统计分析表=分类统计表+难度分析表考生通知单=考试级别+准考证号+姓名+合格标志+通信地址
问答题问题:2.3 在租期内,公寓内设施如出现问题,租客可在系统中进行故障登记,填写故障描述,每项故障由系统自动生成唯一的故障编号,由公司派维修工进行故障维修,系统需记录每次维修的维修日期和维修内容。请根据此需求,对图2-1进行补充,并将所补充的ER图内容转换为一个关系模式,请给出该关系模式。
问答题[说明]对于数学上一个猜想:任何自然数平方的36倍等于两对孪生素数的和。初始的情形如下:12×36=(5+7)+(11+13)22×36=(29+31)+(41+43)32×36=(11+13)+(149+151)再往下,N取4,5,6,时,只要N不太大,也都可以找到N(上标)2×36等于两对孪生素数的和。但是当N是一个任意的正整数时,证明N2×36总是等于两对孪生素数的和,这还是一个目前尚未解决的问题。甚至当考察的数较大时,找出一组符合条件的两对孪生素数都是计算量相当大的工作。每尝试一次,都要作4次是否是素数的判断,要作许多次的尝试,才可能找到一组解。下面流程图设计了一种优化算法来对这个猜想进行验证。仔细阅读流程图8-11,完成程序部分。图8-11[程序部分]main()intt,i,j,prime_index;is_prime:longn,p,p1,p2,p3,p4,s,s1;longprimes[16000];for(n=1;n<98;++n)t=0;s=n*n*36;prime_index=2;primes[0]=2;primes[1]=3;for(p=5:p<=s/2;p=p+2)is_prime=1;for(i=1;(1)++i)if(p%primes[i]==0)is_prime=0;if(is_prime)(2)for(i=1;(3)++i)(4)if(p2=p1+2)s1=s-(p1+p2)p3=sl/2-1;p4=p3+2:for(j=0;j<=prime_index-1;++j)if((5))printf("%d*%d*36=(%d+%d)+(%d+%d)/n",/n,n,p1,p2,p3,p4);++t;if(t!=0)printf("%d/n",t)elseprintf("%d*%d*36=nosolution/n",n,n);
问答题试题六(共15分) 阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如下图所示。 采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。 【C++代码】 classMatrix{//各种格式的文件最终都被转化为像素矩阵 //此处代码省略 }; classImageImp{ public: virtualvoiddoPaint(Matrixm)=0;//显示像素矩阵m }; classWinImp:publicImageImp{ public: voiddoPaint(Matrixm){/*调用windows系统的绘制函数绘制像素矩阵*/} }; classLinuxImp:publicImageImp{ public: voiddoPaint(Matrixm){/*调用Linux系统的绘制函数绘制像素矩阵*/} }; classImage{ public: voidsetImp(ImageImp*imp){________=imp;} virtualvoidparseFile(stringfileName)=0; protected: ________*imp; }; classBMP:publicImage{ public: voidparseFile(stringfileName){ //此处解析BMP文件并获得一个像素矩阵对象m ________;//显示像素矩阵m } }; classGIF:publicImage{ //此处代码省略 }; classJPEG:publicImage{ //此处代码省略 }; voidmain(){ //在windows操作系统上查看demo.bmp图像文件 Image*image1=________; ImageImp*imageImp1=________; ________; image1->parseFile("demo.bmp"); } 现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix,若采用桥接设计模式则至少需要设计________个类。
问答题【说明】下面的程序先构造Point类,再顺序构造Ball类。由于在类Ball中不能直接存取类Point中的xCoordinate及yCoordinate属性值,Ball中的toString方法调用Point类中的toString方法输出中心点的值。在MovingBall类的toString方法中,super.toString调用父类Ball的toString方法输出类Ball中声明的属性值。 public class Point private double xCoordinate; private double yCoordinate; public Point 0 public Point(ouble x, double y) xCoordinate = x; yCoordinate = y; public String toString() return "( + Double.toString(Coordinate)+ "," + Double.toString(Coordinate) + "); //other methods public class Ball (1) ; //中心点 private double radius; //半径 private String colour; ///颜色 public Ball() public Ball(double xValue, double yValue, double r)// 具有中心点及半径的构造方法 center= (2) ;//调用类Point 中的构造方法 radius = r; public Ball(double xValue, double yValue, double r, String c) // 具有中心点、半径及颜色的构造方法 (3) ;//调用3个参数的构造方法 colour = c; public String toString() return "A ball with center" + center, toString() + ", radius" + Double.toString(radius) + ", colour" + colour; //other methods public class MovingBall. (4) private double speed; public MovingBall() public MovingBall(double xValue, double yValue, double r, String e, double s) (5) ;// 调用父类Ball中具有4个参数的构造方法 speed = s; public String toString( ) return super, toString( ) + ", speed "+ Double.toString(speed); //other methods public class Tester public static void main(String args[]) MovingBall mb = new MovingBall(10,20,40,"green",25); System.out.println(mb);
问答题【说明】“进货库存信息管理系统”是ERP系统中一个重要的子系统,下面是该系统的一个简化了的主结构功能图。其中一些各系统功能描述如下:[进货信息管理系统]①进货单据建立文件维护管理工作。②进货查询统计管理工作。③进货过账工作。在进货管理系统中,要处理“成本计算和费用摊消”的问题。处理方式如下所述。进口货物的成本计算:(1)先算出本次进货货物的原币总成本金额。(2)再依照当时原币(如:美金US$,英镑、港币HK$等)的汇率乘以本次进货原币总成本金额,算出本次进货台币总成本金额。(3)再计算出本次进货所产生的全部费用总金额(包含:关税、报关费、运费、其他费用等费用)。(4)将“本次进货台币总成本金额”加上“全部费用总金额”算出本次实际的“总成本金额”。(5)再利用下述公式算出各单项货物的“单项货物的成本金额”。 (6)最后一个步骤,再将“单项货物的成本金额”除以单项货物本次进货的数量,即可算出“单一货物本次进货实际的成本金额”。1.【问题1】将此“进口货物的成本计算方式”利用UML的类图米设计结构,要求使用到抽象和继承。写出类1和类2名称(中文、英文皆可,但要说明其主要功能)【问题2】说明类图都包括什么。【问题3】解释依赖与泛化,请举例。
问答题试题七(15分,每空3分)阅读以下说明和JAVA代码,将应填入(n)处的字句写在答题纸的对应栏内。[说明]类Queue表示队列,类中的方法如下表所示。类Node表示队列中的元素;类EmptyQueueException给出了队列操作中的异常处理操作。
问答题
阅读下列说明和图,回答问题1至问题2, [说明]
移动电话是传统固定式电话的延伸,通过无线电网络可以与千里之外的朋友沟通而不受电话线的束缚。现在的移动电话功能更全面,除了作为电话使用外,还可以发送短信,可以管理电话簿,可以下载铃声、图案。
手机由键盘、显示屏以及移动通信设备组成,移动通信设备负责发送和接收信号,与基站进行连线。打电话的流程如下:
(1) 用户拨电话号码,每按下一个数字键显示屏上显示相应数字; (2)
按OK键进行连线,显示屏上显示“连线中…”,请求连接基站,基站通过移动电话网络连接到对方手机,若有误则返回相关信息; (3)
接通后,显示屏显示“连线成功”; (4)
打电话结束后,按Cancel送出断线信号,通知移动电话基站断线,基站切断连接,显示屏显示“断线成功”。
该系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图3-1是该系统的用例图,图3-2是该系统的类图,图3-3描述了打电话(包括断开)的序列图。
[图3-1]
[图3-2] [图3-3]
问答题[说明]现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计,所得类图如下图所示。采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。[C++程序]classMatrix{//各种格式的文件最终都被转化为像素矩阵//此处代码省略};classImageImp{public:virtualvoiddoPaint(Matrixm)=0;//显示像素矩阵m};classWinimp:publicImageImp{public:voiddoPaint(Matrixm){/*调用Windows系统的绘制函数绘制像素矩阵*/}};classLinuxImp:publicImageImp{public:voiddoPaint(Matrixm){/*调用Linux系统的绘制函数绘制像素矩阵*/}};classImage{public:voidsetImp(ImageImp*imp){______=imp;}virtualvoidparseFile(stringfileName)=0;protected:______*imp;};classBMP:publicImage{public:voidparseFile(StringfileName){//此处解析BMP文件并获得一个像素矩阵对象m______;//显示像素矩阵m}};classGIF:publicImage{//此处代码省略};classJPEG:publicImage{//此处代码省略};voidmain(){//在Windows操作系统上查看demo.bmp图像文件Image*image1=______;ImageImp*imageImp1=______;______;image1→parseFile("demo.bmp");}现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix,若采用桥接设计模式,则至少需要设计______个类。
问答题[说明]在一些财务软件中,经常需要将阿拉伯数字的账目转化为汉语习惯中的金额计数方法,例如:“3.45”转化为“叁元四角五分”;“3.4”转化为“叁元四角”;“3.40”转化为“叁元四角零分”;“3.456”转化为“叁元四角五分”;“345.00”转化为“叁百四十五元零角零分”;“345”转化为“叁百四十五元”;以下VisualBasic代码实现了小写金额转换为大写金额。界面如图10-9所示。结合实际例子说明,仔细阅读下面代码,将{{U}}(n){{/U}}代码补充完整。[代码7-1]BeginVB.FormForm1Caption="小写金额转换为大写金额"//...窗体描述(略)BeginVB.CommandButtonCommand1Caption="退出"//...窗体描述(略)EndBeginVB.TextBoxText2//...窗体描述(略)EndBeginVB.TextBoxText1Enabled=0'False//…窗体描述(略)EndBeginVB.Labe1Labe12Caption="转换为大写金额"//...窗体描述(略)EndBeginVB.Labe1Labe11Caphon="请输入数字"//...窗体描述(略)EndEnd[代码7-2]PrivateFunctionsetdata(numAsInteger)AsString'数字转换SelectCaSenumCase0setdata="零"Case1Setdata="壹"Case2Setdata="贰"Case3Setdata="叁"Case4Setdata="肆"Case5Setdata="伍"Case6Setdata="陆"Case7Setdata="柒"Case8Setdata="捌"Case9Setdata="玖"EndSelectEndFunctionPrivateFunctionchang(aaaAsInteger)AsString'位数转换SelectCaSeaaaCase1chang=""Case2chang="十"Case3chang="百"Case4chang="千"Case5chang="万"Case6chang="十"Case7chang="百"Case8chang="千"Case9chang="亿"Case10chang="十"EndSelectEndFunction[代码7-3]PrivateSubText2_Change()'小写转大写DimiAsIntegerDimjAsIntegerDimmyintAsIntegerDimmyint1AsIntegerDimmydoubAsDoubleDimmystrAsStringDimmystr1AsStringDimmystr2AsStringDimmystr3AsStringDimmystr4AsStringDimmoneyAsLongDimmoney1AsIntegerDimmoney2AsLongmystr=Text2.Textmyint=InStr(mystr,".")Ifmyint=0Thenmystr=Text2.TextElsemystr3=Right(Text2.Text,Len(Text2.Text)-myint)Ifmystr3<>""Then'转换小数位mystr4=Left(mystr3,1)mystr3=Right(mystr3,Len(mystr3)-1)Ifmystr4<>"0"Then(1)EndIfIfmystr3<>""Thenmystr4=Left(mystr3,1)(2)EndIfEndIfmystr=Left(Text2.Text,myint-1)EndIfj=Len(mystr)Fori=1ToLen(mystr,i)money2=Left(mystr,i)money1=Right(money2,1)Ifmoney1=0ThenIfj=5Then(3)Else(4)EndIfElse(5)EndIfj=j-1NextiText1.Text=mystr1&"元"&mystr2'显示大写Endsub
