计算数学表达式程序设计实训报告
- 格式:docx
- 大小:237.25 KB
- 文档页数:8
X X X X X大学《程序设计方法学》实验报告实验一:算术表达式求值学院:X X X专业:计算机科学与技术姓名:X X X学号:XXXXX2010年11 月18 日目录1.前言 (1)2.概要设计 (1)2.1 数据结构设计 (1)2.2 算法设计 (1)2.3 ADT描述 (2)2.4 功能模块分析 (3)3.详细设计 (3)3.1 数据存储结构设计 (3)3.2主要算法流程图(或算法伪代码) (4)4.测试结果 (7)5.参考文献 (8)附录--程序源代码 (8)1.前言在计算机中,算术表达式由常量、变量、运算符和括号组成。
由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。
因而在程序设计时,借助栈实现。
算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。
为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。
算法输出:表达式运算结果。
算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。
在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。
2.概要设计2.1 数据结构设计任何一个表达式都是由操作符,运算符和界限符组成的。
我们分别用顺序栈来寄存表达式的操作数和运算符。
栈是限定于紧仅在表尾进行插入或删除操作的线性表。
顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置,base为栈底指针,在顺序栈中,它始终指向栈底,即top=base可作为栈空的标记,每当插入新的栈顶元素时,指针top增1,删除栈顶元素时,指针top减1。
2.2 算法设计为了实现算符优先算法。
可以使用两个工作栈。
一个称为OPTR,用以寄存运算符,另一个称做OPND,用以寄存操作数或运算结果。
1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;2.依次读入表达式,若是操作符即进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为”#”)。
算术表达式求值实验报告前言算术表达式求值是计算机科学中比较基础的内容,同时也是很实用的技能,因为有时候我们需要用程序来计算一些复杂的数学运算。
在本次实验中,我们将对算术表达式的求值进行深入研究,并实际编写程序来实现这一功能。
实验原理算术表达式通常由数字、运算符和括号组成,我们需要将其转换为计算机能够直接执行的形式。
常见的算术表达式求值方法有两种:1.中缀表达式求值中缀表达式就是我们平时所熟悉的数学表达式,如2+3*4-5/2。
中缀表达式求值需要遵循一定的运算符优先级和括号的影响,可以通过栈来实现。
首先,我们需要将中缀表达式转换为后缀表达式,即将运算符放在数字后面。
具体的转换方法可以使用栈来实现。
遍历中缀表达式,遇到数字就直接输出,遇到运算符就将其与栈顶运算符进行比较,如果优先级高于栈顶运算符,则将其入栈,否则将栈顶运算符弹出并输出,直到遇到优先级小于等于栈顶运算符或者栈顶为空时,将运算符入栈。
最后将栈中的运算符依次弹出并输出即可。
转换为后缀表达式之后,我们可以通过再次遍历后缀表达式来求值。
遇到数字将其入栈,遇到运算符则弹出栈顶两个数字进行运算,并将结果入栈。
遍历完毕后,栈中剩下的数字就是最终结果。
2.前缀表达式求值前缀表达式就是将运算符放在数字前面的表达式,如:- + * 3 4 5 6。
前缀表达式求值与后缀表达式求值类似,不同之处在于需要从右至左遍历表达式,并将运算符与栈顶数字进行操作。
实验步骤在本次实验中,我们将通过 Python 语言来实现算术表达式求值功能。
具体步骤如下:1. 输入待求值的算术表达式。
2. 对算术表达式进行转换,得到后缀表达式或前缀表达式。
3. 遍历后缀表达式或前缀表达式,求出最终结果。
4. 输出结果。
实验结果我们在 Python 中编写了求解算术表达式的程序,以下是一些样例输入和输出:1. 输入:2+3*4 输出:142. 输入:(2+3)*4 输出:203. 输入:-+*3456 输出:-9通过多组测试,我们可以发现程序能够正确地求解各种算术表达式,包括包含括号和负数的表达式。
数据结构实验实验项目三栈和队列的应用计算机科学与技术系0902班组长:雷耀阳组员:柴瑞东、李志鹏、张玲春日期:实验报告实验类型__综合设计__实验室软件实验室1 1.实验题目求一个数学表达式的值:用户输入一个包含正整数、括号和四则运算符(“+”、“—”、“*”、“/”)的算术表达式,计算其结果。
2.需求分析首先置操作数栈为空栈,表达式起始符“#”为运算符栈底元素;依次读入表达式中每个字符,若是操数则进操作数栈,若是操作符则和操作符栈顶的运算符进行比较优先权后作相应的操作,直到整个表达式求值完毕(即操作符栈顶元素和当前读入的字符均为“#”)3.概要设计结点结构类型描述如下typedef struct{char *base,*top;int stacksize;}sqstack;函数关系:4.详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。
对主程序和其他模块也都需要写出伪码算法。
#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <process.h>#include <string.h>#define N 100double numStack[N]={0};int numTop;char opStack[N];int opTop;int op(char ch){if(ch=='+'||ch=='-') return 2;if(ch=='*'||ch=='/') return 3;if(ch=='(') return -1;return 0;}double result(double num1,char op,double num2) {if(op=='+') return num1+num2;if(op=='-') return num1-num2;if(op=='*') return num1*num2;if(op=='/') return num1/num2;return 0;}int compute(char str[]){double num=0;int i=0,j=1,k=1;int Flag=0;numTop=opTop=0;while(str[i]!='\0'||opTop>0){if(str[i]>='0'&&str[i]<='9')if(Flag==0)num=num*10+str[i]-'0';else{num+=(str[i]-'0')/(j*10.0);j*=10;}elseif(str[i]=='.')Flag=1;elseif( k==1&&str[i]=='-'&&(i==0||op(str[i-1])) )k=-1;else{if(i>0&&!op(str[i-1])&&str[i]!='('&&str[i-1]!=')'){numStack[numTop++]=num*k;num=0; j=1; Flag=0; k=1;}if(opTop==0||str[i]=='(')opStack[opTop++]=str[i];elseif(str[i]==')'){while(opTop>0&&opStack[--opTop]!='('){numStack[numTop-2]=result(numStack[numTop-2],opStack[opTop],numStack[numTop-1]); numTop--;}if(opStack[opTop]!='(') return 0;}else{if(str[i]=='\0'&&numTop==0) return 0;while(opTop>0&&op(str[i])<=op(opStack[opTop-1])){numStack[numTop-2]=result(numStack[numTop-2],opStack[--opTop],numStack[numTop-1]);numTop--;}if(str[i]!='\0')opStack[opTop++]=str[i];}}if(str[i]!='\0')i++;}if(numTop!=1||opTop!=0)return 0;return 1;}void face(){system("cls");printf("__________________________________________________________________\n"); printf(" Save number(S) | Read number(R) | Clear(C) | Equal(E) | Quit(Q) \n"); printf("------------------------------------------------------------------\n"); }main(){int i=0,j=0,k;char str[N]="\0";char num[N]="\0";char save[N]="\0";char ch;double temp;unsigned long temp2;face();printf("input an expression,press key 'E' to compute\n");ch=getch();while( 1 ){if(ch=='.'||ch==')'||op(ch)||ch>='0'&&ch<='9')str[i++]=ch;str[i]='\0';face();printf("input an expression,press key 'E' to compute\n"); printf("%s",str);if( ch=='-'&&(i==1||op(str[i-2]))||ch>='0'&&ch<='9' ) {num[j++]=ch;num[j]='\0';}else j=0;}if(ch=='S'||ch=='s')if(strlen(num)){face();printf("%s has been saved\n",strcpy(save,num));printf("input an expression,press key 'E' to compute\n"); printf("%s",str);}else{face();printf("there is no number to save!\n");printf("input an expression,press key 'E' to compute\n"); printf("%s",str);}if(ch=='R'||ch=='r')if(strlen(save)){face();printf("input an expression,press key 'E' to compute\n"); printf("%s",strcat(str,save));i+=strlen(save);}if(ch=='C'||ch=='c')if(strlen(str))str[--i]='\0';face();printf("input an expression,press key 'E' to compute\n"); printf("%s",str);}if(ch=='E'||ch=='e'){if(compute(str)){printf("\n=%g\n",numStack[0]);j=0; temp=numStack[0];if(temp<0){temp=-temp;num[j++]='-';num[j]='\0';}temp2=(unsigned long)temp;k=1;while(temp2/k>=10)k*=10;while(k){num[j++]=temp2/k+'0';num[j]='\0';temp2=temp2%k;k/=10;}temp=temp-(int)temp;if(temp!=0){num[j++]='.';num[j]='\0';temp+=0.0000005;}for(k=6;k>0;k--){if(temp==0) break;temp*=10;num[j++]=(int)temp+'0';num[j]='\0';temp=temp-(int)temp;}}else{face();printf("input an expression,press key 'E' to compute\n"); printf("%s",str);printf("\nwrong expression!");}i=0; j=0; str[0]='\0';}if(ch=='Q'||ch=='q'){printf("\nare you sure to quit?(Y/N)\n");ch=getch();if(ch=='Y'||ch=='y') break;else{face();printf("input an expression,press key 'E' to compute\n"); printf("%s",str);}}ch=getch();}}#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <process.h>#include <string.h>#define N 100double numStack[N]={0};int numTop;char opStack[N];int opTop;int op(char ch){if(ch=='+'||ch=='-') return 2;if(ch=='*'||ch=='/') return 3;if(ch=='(') return -1;return 0;}double result(double num1,char op,double num2) {if(op=='+') return num1+num2;if(op=='-') return num1-num2;if(op=='*') return num1*num2;if(op=='/') return num1/num2;return 0;}int compute(char str[]){double num=0;int i=0,j=1,k=1;int Flag=0;numTop=opTop=0;while(str[i]!='\0'||opTop>0){if(str[i]>='0'&&str[i]<='9')if(Flag==0)num=num*10+str[i]-'0';else{num+=(str[i]-'0')/(j*10.0);j*=10;}elseif(str[i]=='.')Flag=1;elseif( k==1&&str[i]=='-'&&(i==0||op(str[i-1])) )k=-1;else{if(i>0&&!op(str[i-1])&&str[i]!='('&&str[i-1]!=')'){numStack[numTop++]=num*k;num=0; j=1; Flag=0; k=1;}if(opTop==0||str[i]=='(')opStack[opTop++]=str[i];elseif(str[i]==')'){while(opTop>0&&opStack[--opTop]!='('){numStack[numTop-2]=result(numStack[numTop-2],opStack[opTop],numStack[numTop-1]); numTop--;}if(opStack[opTop]!='(') return 0;}else{if(str[i]=='\0'&&numTop==0) return 0;while(opTop>0&&op(str[i])<=op(opStack[opTop-1])){numStack[numTop-2]=result(numStack[numTop-2],opStack[--opTop],numStack[numTop-1]); numTop--;}if(str[i]!='\0')opStack[opTop++]=str[i];}}if(str[i]!='\0')i++;}if(numTop!=1||opTop!=0)return 0;return 1;}void face(){system("cls");printf("__________________________________________________________________\n"); printf(" Save number(S) | Read number(R) | Clear(C) | Equal(E) | Quit(Q) \n"); printf("------------------------------------------------------------------\n"); }main(){int i=0,j=0,k;char str[N]="\0";char num[N]="\0";char save[N]="\0";char ch;double temp;unsigned long temp2;face();printf("input an expression,press key 'E' to compute\n");ch=getch();while( 1 ){if(ch=='.'||ch==')'||op(ch)||ch>='0'&&ch<='9'){str[i++]=ch;str[i]='\0';face();printf("%s",str);if( ch=='-'&&(i==1||op(str[i-2]))||ch>='0'&&ch<='9' ) {num[j++]=ch;num[j]='\0';}else j=0;}if(ch=='S'||ch=='s')if(strlen(num)){face();printf("%s has been saved\n",strcpy(save,num));printf("input an expression,press key 'E' to compute\n"); printf("%s",str);}else{face();printf("there is no number to save!\n");printf("input an expression,press key 'E' to compute\n"); printf("%s",str);}if(ch=='R'||ch=='r')if(strlen(save)){face();printf("input an expression,press key 'E' to compute\n"); printf("%s",strcat(str,save));i+=strlen(save);}if(ch=='C'||ch=='c'){if(strlen(str))str[--i]='\0';face();printf("%s",str);}if(ch=='E'||ch=='e'){if(compute(str)){printf("\n=%g\n",numStack[0]); j=0; temp=numStack[0];if(temp<0){temp=-temp;num[j++]='-';num[j]='\0';}temp2=(unsigned long)temp;k=1;while(temp2/k>=10)k*=10;while(k){num[j++]=temp2/k+'0';num[j]='\0';temp2=temp2%k;k/=10;}temp=temp-(int)temp;if(temp!=0){num[j++]='.';num[j]='\0';temp+=0.0000005;}for(k=6;k>0;k--){if(temp==0) break;temp*=10;num[j++]=(int)temp+'0';num[j]='\0';temp=temp-(int)temp;}}else{face();printf("input an expression,press key 'E' to compute\n");printf("%s",str);printf("\nwrong expression!");}i=0; j=0; str[0]='\0';}if(ch=='Q'||ch=='q'){printf("\nare you sure to quit?(Y/N)\n");ch=getch();if(ch=='Y'||ch=='y') break;else{face();printf("input an expression,press key 'E' to compute\n");printf("%s",str);}}ch=getch();}}5.调试分析1.实验过程中,发现错误后,经过看书,不断调试后,成功。
南昌航空大学实验报告年月日课程名称:汇编语言程序设计实验名称:数学表达式的计算班级:学生姓名:学号:指导教师评定:签名:一.实验目的1.熟悉汇编语言源程序的组织;2.掌握利用顺序结构编写简单程序的方法;3.进一步熟悉程序的调试过程,对自己编写的程序进行调试。
二.实验内容1.完成以下内容1)设W、X、Y、Z均为16位带符号数。
2)要求完成计算表达式(W-(X*Y+Z-220))/X。
3)将表达式的商和余数存入数据区RESULT单元开始的区域中。
提示及要求:1)W、X、Y、Z可以利用DW或者WORD进行定义,数据大小根据自己需要进行设置2)RESULT单元要定义的足够大可以存放运算结果3)注意使用带符号的算术运算指令4)判断并理解计算机中除法的溢出。
5)提前写好预习报告,对报告中的源代码进行上机实现,记录实验结果。
2.实现自然数求和程序提示:1)利用等差数列求和公式计算2)提前写好预习报告,对报告中的源代码进行上机实现,记录实验结果。
三.实验过程和程序过程:鼠标双击启动win32.bat。
Masm编译环境启动后是一个控制台。
输入命令:make32 shiyan输入命令:shiyan程序:1.DA TA SEGMENTW DW 100X DW 5Y DW 2Z DW 200DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DA TASMOV DS,AXMOV AX,XIMUL YADD AX,ZSUB AX,220MOV BX,WSUB BX,AXMOV AX,BXIDIV XMOV AX,4C00HINT 21HCODE ENDSEND START2.四.实验结果和分析1结果:W 100X 5Y 2Z 200商是22 ,余数是0。
2结果:N为100求和结果为5050。
五.实验体会这次实验主要是学会了如何运用数值表达式的计算,熟悉了汇编语言源程序的组织,掌握利用顺序结构编写简单程序的方法,进一步熟悉程序的调试过程,对自己编写的程序进行调试。
实验目的:1. 理解并掌握基本的算术运算编程方法。
2. 培养编程解决问题的能力。
3. 熟悉Python编程语言的基本语法和常用库。
实验环境:1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm实验内容:本次实验主要围绕基本的算术运算展开,包括加法、减法、乘法、除法、求余等运算。
以下为实验的具体步骤和结果。
一、实验步骤1. 导入必要的库```pythonimport math```2. 定义一个函数,用于执行加法运算```pythondef add(a, b):return a + b```3. 定义一个函数,用于执行减法运算```pythondef subtract(a, b):return a - b```4. 定义一个函数,用于执行乘法运算```pythondef multiply(a, b):return a b```5. 定义一个函数,用于执行除法运算```pythondef divide(a, b):if b != 0:return a / belse:return "Error: Division by zero" ```6. 定义一个函数,用于执行求余运算```pythondef modulo(a, b):return a % b```7. 测试上述函数```pythonprint("加法运算:", add(3, 4))print("减法运算:", subtract(3, 4))print("乘法运算:", multiply(3, 4))print("除法运算:", divide(3, 4))print("求余运算:", modulo(3, 4))```二、实验结果1. 加法运算:72. 减法运算:-13. 乘法运算:124. 除法运算:0.755. 求余运算:3三、实验总结1. 通过本次实验,我们学习了Python编程语言的基本语法和常用库,掌握了基本的算术运算编程方法。
《数据结构与数据库》实验报告实验题目算术表达式求值学院:化学与材料科学学院专业班级:09级材料科学与工程系PB0920603姓名:李维谷学ﻩﻩ号:PB09206285邮ﻩ箱:指导教师:贾伯琪实验时间:2010年10月10日一、需要分析问题描述:表达式计算就是实现程序设计语言得基本问题之一,它得实现就是栈得应用得一个典型例子.设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈得应用实现对算术表达式进行四则混合运算。
问题分析:在计算机中,算术表达式由常量、变量、运算符与括号组成.由于不同得运算符具有不同得优先级,又要考虑括号,因此,算术表达式得求值不可能严格地从左到右进行。
因而在程序设计时,借助栈实现.设置运算符栈(字符型)与运算数栈(浮点型)辅助分析算符优先关系。
在读入表达式得字符序列得同时完成运算符与运算数得识别处理,然后进行运算数得数值转换在进行四则运算.在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内得栈顶数据变化过程,最后得到运算结果。
算法规定:输入形式:一个算术表达式,由常量、变量、运算符与括号组成(以字符串形式输入)。
为使实验更完善,允许操作数为实数,操作符为(、)、、(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。
输出形式:演示表达式运算得中间结果与整个表达式得最终结果,以浮点型输出。
程序功能:对实数内得加减乘除乘方运算能正确得运算出结果,并能正确对错误输入与无定义得运算报错,能连续测试多组数据。
测试数据:正确输入:12*(3、6/3+4^2—1)#输出结果:194、4无定义运算:12*(3、6/(2^2—4)+1)#输出结果:表达式出错,除数为0,无意义错误输入:12+s#输出结果:ERROR!二、概要设计拟采用两种类型得展分别对操作数与操作符进行操作.程序中将涉及下列两个抽象数据类型:1、设定“操作数”得栈得抽象数据类型定义:ADT SqStack_f{ﻩ数据对象:D={ﻩ数据关系:R1={〈>|,,i=2,…,n}约定端为栈顶,端为栈底。
程序设计实训报告(9篇)【导语】程序设计实训报告怎么写出亮点?整理了9篇优秀的《程序设计实训报告》通用版范文,有规范的开头结尾写法和标准的书写格式。
是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。
【第1篇】程序设计实训报告程序设计实训报告1一,实训目的:加深对可视化编程技术基本学问的理解,把握运用vb开发应用程序的基本方法及基本技巧。
二,实训时间:20xx年10月20xx年11月三,实训方式:上机操作四,实训类容:这次在杨立雄老师的带领下,利用vb开发工具与数据库sql开发一个使用的小型管理信息系统。
我选择了学籍管理系统。
它的功能要求如下:1,学籍信息输入:实现同学基本状况的输入。
包括各个同学的状况,姓名,家庭号码,家庭住址,学号等各个信息。
2,学籍信息管理:本模块实现了信息的修改,删除,查询。
还有个人信息。
把信息统计这个繁琐的工作简洁化,为同学信息的管理方面提高工作效率。
3,学籍信息查询:通过输入学号便可以查询到这个同学的全部信息,包括姓名,性别,诞生年月,班级,入学日期,联系电话,嘉奖和成果表都一目了然,很大的便利了教工们查询同学信息的过程。
4,统计查询:实现查询全班人数,男女生比例等。
五,实训体会:这次实训,感觉既好玩又有些辛苦。
这还是老师担忧我们适应不了所以没教那么多学问,即使这样我们仍学到了比以前上学时更多的学问,而且这些学问有好多都是我们自己去领悟的到的。
我也知道有人比我们更累,所以我自觉得还是挺好的。
经过这次的实训,我真真实切的感受到了计算机在我们生活中工作中的运用,这些软件,程序能让我们提高工作的效率,更直观更便捷切入主题。
这次我们学习的是数据源的原理及应用的各方面学问,由老师带着我们不断操作。
vb能有效的组织,管理和共享数据库信息,能把数据库信息与ado结合在一起,实现数据库信息的共享。
同时,vb概念清楚,简洁易学,使用。
是适合企业管理人员,数据库管理员使用的首选。
程序设计实训报告题目:计算数学表达式程序1、课程设计目的(1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控(2)课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
(3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2、设计题目分析2.1 题目要求:(1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示。
(2)允许在表达式中出现常用的数学函数,如取整、三角函数、倒数、平方根、平方、立方等。
2.2 界面要求:(1)尽量使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。
(2)如果无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户操作。
2.3 设计要求及需求分析设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3、课程设计内容3.1 总体设计:3.2 详细设计:以下是部分类功能的说明:CalFrame //构造新窗体CalPanelL //定义面板容器CalButton//定义按钮3.3 调试与测试:包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;(列出主要问题的出错现象、出错原因、解决方法及效果等)。
主要问题:1.标点符号问题,经常出现漏打分号,忽略中英文标点转换等问题,所以一定要谨慎仔细.2.进制转换的实现及正/余弦计算经常出现问题,结果不正确,经过查阅资料及反复调试,我们终于克服了这一难题.3.界面设计,开始我们的设计不太合理,各类功能键排序不合理,看起来杂乱无章,既不美观也不实用。
中山大学南方学院电子通信与软件工程系课程名称:高级语言程序设计实践实验题目:运算符和表达式附:实验报告专业:年级:完成日期:学号:姓名:成绩:一、实验目的1、能够使用C语言进行简单的算术运算、关系运算和逻辑运算。
2、掌握不同的类型数据之间赋值的规律。
3、进一步熟悉C语言程序的编辑、编译和运行的过程。
二、实验原理1、用int定义整型变量来存放整数;2、用float定义浮点数变量来存放小数;3、使用scanf() 函数从键盘输入两个整型数据,并赋值给两个变量。
三、实验过程1、算术运算实验代码如下:#include <stdio.h>#include <stdlib.h>int main(){int a=2, b=3;float x=3. 9, y=2. 3;float result;result=(float) (a+b) /2+(int) x%(int) y;return result}输出结果如图:2、算术运算实验代码如下:#include <stdio.h>#include <stdlib.h>int main(){int number;int a1, a2, a3;printf("请输入一个三位数:");scanf("%d", &number) ;a1=number%10;number=number/10;a2=number%10;a3=number/10;printf("三位数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",number,a1, a2, a3) ;return 0;}输出结果如图:3、关系运算与逻辑运算实验代码如下:#include <stdio.h>#include <stdlib.h>int main(){int x;printf("输入x的值:") ;scanf("%d", &x) ;printf("表达式(x>0)的值:%d\n", x>0) ;printf("表达式(x>=-20&&x<=-10)的值:%d\n", x>=-20&&x<=-10) ;printf("表达式(x>=100||x<10)的值:%d\n", x>=-20&&x<=-10) ;printf("表达式(x>20&&x%3==0的值:%d\n", x>20&&x%3==0) ;if(x%5==0&&x%3==0)printf("yes\n") ;elseprintf ("no\n") ;return 0;}输出结果如图:4、综合任务实验代码如下:#include <stdio.h>#include <stdlib.h>int main(){int grad1, grad2;scanf("%d%d", &grad1, &grad2) ;printf("表达式(grad1>=0&&grad1<=100)值:%d\n",grad1>=0&&grad1<=100);printf("表达式(grad2>=0&&grad2<=100)值:%d\n",grad2>=0&&grad2<=100);printf("%d", grad1>grad2? grad1:grad2) ;return 0;}输出结果如图:四、思考并回答以下问题1、举例说明逻辑运算符的短路特性。
程序设计实训报告—表达式求值问题完成者:何炜班级:计科1501学号:完成日期:2016年7月14日星期四目录一、题目的内容及要求................................. 错误!未定义书签。
二、需求分析 ................................................ 错误!未定义书签。
三、概要设计 ................................................ 错误!未定义书签。
四、详细设计 ................................................ 错误!未定义书签。
五、源代码 .................................................... 错误!未定义书签。
六、运行结果及分析..................................... 错误!未定义书签。
七、收获及体会............................................. 错误!未定义书签。
一、题目的内容及要求求解形如(a+b)*((c+d)*e+f*h*g)的简单算术表达式的求值问题。
这种表达式只包括加、减、乘、除4种运算符。
为了实现表达式求值,可以首先读入原表达式(包括括号)并创建对应二叉树,其次对二叉树进行前序遍历、中序遍历、后续遍历(非递归),并输出逆波兰表达式,最后求解原表达式的值,同时对非法表达式格式能予以判断。
用二叉树的结构来存储表达式,后续遍历二叉树即可得到逆波兰表达式二、需求分析本程序能解决形如(a+b)*((c+d)*e+f*h*g)并以’#’作为结束标志的简单算术表达式的求值问题。
不仅能够求解出多位浮点数,而且能够对简单的非法表达式进行判断以避免程序异常退出。
三、概要设计1.用户输入中缀表达式2.程序将中缀表达式用二叉树的链式存储结构存储下来3.前序、中序遍历这颗二叉树,输出对应的前缀、中缀表达式4.后续遍历(非递归)这颗二叉树,并把遍历结果存储在顺序栈内,并输出后缀表达式5.对后缀表达式进行求值四、详细设计以下对概要设计进行详细的原理分析。
实验报告题目:算术表达式求值演示班级:网络工程2班姓名:陈智鸣学号:1225112005 完成日期:2013.10.24一、需求分析1. 问题描述:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个经典例子。
设计一个程序演示用算符优先法对算术表达式求值的过程。
2. 基本要求:利用教科书表3.1给出的算符优先关系,实现对算术四则混合运算表达式的求值。
3. 测试数据:教科书例3-1的算术表达式3*(7-2)。
二、概要设计(算法描述)基本操作:InitStack_f(&S)操作结果:构造一个空栈S。
GetTop_f(&S,&e)初始条件:栈S已存在。
操作结果:用e返回S的栈顶元素。
Push_f(&S,ch)初始条件:栈S已存在。
操作结果:插入元素ch为新的栈顶元素。
Pop_f(&S,&e)初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
}ADT SqStack_f三、详细设计代码如下:#include <iostream>#include <stack>using namespace std;int Operate(int x,char op,int y) //四则运算符的运算定义{switch(op){case'+': return x+y;case'-': return x-y;case'*': return x*y;case'/': return x/y;}}char Precede(char op1,char op2) //判断符号的优先级{if(((op1=='+'||op1=='-')&&(op2=='+'||op2=='-'||op2==')'||op2=='#'))||((op1=='*'||op1=='/')&&( op2=='+'||op2=='-'||op2=='*'||op2=='/'||op2==')'||op2=='#')))return '>';if((op1=='('&&op2==')')||(op1=='#'&&op2=='#'))return '=';elsereturn '<';}void Tonumber(char &c,stack<int>&OPND) //转化为数字{ int number=0;if(((c-'0')>=0&&(c-'0')<=9)){while(((c-'0')>=0&&(c-'0')<=9)){number=number*10+(c-'0');cin>>c;}OPND.push(number);}}int main(){stack<char> OPTR;stack<int> OPND;//设OPTR和OPND分别为运算符栈和运算数栈OPTR.push('#'); //出栈时的结尾判断char c,op1,op2,op;int x,y,temp=1;cout<<"输入表达式,以'#'结束:";cin>>c;while(c!='#'||OPTR.top()!='#'){Tonumber(c,OPND);if(c!='+'&&c!='-'&&c!='*'&&c!='/'&&c!='('&&c!=')'&&c!='#'){OPND.push(c);cin>>c;}else{op1=OPTR.top();op2=c;switch(Precede(op1,op2)){case '<': //栈顶元素优先级低OPTR.push(c);cin>>c;break;case '=': //脱括号并接受下一个字符OPTR.pop();cin>>c;break;case '>': op=OPTR.top(); //退栈并将运算结果入栈OPTR.pop();x=OPND.top();OPND.pop();y=OPND.top();OPND.pop();OPND.push(Operate(y,op,x));int a=OPND.top();break;}}}cout<<"计算结果是:"<<OPND.top()<<endl;return 0;}四、调试分析1、在编程过程中,为了增加程序的实用性,将程序适用范围扩大到了实数型,并增加了连续输入功能;2、在编程过程中,为了增加程序的健壮性,在运算除法时,考虑到除数为“0”时的报错和及时退出;3、在调试过程中,最初一下子出来程序就出错,为了方便检查错误,故在主函数中增加了检查后缀表达式是否转换正确的函数,并在每一步计算都跟踪结果是否正确;4、从程序实验题的编制过程中容易看出,线性表的广泛应用,特别是顺序存储结构的栈的应用。
数据结构实验二——算术表达式求值实验报告算术表达式求值实验报告一、引言算术表达式求值是计算机科学中一个重要的基础问题,它涉及到了数据结构和算法的应用。
本实验旨在通过实现一个算术表达式求值的程序,加深对数据结构中栈的理解和应用,并掌握算术表达式的求值过程。
二、实验目的1. 理解算术表达式的基本概念和求值过程;2. 掌握栈的基本操作和应用;3. 实现一个能够正确求解算术表达式的程序;4. 进一步熟悉编程语言的使用。
三、实验内容1. 设计并实现一个栈的数据结构;2. 实现算术表达式求值的算法;3. 编写测试用例,验证程序的正确性;4. 进行性能测试,分析算法的时间复杂度。
四、实验方法与步骤1. 设计栈的数据结构在本实验中,我们选择使用数组来实现栈的数据结构。
栈的基本操作包括入栈(push)、出栈(pop)、判断栈空(isEmpty)和获取栈顶元素(top)等。
2. 算术表达式求值算法算术表达式求值的一种常用算法是通过后缀表达式进行求值。
具体步骤如下: - 将中缀表达式转换为后缀表达式;- 通过栈来求解后缀表达式;- 返回最终的计算结果。
3. 编写测试用例编写一系列测试用例,包括不同类型的算术表达式,以验证程序的正确性。
例如:- 简单的四则运算表达式:2 + 3 * 4 - 5;- 包含括号的表达式:(2 + 3) * (4 - 5);- 包含多位数的表达式:12 + 34 * 56;- 包含浮点数的表达式:3.14 + 2.71828。
4. 性能测试和时间复杂度分析针对不同规模的输入数据,进行性能测试,记录程序的运行时间。
同时,分析算法的时间复杂度,验证算法的效率。
五、实验结果与分析我们设计并实现了一个栈的数据结构,并成功地完成了算术表达式求值的程序。
通过对一系列测试用例的验证,我们发现程序能够正确地求解各种类型的算术表达式,并返回正确的计算结果。
在性能测试中,我们对不同规模的输入数据进行了测试,并记录了程序的运行时间。
算术表达式求值实验报告1. 背景算术表达式求值是计算机科学中的基本问题之一,涉及到对数学表达式的解析和计算。
在计算机编程中,经常需要对用户输入的数学表达式进行求值,以得到正确的计算结果。
因此,研究如何高效地求解算术表达式是非常重要的。
在本次实验中,我们将探索不同方法来求解算术表达式,并比较它们的性能和准确性。
我们将使用Python语言作为实现工具,并通过编写代码来实现不同方法。
2. 分析2.1 表达式解析在进行表达式求值之前,我们首先需要对输入的数学表达式进行解析。
解析过程主要包括以下几个步骤:1.去除空格:将输入的字符串中的空格字符去除。
2.分词:将字符串按照运算符和操作数进行分割,得到一个由标记组成的列表。
3.构建语法树:根据分词结果构建一个语法树,用于表示数学表达式的结构。
4.求值:通过遍历语法树并执行相应操作,最终得到表达式的值。
2.2 求值方法在本次实验中,我们将尝试以下两种不同的求值方法:1.递归求值:通过递归地遍历语法树来求解表达式。
递归求值的优点是简单易懂,但可能存在性能问题。
2.栈求值:使用栈数据结构来辅助求解表达式。
栈可以有效地处理运算符的优先级和括号的匹配问题。
2.3 性能评估为了评估不同方法的性能,我们将使用一组测试用例来对其进行比较。
测试用例包括不同长度和复杂度的数学表达式,以及各种运算符和括号的组合。
我们将使用Python内置的time模块来测量每种方法的执行时间,并比较它们之间的差异。
此外,我们还将检查每种方法是否能正确地计算出表达式的结果。
3. 实验结果3.1 表达式解析在实现表达式解析过程时,我们首先去除输入字符串中的空格,并将其转换为一个字符列表。
然后,我们使用递归下降法来构建语法树。
具体而言,我们定义了以下几个函数:1.parse_expression(tokens):该函数接受一个标记列表作为参数,并返回一个表示整个表达式的语法树。
2.parse_term(tokens):该函数接受一个标记列表作为参数,并返回一个表示项的语法树。
表达式求值实验报告表达式求值实验报告一、引言表达式求值是计算机科学中一个重要的概念,它涉及到对数学表达式的计算和求解。
在本次实验中,我们将探讨表达式求值的相关算法和实现方法,并通过编程实现一个简单的表达式求值器。
二、算法原理1. 表达式的表示方法在计算机中,我们通常使用字符串来表示表达式。
例如,一个简单的数学表达式"2 + 3 * 4"可以表示为字符串"2+3*4"。
在实现表达式求值的算法时,我们需要将字符串中的数字和运算符进行分离,以便进行后续的计算。
2. 中缀表达式转后缀表达式为了方便计算,我们通常将中缀表达式转换为后缀表达式。
后缀表达式也称为逆波兰表达式,它的特点是运算符位于操作数的后面。
例如,上述的中缀表达式"2+3*4"可以转换为后缀表达式"234*+"。
转换的方法可以通过使用栈来实现。
3. 后缀表达式求值得到后缀表达式后,我们可以通过扫描表达式并使用栈来求解。
当遇到操作数时,将其压入栈中;当遇到运算符时,从栈中弹出相应数量的操作数进行计算,并将结果压入栈中。
最终,栈中的唯一元素即为表达式的求值结果。
三、实验过程1. 数据结构设计为了实现表达式求值器,我们需要设计相应的数据结构。
在本次实验中,我们选择使用栈来存储操作数和运算符。
2. 中缀表达式转后缀表达式首先,我们需要编写一个函数来将中缀表达式转换为后缀表达式。
该函数的实现可以通过使用栈和遍历字符串来实现。
具体的步骤如下:- 创建一个空栈和一个空字符串用于存储后缀表达式。
- 从左到右遍历中缀表达式的每个字符。
- 如果遇到操作数,直接将其添加到后缀表达式字符串中。
- 如果遇到运算符,将其与栈顶的运算符进行比较:- 如果栈为空或栈顶为左括号"(",则直接将运算符入栈。
- 如果栈顶的运算符优先级低于当前运算符,则将当前运算符入栈。
- 如果栈顶的运算符优先级高于或等于当前运算符,则将栈顶的运算符弹出并添加到后缀表达式字符串中,直到栈顶的运算符优先级低于当前运算符或栈为空。
计算实验实习报告一、引言计算实验是计算机科学与技术专业的学生在校期间进行的一项重要实践活动。
通过计算实验实习,学生能够将课堂所学的理论知识应用于实际项目中,培养解决实际问题的能力。
本报告旨在总结和分析我在计算实验实习中的学习和体会。
二、实习内容1. 实习目标本次计算实验实习的主要目标是通过进行实际项目的开发,熟悉并掌握某种特定编程语言和相应的开发工具和框架。
在实习过程中,我需要使用该编程语言实现指定的功能,并将其集成到一个完整项目中。
2. 实习任务实习任务包括需求分析、系统设计、编码实现和项目测试。
根据要求,我以团队合作的方式与其他同学一起完成了一个在线购物系统的开发。
3. 实习过程在实习开始之前,我们首先进行了需求分析,明确了该在线购物系统的功能和性能要求。
之后,我们进行了系统设计,包括数据库设计、界面设计和系统架构设计等。
随后,我们按照设计方案实现了系统的各个功能模块,并进行了集成测试和系统测试。
4. 实习成果通过本次实习,我熟悉了编程语言的基本语法和常用库函数,并掌握了使用开发工具和框架进行项目开发的方法。
我在项目中负责实现了系统的用户管理模块和商品管理模块,并成功将它们集成到了整个系统中。
三、实习收获1. 专业技能通过实习,我对编程语言的掌握更加熟练,能够运用所学知识解决实际问题。
我学会了如何进行系统设计和项目开发,并提升了自己的团队协作能力。
此外,我还学习了项目测试的方法和技巧。
2. 实践经验本次实习不仅让我学到了更多的专业知识,还提高了我的实践能力。
通过实际动手的操作,我对计算机软件开发过程有了更加深入的理解,对项目管理和团队协作的经验也得到了积累。
3. 团队合作在实习过程中,我与队友紧密合作,共同解决了项目中的各种技术和团队协作问题。
通过团队合作,我学会了倾听他人意见、有效沟通和协调团队关系,这些能力对于今后的工作和学习都具有重要意义。
四、实习感想通过本次计算实验实习,我对自己的专业选择更加坚定了信心。
本科学生综合性实验报告项目组长:学号:成员:专业:计算机科学与技术班级:B02实验项目名称算术表达式求值指导教师及职称:开课学期2011-2012学年第一学期上课时间2011年10月15日-2011年11月5日一、实验设方案实验名称:算术表达式求值实验时间:2010年10月15 日小组合作:是●否○小组成员:0103356吴荣福0103316 倪志鹏1、实验目的实验目的:写代码来计算算术表达式2、实验思路(实验内容、数据处理方法及实验步骤等)#include <stdio.h>#include <stdlib.h>#include <conio.h>#define size 100#define addsize 20typedef int selemtype;typedef int status;typedef struct{selemtype *base;selemtype *top;int stacksize;}sqstack;//构造空栈status initstack(sqstack &l){l.base=(selemtype *)malloc(size*sizeof(selemtype));if(!l.base) exit(0);l.top=l.base;l.stacksize=size;return 1;}//返回栈顶元素status gettop(sqstack s){selemtype e;if(!s.top) return 0;e=*(s.top-1);return e;;}//进栈status push(sqstack &l,selemtype e){if(l.top-l.base>=l.stacksize){l.base=(selemtype*)realloc(l.base,l.stacksize+addsize*sizeof(selemtype));if(!l.base) exit(0);l.top=l.base+l.stacksize;l.stacksize+=addsize;}*l.top++=e;return 1;}//出栈status pop(sqstack &l,selemtype &e){if(l.top==l.base) return 0;e=*--l.top;return e;}//判断是不是运算符status ischar(char c){if(c=='+'||c=='-'||c=='*'||c=='/'||c=='#'||c=='('||c==')')return 1;elsereturn 0;}//判断优先级char youxian(char m,char n){int a,b;switch(m){case '+':case '-':a=6; break;case '*':case '/':a=9; break;case '(':a=5; break;case '#':a=-1; break;}switch(n){case '+':case '-':b=7; break;case '*':case '/':b=8; break;case ')':b=5; break;case '(':b=7;break;case '#':b=-1;break;}if(a>b)return '>';if(a<b)return '<';elsereturn '=';}//计算函数selemtype operate(selemtype a,selemtype m,selemtype b){ selemtype s;switch(m){case '+':s=(a+b);break;case '-':s=(a-b);break;case '*':s=(a*b);break;case '/':s=(a/b);break;}return s;}//主函数void main(){char ch[5];ch[0]='Y';do{printf("输入:\n");sqstack a,b;char c;selemtype x,y,theta;initstack(a); push(a,'#');initstack(b); c=getchar();while(c!='#' || gettop(a)!='#'){if(!ischar(c)){push(b,c-'0');c=getchar();}else{switch(youxian(gettop(a),c)){case '<':push(a,c);c=getchar();break;case '=':pop(a,x);c=getchar();break;case '>':pop(a,theta);pop(b,y);pop(b,x);push(b,operate(x,theta,y));break;}}}getchar();printf("结果是:");printf("%d\n",gettop(b));printf("是否继续(Y/N):");gets(ch);}while(ch[0]=='Y'||ch[0]=='y');printf("*************************\n");}指导老师对实验设计方案的意见指导老师签名:年月日二、实验结果与分析1、实验目的、实验思路。
《带括号算术表达式的计算》实验报告本次实验的目的是熟练掌握带括号算术表达式的计算方法,以及体会括号对表达式计算的影响。
实验步骤如下:1. 将带括号的算术表达式分解拆解,先计算括号中的表达式,再按照表达式中的运算符号进行计算。
2. 对于括号内的表达式,我们可以递归地调用计算函数来实现计算。
3. 在计算时要特别注意括号对表达式计算的影响,例如:(1+2)*3 和 1+2*3 就有不同的计算结果。
实验过程如下:我们先定义了一个计算函数,将其作为算术表达式的计算器。
在这个函数中,我们首先要对表达式进行分解拆解,以便我们逐个进行计算。
为了实现这个过程,我们可以使用堆栈来存储表达式的元素。
接下来,我们在函数中定义了一个循环,用于逐步计算每个元素的值。
在这个循环中,如果我们遇到了左括号,我们就需要递归调用函数来计算括号内的表达式。
这样可以确保我们先计算括号内的表达式,然后再按照运算符的优先级进行计算。
在计算时,由于乘法和除法的优先级高于加法和减法,我们需要先计算乘法和除法的部分,然后再计算加法和减法的部分。
我们可以使用两个堆栈来实现这个过程,一个堆栈用于存储算术操作符,另一个堆栈用于存储操作数。
最后,我们根据堆栈中存储的运算符和操作数,依照运算符的优先级,依次进行计算,最终得到表达式的值。
实验结果如下:我们在函数中输入了几个带括号的算术表达式,并依次进行了计算。
在计算过程中,我们特别注意了括号对表达式计算的影响,并按照乘除法高于加减法的规则进行了计算。
最终,我们得到了每个表达式的计算结果,并对结果进行了验证,确认了我们的计算过程是正确的。
实验总结:通过这次实验,我们熟练掌握了带括号算术表达式的计算方法,并深刻体会了括号对表达式计算的影响。
在计算带括号的算术表达式时,我们应该先计算括号内的表达式,然后再按照运算符的优先级进行计算,最终得到表达式的值。
此外,我们还可以通过逆波兰表达式的方式来计算带括号的算术表达式。
计算数学表达式程序设
计实训报告
文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)
程序设计实训报告题目:计算数学表达式程序
1、课程设计目的
(1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控
(2)课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
(3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2、设计题目分析
2.1 题目要求:
(1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示。
(2)允许在表达式中出现常用的数学函数,如取整、三角函数、倒数、平方根、平方、立方等。
界面要求:
(1)尽量使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。
(2)如果无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户操作。
2.3 设计要求及需求分析
设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3、课程设计内容
3.1 总体设计:
3.2 详细设计:
以下是部分类功能的说明:
CalFrame 点符号问题,经常出现漏打分号,忽略中英文标点转换等问题,所以一定要谨慎仔细.
2.进制转换的实现及正/余弦计算经常出现问题,结果不正确,经过
查阅资料及反复调试,我们终于克服了这一难题.
3.界面设计,开始我们的设计不太合理,各类功能键排序不合理,
看起来杂乱无章,既不美观也不实用。
经过多次调整程序终于能使
界面美观实用。
4.要注意类、成员变量、成员方法的命名,其中,class后的类名由一个或多个英文
单词构成,每个单词的第一个字符必须是大写;而成员变量和成员方法
名的第一个单词的第一个字母必须小写,其他单词第一个字母大写。
以下是其中一些主要功能演示过程:
运行界面:
4、设计心得与总结:
通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。
在实践中我们遇到了很多问题,但我们都努力克服,并最终成功的完成了这次课程设计。
通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。
并且这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我们充分理解了包和类的调用关系。
由于这次编写的程序比较复杂,所以不能一次性编写、调试,也由此让我们学会把程序分块,逐个编写、调试。
5、附录(源代码)
import .*;
import 加载包(使用图形界面处理的,都必须加载此包)
public class Cal {
public static void main(String[] args) {
CalFrame f = new CalFrame(); CalPanelL() ;
("-0"+(0));
}
} catch(Exception ee) { }
}
}
class PressBPoint implements ActionListener { public void actionPerformed(ActionEvent e) { String text = ();
if(".") == -1)
(text+".");
}
}
class PressB0 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"0");
}
}
class PressB1 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"1");
}
}
class PressB2 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"2");
}
}
class PressB3 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = ();
(text+"3");
}
}
class PressB4 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"4");
}
}
class PressB5 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"5");
}
}
class PressB6 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"6");
}
}
class PressB7 implements ActionListener {
public void actionPerformed(ActionEvent e) { String text = ();
(text+"7");
}
}
class PressB8 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = ();
(text+"8");
}
}
class PressB9 implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = ();
(text+"9");
}
}
// class: Wclose
class Wclose extends WindowAdapter//用窗口上的关闭按钮关闭窗口
{
public void windowClosing(WindowEvent e) //关闭窗口事件处理{
(0);
}
}
}。