还剩4页未读,继续阅读
文本内容:
四则运算计算器
一、程序功能简介可以计算整数四则运算,例如7+5*3+4
二、课程设计要求1按要求在提供的框架程序源程序的基础上对程序进行修改、补充,并调试通过2修改主程序结构,使程序可以反复运算,直到选择退出为止3增加文件的输入输出功能,是计算过的式子和结果可以根据需要设置命令存储到文件中,同时也可以直接从文件中输入四则运算的式子,运算后,结果输出到原文件中4扩充程序功能,使程序适合实型数运算5增加程序的判断功能,当有非法的输入时如字母等,给出提示信息并退出运算6扩充程序功能,使程序可以进行关系表达式====等的运算,运算结果为TRUE或FALSE在VC++6环境下编译已经__实现上述功能注包含Debug的语句如ifDebugprintf;都可以忽略,这些显示是编写工程中需要观察的信息,如果要打开,请在主菜单下输入大写的DLog:20060703开始分析框架程序,并规划程序结构20060704计算的核心部分基本完成并封装成Operation20060705编写Menu_SelDo_PressstrChkDo_FileFileCHKNexus整体功能和界面基本完成20060706强化strChk,增加Debug模式,修正符号优先级问题20060707郁闷,在英化程序-_-///...在Do_File增加输出文件另存功能...
20060708....
20060709....20060710强化strChk,增加结果整形识别增加!=处理,文件名非法字符校验最后更新20060710*//*===============================================*//*头文件声明*/#includestdio.h/*InOutprintf..*/#include__th.h/*powMn开M^n*/#includestring.h/*strcpy...*/#includestdlib.h/*atof...*/#includeconio.h/*getch...*/#define__x256/*表达式长度定义,可以在这里调节*//*===============================================*//*函数声明*//*计算字符串(不带括号的),计算的核心部分*/char*Calculate_fchar*chpString;/*主操作过程,输入式子串,返回double型结果*/doubleOperationchar*chpString;/*Sour__
1、Sour__2加起来到Destination中*/char*AddStrings_fchar*chpDestinationchar*chpSour__1char*chpSour__2;/*寻找char_to_find在Sour__中的位置后移一位*/intFindCharchar*chpSour__charchCharToFind;/*获取字符串的长度*/intLen_fchar*chpSour__;/*将Sour__左边Length个字符放在Destination中*/char*Left_fchar*chpSour__char*chpDestinationintnLength;/*将Sour__右边Length个字符放在Destination中*/char*Right_fchar*chpSour__char*chpDestinationintnLength;/*将Sour__中从Start开始Length长度的字符串截下来放在Destination中*/char*Midstr_fchar*chpSour__char*chpDestinationintnStartintnLength;/*在字符串中删除一个字符del+*/voidDelCharchar*chpStringintsPos;/*在字符串中插入一个字符*/intInsCharchar*chpStringintsPoscharsChar;/*替换字符串中的某个字符*/voidStrRepla__char*chpStringcharstrOldcharstrNew;/*将实数值变为字符串*/char*Str_fdoublenValuechar*chpDestination;/*计算字符串的值,返回实数值*/doubleVal_fchar*chpSour__;/*===============================================*//*主菜单...*/intMenu_Sel;/*手工输入表达式求值*/intDo_Press;/*文件导入表达式求值*/intDo_File;/*文件检查0重新输入,1继续*/intFileChkchar*FN;/*式子的合法性检查0含有非法字符,1正常2关系运算*/intStrChkchar*chpSour__;/*关系运算*/intNexuscharstrIn[];/*显示关于*/voidShow_About;/*===============================================*//*全局变量声明*/intDebug=0;/*调试信息显示开关0不显示,1显示*/char*TF_Info
[3]={FALSETUREError};/*关系运算信息*//*将Sour__左边Length个字符放在Destination中*/char*Left_fchar*chpSour__char*chpDestinationintnLength{*chpDestination+--nLength+1=0;/*设置目标字符串最后一个为NULL*/whilenLength=0/*直到目标字符串的最后一个*/{*chpDestination+nLength=*chpSour__+nLength--;}returnchpDestination;}/*将Sour__中从Start开始Length长度的字符串截下来放在Destination中*/char*Midstr_fchar*chpSour__char*chpDestinationintnStartintnLength{chpSour__+=nStart-1;/*设置源起点*/*chpDestination+--nLength+1=0;/*设置目标字符串最后一个为NULL*/whilenLength=0/*直到目标字符串的最后一个*/{*chpDestination+nLength=*chpSour__+nLength--;}returnchpDestination;}/*将Sour__右边Length个字符放在Destination中*/char*Right_fchar*chpSour__char*chpDestinationintnLength{while*chpSour__!=0{chpSour__++;}/*将源指针移到最后*/chpSour__-=nLength;/*将源指针跳到开始__点*/*chpDestination+--nLength+1=0;/*设置目标字符串最后一个为NULL*/whilenLength=0/*直到目标字符串的最后一个*/{*chpDestination+nLength=*chpSour__+nLength--;}returnchpDestination;}/*在字符串中删除一个字符del+*/voidDelCharchar*chpStringintsPos{char__uf[__x];intnCount;strcpy__ufchpString;fornCount=sPos;__uf[nCount];nCount++{__uf[nCount]=__uf[nCount+1];}strcpychpString__uf;}/*在字符串中插入一个字符*/intInsCharchar*chpStringintsPoscharsChar{char__uf[__x];intiLen;intnCount;strcpy__ufchpString;iLen=strlen__uf;ifiLen__x{__uf[iLen+1]=\0;fornCount=iLen;nCount=sPos;nCount--{__uf[nCount+1]=__uf[nCount];}__uf[sPos]=sChar;strcpychpString__uf;}elsereturn0;return1;}/*替换字符串中的某个字符#to-*/voidStrRepla__char*chpStringcharstrOldcharstrNew{char__uf[__x];intnCount=0;strcpy__ufchpString;while__uf[nCount]{if__uf[nCount]==strOld__uf[nCount]=strNew;nCount++;}strcpychpString__uf;}/*寻找char_to_find在Sour__中的位置后移一位*/intFindCharchar*chpSour__charchCharToFind{intnPos=0;while*chpSour__+nPos!=0/*直到目标字符串的最后一个*/{ifchCharToFind==*chpSour__+nPos++/*比较..*/{returnnPos;/*返回第一个出现点,加一*/}}return0;}/*获取字符串的长度*/intLen_fchar*chpSour__{intnRetval=0;/*初始化长度*/while*chpSour__+nRetval++!=0{}/*__指针到Null*/return--nRetval;}/*将实数值变为字符串*/char*Str_fdoublenValuechar*chpDestination{charstrTmp[__x];__vtnValuesizeofdouble+1strTmp;/*实数值转字符串*/ifstrTmp
[0]==-/*将-负号转译为#*/{strTmp
[0]=#;}strcpychpDestinationstrTmp;ifDebugprintf...ConversionDoubletoString:%f-%s\nnValuechpDestination;returnchpDestination;}/*Sour__
1、Sour__2加起来到Destination中*/char*AddStrings_fchar*chpDestinationchar*chpSour__1char*chpSour__2{char*chpTempdest=chpDestination;while*chpSour__1!=0/*先把chpSour__1放入chpDestination*/{*chpTempdest++=*chpSour__1++;}while*chpSour__2!=0/*在chpDestination后继续写入chpSour__2*/{*chpTempdest++=*chpSour__2++;}*chpTempdest=0;/*指针位置归零*/returnchpDestination;}/*计算字符串的值,返回实数值*/doubleVal_fchar*chpSour__{doublenResult=
0.;charstrTmp[__x];strcpystrTmpchpSour__;ifstrTmp
[0]==#/*将#转译为-负号*/{strTmp
[0]=-;}nResult=atofstrTmp;/*字符串转为实数*/ifDebugprintf...ConversionStringtoDouble:%s-%s-%f\nchpSour__strTmpnResult;returnnResult;}。