1、图1.6 100转化为十六进制后的结果(4)另外,计算器还可以实现一些简单的函数运算,实现的操作和十六进制/二进制转化类似,是先输入一个数字,在单击想要进行的函数的按钮,单击后就会在编辑框中显示运算的结果。2 算法的实现2.1把字符串转化为数字和运算符的算法(1)如果字符串中只有数字。这个情况用来实现一些简单函数的运算。在进行简单函数的运算时,都是先输入一个数字,再单击要进行运算的按钮,然后编辑框显示运算的结果。程序用了一个函数double GetaStr(CString str)来实现这个功能,该函数以编辑框变量m_strResult为实参,再得到m_strResult的值后,调用GetAt
2、函数,一个字符一个字符的读取,如果碰到整数,执行“itemp=itemp*rate+(str.GetAt(i)-0);”,其中变量itemp初始值为0,变量rate初始值为10,如果碰到了小数点,改变rate的值,使其等于0.1,再向后继续读取,再碰到整数时执行“itemp=itemp+rate*(str.GetAt(i)-rate=rate/10;”,函数的最后确定返回值为itemp。以下是这个函数的代码2:double CMyDlg:GetaStr(CString str) int i=0; double rate=10.0,itemp=0.0; for(;i=0;i-) str.Form
3、at(%d,ni); /用Format函数把ni的值转化为字符串 m_strResult+=str; /把str的值加在m_strResult上OperatorPressed=true;/把bool变量OperatorPressed的值改为trueUpdateData(FALSE); /把字符串变量m_strResult传给编辑框(2)转化为十六进制的算法。如果要转化的数字大于16,则把这个数字除以16并记录余数,继续将最新的商除以16并记录余数,当商为0以后,把大于9的数字转化为字母记录,这样得到的字符串就是十六进制数了。函数代码如下;On16() int m;f(m);/调用f(m)函数,
4、把十进制转化为十六进制 m_strResult=str7; /把str7的值赋给m_strResultstr7= /把str7初始化 /把bool变量OperatorPressed的值改为true /把字符串变量m_strResult传给编辑框f(int n)CString str1;int x; if(n/16)!=0) /如果n大于等于16 f(n/16); /把n除以16,进行递归调用 x=n%16; /把n除以16的余数赋给x if(x=0&x=9) /如果x在0到9之间str1.Format(,x); /用Format函数把x的值转化为字符串str7+=str1; /把str1加在s
5、tr3上str7+=char(x+55); /把x的值加55(利用ASCII码)再转化为字符型加在str3上 3 参考文献1谭浩强. C+程序设计.清华大学出版社2004.2郑阿奇.Visual C+教程.机械工业出版社 20043J.Gleen Brookshear.计算机科学概论.人民邮电出版社 2003.4 程序代码OnNo0() UpdateData(TRUE); if(OperatorPressed=true|Restarted=true)/在按下了=,ACsqrttansin等按忸时, m_strResult=0 /变量m_strResult的值为按下的按忸 else /在按下数字
6、键的情况下,则在m_strResult后加 m_strResult+= OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE);OnNo1() /把编辑框显示的字符串传给相应的变量m_strResult1 /变量m_strResult的值为按下的按忸 /把bool变量OperatorPressed和Restarted的值改为falseOnNo2() 2 /在按下数字键的情况下,则在m_strResult后加OnNo3() 3 /把bool变量OperatorPress
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1