《《则运算计算器》word版》由会员分享,可在线阅读,更多相关《《则运算计算器》word版(6页珍藏版)》请在金锄头文库上搜索。
1、四则运算计算器一、程序功能简介 可以计算整数四则运算,例如:7+5*(3+4)二、课程设计要求 (1)按要求在提供的框架程序源程序的基础上对程序进行修改、补充,并调试通过。 (2)修改主程序结构,使程序可以反复运算,直到选择退出为止。 (3)增加文件的输入输出功能,是计算过的式子和结果可以根据需要设置命令存储到文件中,同时也可以直接从文件中输入四则运算的式子,运算后,结果输出到原文件中。 (4)扩充程序功能,使程序适合实型数运算。 (5)增加程序的判断功能,当有非法的输入时(如字母等),给出提示信息并退出运算。 (6)扩充程序功能,使程序可以进行关系表达式(=,=,=等)的运算,运算结果为 T
2、RUE 或 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 模式,修正
3、符号优先级问题。20060707 郁闷,在英化程序 -_-/ .在 Do_File() 增加输出文件另存功能.20060708 .20060709 .20060710 强化 strChk(),增加结果整形识别,增加 != 处理,文件名非法字符校验。最后更新 20060710*/* = */* 头文件声明 */#include /* In Out printf(). */#include /* pow(M,n) 开 Mn */#include /* strcpy. */#include /* atof. */#include /* getch(). */#define Max 256 /* 表达
4、式长度定义,可以在这里调节 */* = */* 函数声明 */ /* 计算字符串(不带括号的),计算的核心部分*/char *Calculate_f(char *chpString);/* 主操作过程,输入式子串,返回 double 型结果 */double Operation(char *chpString);/* Source1、Source2 加起来到 Destination 中*/char *AddStrings_f(char *chpDestination, char *chpSource1, char *chpSource2);/* 寻找 char_to_find 在 Source
5、 中的位置,后移一位 */int FindChar(char *chpSource, char chCharToFind);/* 获取字符串的长度 */int Len_f(char *chpSource);/* 将 Source 左边 Length 个字符放在 Destination 中*/char *Left_f(char *chpSource, char *chpDestination, int nLength);/* 将 Source 右边 Length 个字符放在 Destination 中*/char *Right_f(char *chpSource, char *chpDestin
6、ation, int nLength) ;/* 将 Source 中从 Start 开始 Length 长度的字符串截下来放在 Destination 中*/char *Midstr_f(char *chpSource, char *chpDestination, int nStart, int nLength);/* 在字符串中删除一个字符 del + */void DelChar(char *chpString,int sPos);/* 在字符串中插入一个字符 */int InsChar(char *chpString,int sPos,char sChar);/* 替换字符串中的某个字符
7、 */void StrReplace(char *chpString,char strOld ,char strNew);/* 将实数值变为字符串*/char *Str_f(double nValue, char *chpDestination);/* 计算字符串的值,返回实数值 */double Val_f(char *chpSource) ;/* = */* 主菜单. */int Menu_Sel();/* 手工输入表达式求值 */int Do_Press();/* 文件导入表达式求值 */int Do_File();/* 文件检查 0 重新输入,1 继续 */int FileChk(ch
8、ar *FN);/* 式子的合法性检查 0 含有非法字符,1 正常 2 关系运算 */int StrChk(char *chpSource);/* 关系运算 */int Nexus(char strIn);/* 显示关于 */void Show_About();/* = */* 全局变量声明 */int Debug=0; /* 调试信息显示开关 0 不显示,1 显示 */char *TF_Info3=FALSE,TURE,Error; /* 关系运算信息 */* 将 Source 左边 Length 个字符放在 Destination 中*/char *Left_f(char *chpSour
9、ce, char *chpDestination, int nLength) *(chpDestination+ -nLength+1)=0; /* 设置目标字符串最后一个为 NULL*/ while (nLength=0) /* 直到目标字符串的最后一个 */ *(chpDestination+nLength)=*(chpSource+nLength-); return chpDestination;/* 将 Source 中从 Start 开始 Length 长度的字符串截下来放在 Destination 中 */char *Midstr_f(char *chpSource, char *
10、chpDestination, int nStart, int nLength) chpSource+=nStart-1; /* 设置源起点 */ *(chpDestination+-nLength+1)=0; /* 设置目标字符串最后一个为 NULL */ while (nLength=0) /* 直到目标字符串的最后一个 */ *(chpDestination+nLength)=*(chpSource+nLength-); return chpDestination;/* 将 Source 右边 Length 个字符放在 Destination 中 */char *Right_f(char
11、 *chpSource, char *chpDestination, int nLength) while (*chpSource != 0) chpSource+; /* 将源指针移到最后 */ chpSource-=nLength; /* 将源指针跳到开始复制点 */ *(chpDestination+-nLength+1)=0; /* 设置目标字符串最后一个为 NULL */ while (nLength=0) /* 直到目标字符串的最后一个 */ *(chpDestination+nLength)=*(chpSource+nLength-); return chpDestination
12、;/* 在字符串中删除一个字符 del + */void DelChar(char *chpString,int sPos) char sBufMax; int nCount; strcpy(sBuf,chpString); for(nCount=sPos;sBufnCount;nCount+) sBufnCount=sBufnCount+1; strcpy(chpString,sBuf);/* 在字符串中插入一个字符 */int InsChar(char *chpString,int sPos,char sChar) char sBufMax; int iLen; int nCount; strcpy(sBuf,chpString); iLen=strlen(sBuf); if(iLen=sPos;nCount-) sBufnCount+1=sBufnCount; sBufsPos=sChar; strcpy(chpString,sBuf); else return