四则运算计算器15页word.docx
- 文档编号:10100305
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:8
- 大小:17.53KB
四则运算计算器15页word.docx
《四则运算计算器15页word.docx》由会员分享,可在线阅读,更多相关《四则运算计算器15页word.docx(8页珍藏版)》请在冰豆网上搜索。
四则运算计算器15页word
四则运算计算器
一、程序功能简介
可以计算整数四则运算,例如:
7+5*(3+4)
二、课程设计要求
(1)按要求在提供的框架程序源程序的基础上对程序进行修改、补充,并调试通过。
(2)修改主程序结构,使程序可以反复运算,直到选择退出为止。
(3)增加文件的输入输出功能,是计算过的式子和结果可以根据需要设置命令存储到文件中,同时也可以直接从文件中输入四则运算的式子,运算后,结果输出到原文件中。
(4)扩充程序功能,使程序适合实型数运算。
(5)增加程序的判断功能,当有非法的输入时(如字母等),给出提示信息并退出运算。
(6)扩充程序功能,使程序可以进行关系表达式(>=,>,<=,<,==等)的运算,运算结果为TRUE或FALSE。
在VC++6环境下编译
已经完美实现上述功能
注:
包含Debug的语句如:
if(Debug)printf("");都可以忽略,
这些显示是编写工程中需要观察的信息,如果要打开,请在主菜单下输入大写的'D'。
Log:
20060703开始分析框架程序,并规划程序结构
20060704计算的核心部分基本完成,并封装成Operation()
20060705编写Menu_Sel()Do_Press()strChk()Do_File()FileCHK()Nexus()整体功能和界面基本完成
20060706强化strChk(),增加Debug模式,修正符号优先级问题。
20060707郁闷,在英化程序-_-///...在Do_File()增加输出文件另存功能...
20060708....
20060709....
20060710强化strChk(),增加结果整形识别,增加'!
='处理,文件名非法字符校验。
最后更新20060710
*/
/*===============================================*/
/*头文件声明*/
#include
#include
#include
#include
#include
#defineMax256/*表达式长度定义,可以在这里调节*/
/*===============================================*/
/*函数声明*/
/*计算字符串(不带括号的),计算的核心部分*/
char*Calculate_f(char*chpString);
/*主操作过程,输入式子串,返回double型结果*/
doubleOperation(char*chpString);
/*Source1、Source2加起来到Destination中*/
char*AddStrings_f(char*chpDestination,char*chpSource1,char*chpSource2);
/*寻找char_to_find在Source中的位置,后移一位*/
intFindChar(char*chpSource,charchCharToFind);
/*获取字符串的长度*/
intLen_f(char*chpSource);
/*将Source左边Length个字符放在Destination中*/
char*Left_f(char*chpSource,char*chpDestination,intnLength);
/*将Source右边Length个字符放在Destination中*/
char*Right_f(char*chpSource,char*chpDestination,intnLength);
/*将Source中从Start开始Length长度的字符串截下来放在Destination中*/
char*Midstr_f(char*chpSource,char*chpDestination,intnStart,intnLength);
/*在字符串中删除一个字符del'+'*/
voidDelChar(char*chpString,intsPos);
/*在字符串中插入一个字符*/
intInsChar(char*chpString,intsPos,charsChar);
/*替换字符串中的某个字符*/
voidStrReplace(char*chpString,charstrOld,charstrNew);
/*将实数值变为字符串*/
char*Str_f(doublenValue,char*chpDestination);
/*计算字符串的值,返回实数值*/
doubleVal_f(char*chpSource);
/*===============================================*/
/*主菜单...*/
intMenu_Sel();
/*手工输入表达式求值*/
intDo_Press();
/*文件导入表达式求值*/
intDo_File();
/*文件检查0重新输入,1继续*/
intFileChk(char*FN);
/*式子的合法性检查0含有非法字符,1正常2关系运算*/
intStrChk(char*chpSource);
/*关系运算*/
intNexus(charstrIn[]);
/*显示关于*/
voidShow_About();
/*===============================================*/
/*全局变量声明*/
intDebug=0;/*调试信息显示开关0不显示,1显示*/
char*TF_Info[3]={"FALSE","TURE","Error"};/*关系运算信息*/
/*将Source左边Length个字符放在Destination中*/
char*Left_f(char*chpSource,char*chpDestination,intnLength)
{
*(chpDestination+--nLength+1)=0;/*设置目标字符串最后一个为NULL*/
while(nLength>=0)/*直到目标字符串的最后一个*/
{
*(chpDestination+nLength)=*(chpSource+nLength--);
}
returnchpDestination;
}
/*将Source中从Start开始Length长度的字符串截下来放在Destination中*/
char*Midstr_f(char*chpSource,char*chpDestination,intnStart,intnLength)
{
chpSource+=nStart-1;/*设置源起点*/
*(chpDestination+--nLength+1)=0;/*设置目标字符串最后一个为NULL*/
while(nLength>=0)/*直到目标字符串的最后一个*/
{
*(chpDestination+nLength)=*(chpSource+nLength--);
}
returnchpDestination;
}
/*将Source右边Length个字符放在Destination中*/
char*Right_f(char*chpSource,char*chpDestination,intnLength)
{
while(*chpSource!
=0)
{
chpSource++;
}/*将源指针移到最后*/
chpSource-=nLength;/*将源指针跳到开始复制点*/
*(chpDestination+--nLength+1)=0;/*设置目标字符串最后一个为NULL*/
while(nLength>=0)/*直到目标字符串的最后一个*/
{
*(chpDestination+nLength)=*(chpSource+nLength--);
}
returnchpDestination;
}
/*在字符串中删除一个字符del'+'*/
voidDelChar(char*chpString,intsPos)
{
charsBuf[Max];
intnCount;
strcpy(sBuf,chpString);
for(nCount=sPos;sBuf[nCount];nCount++)
{
sBuf[nCount]=sBuf[nCount+1];
}
strcpy(chpString,sBuf);
}
/*在字符串中插入一个字符*/
intInsChar(char*chpString,intsPos,charsChar)
{
charsBuf[Max];
intiLen;
intnCount;
strcpy(sBuf,chpString);
iLen=strlen(sBuf);
if(iLen { sBuf[iLen+1]='\0'; for(nCount=iLen;nCount>=sPos;nCount--) { sBuf[nCount+1]=sBuf[nCount]; } sBuf[sPos]=sChar; strcpy(chpString,sBuf); } else return0; return1; } /*替换字符串中的某个字符'#'to'-'*/ voidStrReplace(char*chpString,charstrOld,charstrNew) { charsBuf[Max]; intnCount=0; strcpy(sBuf,chpString); while(sBuf[nCount]) { if(sBuf[nCount]==strOld)sBuf[nCount]=strNew; nCount++; } strcpy(chpString,sBuf); } /*寻找char_to_find在Source中的位置,后移一位*/ intFindChar(char*chpSource,charchCharToFind) { intnPos=0; while(*(chpSource+nPos)! =0)/*直到目标字符串的最后一个*/ { if(chCharToFind==*(chpSource+nPos++))/*比较..*/ { returnnPos;/*返回第一个出现点,加一*/ } } return0; } /*获取字符串的长度*/ intLen_f(char*chpSource) { intnRetval=0;/*初始化长度*/ while(*(chpSource+nRetval++)! =0){}/*移动指针到Null*/ return--nRetval; } /*将实数值变为字符串*/ char*Str_f(doublenValue,char*chpDestination) { charstrTmp[Max]; gcvt(nValue,sizeof(double)+1,strTmp);/*实数值转字符串*/ if(strTmp[0]=='-')/*将'-'负号转译为'#'*/ { strTmp[0]='#'; } strcpy(chpDestination,strTmp); if(Debug)printf("...ConversionDoubletoString: %f->%s\n",nValue,chpDestination); returnchpDestination; } /*Source1、Source2加起来到Destination中*/ char*AddStrings_f(char*chpDestination,char*chpSource1,char*chpSource2) { char*chpTempdest=chpDestination; while(*chpSource1! =0)/*先把chpSource1放入chpDestination*/ { *(chpTempdest++)=*(chpSource1++); } while(*chpSource2! =0)/*在chpDestination后继续写入chpSource2*/ { *(chpTempdest++)=*(chpSource2++); } *chpTempdest=0;/*指针位置归零*/ returnchpDestination; } /*计算字符串的值,返回实数值*/ doubleVal_f(char*chpSource) { doublenResult=0.; charstrTmp[Max]; strcpy(strTmp,chpSource); if(strTmp[0]=='#')/*将'#'转译为'-'负号*/ { strTmp[0]='-'; } nResult=atof(strTmp);/*字符串转为实数*/ if(Debug)printf("...ConversionStringtoDouble: %s->%s->%f\n",chpSource,strTmp,nResult); returnnResult; } 希望以上资料对你有所帮助,附励志名言3条: 1、上帝说: 你要什么便取什么,但是要付出相当的代价。 2、目标的坚定是性格中最必要的力量源泉之一,也是成功的利器之一。 没有它,天才会在矛盾无定的迷径中徒劳无功。 3、当你无法从一楼蹦到三楼时,不要忘记走楼梯。 要记住伟大的成功往往不是一蹴而就的,必须学会分解你的目标,逐步实施。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四则运算 计算器 15 word