收藏 分销(赏)

《带括号的表达式求值》课程(可打印修改).pdf

上传人:丰**** 文档编号:4143708 上传时间:2024-08-01 格式:PDF 页数:26 大小:181.72KB 下载积分:10 金币
下载 相关 举报
《带括号的表达式求值》课程(可打印修改).pdf_第1页
第1页 / 共26页
《带括号的表达式求值》课程(可打印修改).pdf_第2页
第2页 / 共26页


点击查看更多>>
资源描述
数据结构与算法分析数据结构与算法分析课程设计报告课程设计报告课题名称:课题名称:带括号的算术表达式求值带括号的算术表达式求值 课题负责人名(学号):0743111298 同组成员名单(角色):戴维指导教师:评阅成绩:评阅成绩:评阅意见:提交报告时间:200 年 月 日课程名称:数据结构学生姓名:戴维学生学号:0743111298-1-带括号的算术表达式求值带括号的算术表达式求值软件工程 专业学生学生 戴维 指导老师指导老师 朱宏 一、实验一一、实验一:带括号的算术表达式求值带括号的算术表达式求值二、实验的目的和要求二、实验的目的和要求:1.1.采用算符优先数算法采用算符优先数算法,能正确求值表达式能正确求值表达式;2.2.熟练掌握栈的应用熟练掌握栈的应用;3.3.熟练掌握计算机系统的基本操作方法熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一个了解如何编辑、编译、链接和运行一个C+C+程序程序;4.4.上机调试程序上机调试程序,掌握查错、排错使程序能正确运行。掌握查错、排错使程序能正确运行。三、实验的环境三、实验的环境:1.1.硬件环境硬件环境:Intel(R)Intel(R)Celeron(R)MCeleron(R)M CPUCPU 520520 1.60GHz1.60GHz 1.60GHz1.60GHz ,0.99Gb0.99Gb 内存内存2.2.软件环环境软件环环境:操作系统:操作系统:MicrosoftMicrosoft WindowsWindows XPXP ProfessinalProfessinal 版本版本 20022002 编译系统版本:编译系统版本:MicroSoftMicroSoft VisualVisual C+6.0C+6.0包括操作系统包括操作系统,编译系统的版本的特点编译系统的版本的特点,编辑软件特点等。编辑软件特点等。四、算法描述四、算法描述:课程名称:数据结构学生姓名:戴维学生学号:0743111298-2-对于带有括号的算术表达式有以下的运算法则:对于带有括号的算术表达式有以下的运算法则:1 1先乘方,再乘除,最后加减。先乘方,再乘除,最后加减。2 2同级运算从左到右。同级运算从左到右。3 3先括号内,再括号外。先括号内,再括号外。而运算符号的优先级别如下表所示:而运算符号的优先级别如下表所示:运算符运算符=()()+-*/%优先级优先级1 1 2 2 3 3 4 4 5 5具体实现如下:具体实现如下:1 1先建立两个堆栈,一个是操作符堆栈,一个为操作数堆栈。并且将这两个堆栈先建立两个堆栈,一个是操作符堆栈,一个为操作数堆栈。并且将这两个堆栈先清空,然后在操作符号堆栈当中放入一个先清空,然后在操作符号堆栈当中放入一个“=”“=”,以便在后面方便判断表达式是,以便在后面方便判断表达式是否结束。否结束。2 2从输入流当中读取一个字符,循环执行下面的操作:从输入流当中读取一个字符,循环执行下面的操作:去出操作符号堆栈的栈顶元素,如果栈顶元素是不是去出操作符号堆栈的栈顶元素,如果栈顶元素是不是“=”“=”并且如果当前的字符并且如果当前的字符也是也是“=”“=”的时候,那么表示表达式已经结束了,当前操作数堆栈的栈顶元素就是的时候,那么表示表达式已经结束了,当前操作数堆栈的栈顶元素就是表达式的值。表达式的值。如果当前字符不是操作符,就将当前字符放回到输入流当中,读取操作数,并如果当前字符不是操作符,就将当前字符放回到输入流当中,读取操作数,并且将操作数加入到操作数堆栈当中,继续读入下一个字符。且将操作数加入到操作数堆栈当中,继续读入下一个字符。如果当前字符是操作符就进行下面的操作:如果当前字符是操作符就进行下面的操作:如果当前字符不是如果当前字符不是“+”“+”或者或者“-”“-”,则在当前字符前面加一个,则在当前字符前面加一个“0”“0”放入到操放入到操作数栈当中。作数栈当中。如果当前字符和操作符的栈顶元素不匹配,例如当前字符是如果当前字符和操作符的栈顶元素不匹配,例如当前字符是“(”,而栈顶字符,而栈顶字符“)”,显示错误信息。,显示错误信息。如果操作符栈的栈顶元素是如果操作符栈的栈顶元素是“(”并且当前字符是并且当前字符是“)”,则从操作符栈当中取,则从操作符栈当中取出,去掉括号,然后继续读入下面的字符。出,去掉括号,然后继续读入下面的字符。如果当前字符是如果当前字符是“(”,或者操作符栈顶元素的优先级别比当前字符低,则将当,或者操作符栈顶元素的优先级别比当前字符低,则将当前字符放入到操作符栈当中。继续读入下一个字符。前字符放入到操作符栈当中。继续读入下一个字符。如果操作符栈顶元素的优先级别等于或者大于当前字符的优先级别,那么就取如果操作符栈顶元素的优先级别等于或者大于当前字符的优先级别,那么就取出操作数栈的出操作数栈的 RIGHTRIGHT 和和 LEFTLEFT 元素,从操作符栈当中取出元素,从操作符栈当中取出 OPOP,然后进行操作,然后进行操作(LEFTLEFT)OPOP(RIGHTRIGHT),结果进入到操作数栈当中,结果进入到操作数栈当中.课程名称:数据结构学生姓名:戴维学生学号:0743111298-3-五、源程序清单五、源程序清单:Calculator.h:Calculator.h:templateclasstemplateData_elementclassclass CalculatorCalculator privateprivate :StackStack opndopnd ;/建立一个操作数的栈建立一个操作数的栈StackStack optroptr ;/建立一个操作符的栈建立一个操作符的栈boolbool GetTwoOperands(doubleGetTwoOperands(double&left&left ,double,double&right)&right);/从操作数栈当中取出最上面的两个数字从操作数栈当中取出最上面的两个数字boolbool DoOperator(charDoOperator(char op)op);/runrun thethe functionfunction leftleft opop rightrightboolbool IsOperator(charIsOperator(char ch)ch);/判断传入的字符是不是一个操作符判断传入的字符是不是一个操作符 voidvoid GetChar(charGetChar(char&ch)&ch);/从输入流当中读入一个字符从输入流当中读入一个字符 intint isp(charisp(char op);op);/堆栈外优先数堆栈外优先数 intint icp(charicp(char op);op);/堆栈内优先数堆栈内优先数publicpublic :voidvoid Run()Run();/运行函数运行函数 ;templateclasstemplateData_elementvoidvoid Calculator:Run()Calculator:Run()optr.clear()optr.clear();/将操作符栈的所有元素清空将操作符栈的所有元素清空opnd.clear()opnd.clear();/将操作数栈的所有元素清空将操作数栈的所有元素清空optr.push(=)optr.push(=);/先在操作符栈中传入一个先在操作符栈中传入一个=号,为了能够更好的号,为了能够更好的课程名称:数据结构学生姓名:戴维学生学号:0743111298-4-判断运算是否已经判断运算是否已经结束结束 /当从外面的读入的字符是当从外面的读入的字符是=并且栈顶符号也是并且栈顶符号也是=时,运算结束时,运算结束charchar chch ;/临时的一个字符临时的一个字符charchar priorCharpriorChar ;/前一个字符前一个字符charchar optrTopoptrTop ;/操作符栈的栈顶元素操作符栈的栈顶元素Data_elementData_element operandoperand ;/需要被操作的操作数需要被操作的操作数 charchar opop =0;0;/定义一个操作数为定义一个操作数为00,便于操作小数的运算,便于操作小数的运算 GetChar(ch);GetChar(ch);/得到一个字符得到一个字符optr.top(optrTop);optr.top(optrTop);/得到操作符栈的栈顶元素得到操作符栈的栈顶元素if(optr.top(optrTop)=underflow)if(optr.top(optrTop)=underflow)/如果操作符号栈为空,抛出错误信息如果操作符号栈为空,抛出错误信息 coutcout表达式有错表达式有错!endl;!operand;cinoperand;opnd.push(operand);opnd.push(operand);priorChar=0;priorChar=0;GetChar(ch);GetChar(ch);elseelse if(!IsOperator(ch)if(!IsOperator(ch)/除了数字以外应该只有操作符,现在进行判断,如果不是数字,除了数字以外应该只有操作符,现在进行判断,如果不是数字,不是小数不是小数点,点,/也不是操作符号,说明输入有错误,打印错误消息,再不断的读也不是操作符号,说明输入有错误,打印错误消息,再不断的读入字符,入字符,直到读到表达式结束直到读到表达式结束 coutcout表达式中出现非法字符表达式中出现非法字符!endl;!ch,ch!=);while(cinch,ch!=);return;return;elseelse if(priorChar=|priorChar=()&(ch=+|ch=-if(priorChar=|priorChar=()&(ch=+|ch=-)opnd.push)opnd.push课程名称:数据结构学生姓名:戴维学生学号:0743111298-6-(0);(0);if(isp(optrTop)icp(ch)if(isp(optrTop)icp(ch)if(isp(optrTop)icp(ch)/如果操作符栈顶元素的优先级别大于当前操作符号,如果操作符栈顶元素的优先级别大于当前操作符号,/删除操作符栈顶元素,在判断删除操作符栈顶元素,在判断 OPOP 是不是操作符号,如果不是是不是操作符号,如果不是就返回就返回 optr.top(op);optr.pop();optr.top(op);optr.pop();if(!DoOperator(op)return;if(!DoOperator(op)return;elseelse if(isp(optrTop)=icp(ch)&ch=)if(isp(optrTop)=icp(ch)&ch=)/如果栈内操作符和栈外操作符的优先级别一样的,并且当前如果栈内操作符和栈外操作符的优先级别一样的,并且当前的字的字符为等号的时候符为等号的时候 课程名称:数据结构学生姓名:戴维学生学号:0743111298-7-optr.pop();optr.pop();priorChar=);priorChar=);GetChar(ch);GetChar(ch);if(optr.top(optrTop)=underflow)if(optr.top(optrTop)=underflow)/如果操作符栈为空的话,输出错误消息如果操作符栈为空的话,输出错误消息 coutcout表达式有错表达式有错!endl;!endl;return;return;if(opnd.top(operand)=underflowif(opnd.top(operand)=underflow|optr.pop()optr.pop()=underflow)underflow)/如果操作数字栈为空或者是操作符号在删除了栈顶元素厚为空,如果操作数字栈为空或者是操作符号在删除了栈顶元素厚为空,输出错误信息输出错误信息 coutcout表达式有错表达式有错!endl;!endl;return;return;elseelse /删除操作数栈的栈顶元素,如果再删除操作符栈栈顶元素成功删除或删除操作数栈的栈顶元素,如果再删除操作符栈栈顶元素成功删除或者能够成功删除者能够成功删除 /操作数栈的栈顶元素,输出错误信息操作数栈的栈顶元素,输出错误信息 opnd.pop();opnd.pop();ifif (opnd.pop()=success(opnd.pop()=success|optr.pop()=success)optr.pop()=success)coutcout表达式有错表达式有错!endl;!endl;return;return;课程名称:数据结构学生姓名:戴维学生学号:0743111298-8-coutoperandendl;coutoperandendl;return;return;templateclasstemplateData_elementintint Calculator:isp(charCalculator:isp(char op)op)/栈外操作符的优先级判断栈外操作符的优先级判断 intint result;result;switch(op)switch(op)casecase =:=:result=0;result=0;break;break;casecase (:(:result=1;result=1;break;break;casecase :result=7;result=7;break;break;casecase *:*:casecase /:/:casecase%:%:result=5;result=5;break;break;casecase +:+:课程名称:数据结构学生姓名:戴维学生学号:0743111298-9-casecase -:-:result=3;result=3;break;break;casecase ):):result=8;result=8;returnreturn result;result;templateclasstemplateData_element/操作符栈内优先级的判断操作符栈内优先级的判断intint Calculator:icp(charCalculator:icp(char op)op)intint result;result;switch(op)switch(op)casecase =:=:result=0;result=0;break;break;casecase (:(:result=8;result=8;break;break;casecase :result=6;result=6;break;break;casecase *:*:casecase /:/:casecase%:%:result=4;result=4;课程名称:数据结构学生姓名:戴维学生学号:0743111298-10-break;break;casecase +:+:casecase -:-:result=2;result=2;break;break;casecase ):):result=1;result=1;returnreturn result;result;templateclasstemplateData_elementboolbool Calculator:GetTwoOperands(doubleCalculator:GetTwoOperands(double&x,double&x,double&y)&y)/从操作数栈当中得到两个数字,如果操作数字栈或者操作符栈的元素少于两个从操作数栈当中得到两个数字,如果操作数字栈或者操作符栈的元素少于两个的时候输出错误信息的时候输出错误信息 if(opnd.empty()if(opnd.empty()coutcout表达式有错表达式有错!endl;!endl;returnreturn false;false;opnd.top(y);opnd.pop();opnd.top(y);opnd.pop();if(opnd.empty()if(opnd.empty()coutcout表达式有错表达式有错!endl;!endl;returnreturn false;false;opnd.top(x);opnd.pop();opnd.top(x);opnd.pop();课程名称:数据结构学生姓名:戴维学生学号:0743111298-11-returnreturn true;true;templateclasstemplateData_elementboolbool Calculator:DoOperator(charCalculator:DoOperator(char op)op)/判断符号,进行相应的操作判断符号,进行相应的操作 Data_elementData_element x,y;x,y;boolbool result=GetTwoOperands(x,y);result=GetTwoOperands(x,y);if(result=true)if(result=true)switch(op)switch(op)casecase +:+:opnd.push(x+y);opnd.push(x+y);break;break;casecase -:-:opnd.push(x-y);opnd.push(x-y);break;break;casecase *:*:opnd.push(x*y);opnd.push(x*y);break;break;casecase /:/:if(y=0)if(y=0)coutcout除数为零除数为零!endl;!endl;returnreturn false;false;课程名称:数据结构学生姓名:戴维学生学号:0743111298-12-opnd.push(x/y);opnd.push(x/y);break;break;casecase%:%:if(long)y=0)if(long)y=0)coutcout除数为零除数为零!endl;!endl;returnreturn false;false;opnd.push(long)xopnd.push(long)x%(long)y);(long)y);break;break;casecase :opnd.push(pow(x,y);opnd.push(pow(x,y);returnreturn true;true;elseelse returnreturn false;false;templateclasstemplateElemTypevoidvoid Calculator:GetChar(charCalculator:GetChar(char&ch)&ch)/从输入流当中读入字符从输入流当中读入字符 cinch;cinch;while(ch=while(ch=|ch=n)|ch=n)cinch;cinch;templateclasstemplateData_elementboolbool Calculator:IsOperator(charCalculator:IsOperator(char ch)ch)课程名称:数据结构学生姓名:戴维学生学号:0743111298-13-/判断输入的字符是不是操作符判断输入的字符是不是操作符 if(ch=|ch=(|ch=|ch=*|if(ch=|ch=(|ch=|ch=*|ch=/|ch=%|ch=+|ch=-|ch=)ch=/|ch=%|ch=+|ch=-|ch=)returnreturn true;true;elseelse returnreturn false;false;LK_STACK.h:LK_STACK.h:templateclasstemplateNode_entrystructstruct NodeNode Node_entryNode_entry entry;entry;/定义一个结点元素定义一个结点元素 NodeNode *next;*next;/定义一个结点指针定义一个结点指针 Node();Node();/无参数构造函数无参数构造函数 Node(Node_entryNode(Node_entry item,item,NodeNode *add_on*add_on =NULL);NULL);/含参构造函含参构造函数数;templateclasstemplateStack_entryclassclass StackStack public:public:Stack();Stack();/无参构造函数无参构造函数 boolbool empty()empty()const;const;/判断堆栈是不是为空判断堆栈是不是为空 Error_codeError_code push(constpush(const Stack_entryStack_entry&item);&item);/往堆栈当中传入元素往堆栈当中传入元素 Error_codeError_code pop();pop();/删除堆栈的栈顶元素删除堆栈的栈顶元素 Error_codeError_code top(Stack_entrytop(Stack_entry&item)&item)const;const;/得到堆栈的栈顶元素得到堆栈的栈顶元素课程名称:数据结构学生姓名:戴维学生学号:0743111298-14-voidvoid clear();clear();/清空堆栈的所有元素清空堆栈的所有元素 Stack();Stack();/析构函数析构函数 Stack(constStack(const StackStack&original);&original);/有参数构造函数有参数构造函数 voidvoid operatoroperator =(const=(const StackStack&original);&original);/操作符重载操作符重载protected:protected:NodeNode *top_node;*top_node;/定义一个指针定义一个指针;templateclasstemplateNode_entryNode:Node()/Node:Node()/构造函数构造函数 nextnext =NULL;NULL;templateclasstemplateNode_entryNode:Node(Node_entryNode:Node(Node_entry item,item,NodeNode *add_on)*add_on)/含参数构造函数含参数构造函数 entryentry =item;item;nextnext =add_on;add_on;templateclasstemplateStack_entryStack:Stack()Stack:Stack()/堆栈的构造函数堆栈的构造函数 top_node=NULL;top_node=NULL;templateclasstemplateStack_entryboolbool Stack:empty()Stack:empty()constconst/判断堆栈是不是为空判断堆栈是不是为空课程名称:数据结构学生姓名:戴维学生学号:0743111298-15-if(top_node=NULL)if(top_node=NULL)returnreturn true;true;elseelse returnreturn false;false;templateclasstemplateStack_entryError_codeError_code Stack:push(constStack:push(const Stack_entryStack_entry&item)&item)/往堆栈中添加元素往堆栈中添加元素 NodeNode *new_top*new_top =newnew Node(item,Node(item,top_node);top_node);ifif (new_top(new_top =NULL)NULL)returnreturn overflow;overflow;top_nodetop_node =new_top;new_top;returnreturn success;success;templateclasstemplateStack_entryError_codeError_code Stack:pop()Stack:pop()/删除堆栈的栈顶元素删除堆栈的栈顶元素 NodeNode *old_top*old_top =top_node;top_node;ifif (top_node(top_node =NULL)NULL)returnreturn underflow;underflow;top_nodetop_node =old_top-next;old_top-next;deletedelete old_top;old_top;returnreturn success;success;templateclasstemplateStack_entryError_codeError_code Stack:top(Stack_entryStack:top(Stack_entry&item)&item)constconst/得到堆栈的栈顶元素得到堆栈的栈顶元素课程名称:数据结构学生姓名:戴维学生学号:0743111298-16-Error_codeError_code result;result;if(empty()if(empty()returnreturn underflow;underflow;elseelse item=top_node-entry;item=top_node-entry;returnreturn success;success;templateclasstemplateStack_entryvoidvoid Stack:clear()Stack:clear()/清空整个堆栈清空整个堆栈 whilewhile (!empty()(!empty()pop();pop();templateclasstemplateStack_entryStack:Stack()Stack:Stack()/析构函数析构函数 clear();clear();Utility.h:Utility.h:#include#include /standard/standard stringstring operationsoperations#include#include /standard/standard iostreamiostream operationsoperations#include#include /numeric/numeric limitslimits#include#include /mathematical/mathematical functionsfunctions课程名称:数据结构学生姓名:戴维学生学号:0743111298-17-#include#include /file/file inputinput andand outputoutput#include#include /character/character classificationclassification#include#include /date/date andand timetime functionfunction#include#include /con/con inputinput andand outputoutputenumenum Error_codesuccess,fail,underflow,overflow;Error_codesuccess,fail,underflow,overflow;/enum/enum boolfalse,true;boolfalse,true;Calculator.cpp:Calculator.cpp:#includeUtility.h#includeUtility.h#includeLK_STACK.H#includeLK_STACK.H#includeCalculator.h#includeCalculator.hvoidvoid main()main()CalculatorCalculator s;s;charchar iscontinue=Y;iscontinue=Y;while(iscontinue=Y)while(iscontinue=Y)coutcout输入表达式输入表达式(以等号以等号“=”“=”结束结束):endl;):endl;s.Run();s.Run();coutcoutiscontinue;ciniscontinue;iscontinue=toupper(iscontinue);iscontinue=toupper(iscontinue);六、运行结果六、运行结果:1.1.一般的整数操作一般的整数操作:3+4*5/2=13:3+4*5/2=13课程名称:数据结构学生姓名:戴维学生学号:0743111298-18-2.2.小数的计算小数的计算:4.25*1+3.25/5=4.9:4.25*1+3.25/5=4.93.3.乘方操作乘方操作:44=256:44=2564.4.取模运算取模运算:7%3=1:7%3=1课程名称:数据结构学生姓名:戴维学生学号:0743111298-19-5.5.负数运算:(负数运算:(-5-5)*6/2=15*6/2=156分母为零的检验:7一次程序结束后继续下一次:课程名称:数据结构学生姓名:戴维学生学号:0743111298-20-8一次程序结束后退出程序:七、实验运行情况分析七、实验运行情况分析(包括算法、运行结果、运行环境等问题的讨论包括算法、运行结果、运行环境等问题的讨论)。(一)算法分析:(一)算法分析:对于带有括号的算术表达式有以下的运算法则:对于带有括号的算术表达式有以下的运算法则:1 1先乘方,再乘除,最后加减。先乘方,再乘除,最后加减。2 2同级运算从左到右。同级运算从左到右。3 3先括号内,再括号外。先括号内,再括号外。而运算符号的优先级别如下表所示:而运算符号的优先级别如下表所示:课程名称:数据结构学生姓名:戴维学生学号:0743111298-21-运算符运算符=()()+-*/%优先级优先级1 1 2 2 3 3 4 4 5 5具体实现如下:具体实现如下:1 1先建立两个堆栈,一个是操作符堆栈,一个为操作数堆栈。并且将这两个堆栈先建立两个堆栈,一个是操作符堆栈,一个为操作数堆栈。并且将这两个堆栈先清空,然后在操作符号堆栈当中放入一个先清空,然后在操作符号堆栈当中放入一个“=”“=”,以便在后面方便判断表达式是,以便在后面方便判断表达式是否结束。否结束。2 2从输入流当中读取一个字符,循环执行下面的操作:从输入流当中读取一个字符,循环执行下面的操作:去出操作符号堆栈的栈顶元素,如果栈顶元素是不是去出操作符号堆栈的栈顶元素,如果栈顶元素是不是“=”“=”并且如果当前的字符并且如果当前的字符也是也是“=”“=”的时候,那么表示表达式已经结束了,当前操作数堆栈的栈顶元素就是的时候,那么表示表达式已经结束了,当前操作数堆栈的栈顶元素就是表达式的值。表达式的值。如果当前字符不是操作符,就将当前字符放回到输入流当中,读取操作数,并如果当前字符不是操作符,就将当前字符放回到输入流当中,读取操作数,并且将操作数加入到操作数堆栈当中,继续读入下一个字符。且将操作数加入到操作数堆栈当中,继续读入下一个字符。如果当前字符是操作符就进行下面的操作:如果当前字符是操作符就进行下面的操作:如果当前字符不是如果当前字符不是“+”“+”或者或者“-”“-”,则在当前字符前面加一个,则在当前字符前面加一个“0”“0”放入到操放入到操作数栈当中。作数栈当中。如果当前字符和操作符的栈顶元素不匹配,例如当前字符是如果当前字符和操作符的栈顶元素不匹配,例如当前字符是“(”,而栈顶字符,而栈顶字符“)”,显示错误信息。,显示错误信息。如果操作符栈的栈顶元素是如果操作符栈的栈顶元素是“(”并且当前字符是并且当前字符是“)”,则从操作符栈当中取,则从操作符栈当中取出,去掉括号,然后继续读入下面的字符。出,去掉括号,然后继续读入下面的字符。如果当前字符是如果当前字符是“(”,或者操作符栈顶元素的优先级别比当前字符低,则将当,或者操作符栈顶元素的优先级别比当前字符低,则将当前字符放入到操作符栈当中。继续读入下一个字符。前字符放入到操作符栈当中。继续读入下一个字符。如果操作符栈顶元素的优先级别等于或者大于当前字符的优先级别,那么就取如果操作符栈顶元素的优先级别等于或者大于当前字符的优先级别,那么就取出操作数栈的出操作数栈的 RIGHTRIGHT 和和 LEFTLEFT 元素,从操作符栈当中取出元素,从操作符栈当中取出 OPOP,然后进行操作,然后进行操作(LEFTLEFT)OPOP(RIGHTRIGHT),结果进入到操作数栈当中,结果进入到操作数栈当中.(二)运行结果分析:(二)运行结果分析:1 1对一般的整数,小数进行操作时,只要先输入一个准确的表达式子即可,当计对一般的整数,小数进行操作时,只要先输入一个准确的表达式子即可,当计算结束后,屏幕上会显示计算结果,并且征求是否还要继续进行运算。算结束后,屏幕上会显示计算结果,并且征求是否还要继续进行运算。课程名称:数据结构学生姓名:戴维学生学号:0743111298-22-小数运算:小数运算:乘方运算:乘方运算:取模运算:取模运算:课程名称:数据结构学生姓名:戴维学生学号:0743111298-23-负数运算:负数运算:2 2但是如果在运算过程当中出现了非法的字符,或者经过判断,表达式没有意义,但是如果在运算过程当中出现了非法的字符,或者经过判断,表达式没有意义,那么在屏幕上就会打印出错误消息:那么在屏幕上就会打印出错误消息:3 3在结束一次运算过后,系统会提示你是否进行下一次运算,如果你选择是,那在结束一次运算过后,系统会提示你是否进行下一次运算,如果你选择是,那么就会提示你继续输入表达式:么就会提示你继续输入表达式:课程名称:数据结构学生姓名:戴维学生学号:0743111298-24-4 4:但是如果结束了一次运算后不想在继续进行运算,那么在输入了:但是如果结束了一次运算后不想在继续进行运算,那么在输入了“N”“N”过后,过后,系统提醒你退出:系统提醒你退出:(三)运行环境等问题的讨论:(三)运行环境等问题的讨论:VisualVisual C+C+是一个功能强大的可视化软件开发工具。自是一个功能强大的可视化软件开发工具。自 19931993 年年 MicrosoftMicrosoft 公司公司推出推出 VisualVisual C+1.0C+1.0 后,随着其新版本的不断问世,后,随着其新版本的不断问世,VisualVisual C+C+已成为专业程序已成为专业程序员进行软件开发的首选工具。员进行软件开发的首选工具。VisualVisual C+6.0C+6.0 不仅是一个不仅是一个 C+C+编译器,而且是一个基于编译器,而且是一个基于 WindowsWindows 操作系统的可视操作系统的可视化集成开发环境(化集成开发环境(integratedintegrated developmentdevelopment environment,IDEenvironment,IDE)。VisualVisual C+6.0C+6.0由许多组件组成,包括编辑器、调试器以及程序向导由许多组件组成,包括编辑器、调试器以及程序向导 AppWizardAppWizard、类向导、类
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服