VC++ - mfc编计算器+源代码(9)
王井泉 《计算器程序设计》 第31页 共36页
}
void CMyDlg::OnSqr() {
UpdateData(TRUE);//把编辑框显示的字符串传给相应的变量m_strResult double result;//定义一个双精度型变量result,用来获取进行了sqrt运算的结果 result=sqrt(GetaStr(m_strResult));
//先调用GetaStr函数用来把字符串变为数字,再进行sqrt运算,把结果赋给result
m_strResult.Format(\
//调用Format函数,把result转化为字符串并赋给m_strResult
OperatorPressed=true;
//把bool变量OperatorPressed的值改为true,再次输入数字时,覆盖掉现在的m_strResult UpdateData(FALSE);//把字符串变量m_strResult传给编辑框 }
void CMyDlg::OnDot() {
UpdateData(TRUE);
//把编辑框显示的字符串传给相应的变量m_strResult
if(OperatorPressed==true||Restarted==true)
//在按下了\等按忸时, \
else //在按下数字键的情况下,则在m_strResult后加\
m_strResult+=\
m_strResult=\ //变量m_strResult的值为按下的按忸
OperatorPressed=false;
//把bool变量OperatorPressed和Restarted的值改为false
Restarted=false;
UpdateData(FALSE); //把字符串变量m_strResult传给编辑框
王井泉 《计算器程序设计》 第32页 共36页
}
double CMyDlg::GetaStr(CString str) { }
void CMyDlg::OnLbr() {
UpdateData(TRUE); int i=0;
double rate=10.0,itemp=0.0;
for(;i return (itemp); if(isdigit(str.GetAt(i))) //如果字符串str.GetAt(i)的内容是整数 { } else if(str.GetAt(i)=='.') //如果str.GetAt(i)是小数点 rate=0.1; //让rate=0.1,开始计算小数部分 if(rate==10.0) //整数部分 itemp=itemp*rate+(str.GetAt(i)-'0');//获得整数 else //小数部分 { } itemp=itemp+rate*(str.GetAt(i)-'0');//获得小数 rate=rate/10; //每次让rate小10倍 //把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed==true||Restarted==true)//在按下了\ 王井泉 《计算器程序设计》 第33页 共36页 等按忸时, m_strResult=\ //变量m_strResult的值为按下的按忸\ else //在按下数字键的情况下,则在m_strResult后加\ m_strResult+=\ OperatorPressed=false; //把bool变量OperatorPressed和Restarted的值改为false } void CMyDlg::OnRbr() { UpdateData(TRUE); Restarted=false; UpdateData(FALSE); //把字符串变量m_strResult传给编辑框 //把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed==true||Restarted==true) //在按下了\等按忸时, m_strResult=\ //变量m_strResult的值为按下的按忸\ else //在按下数字键的情况下,则在m_strResult后加\ m_strResult+=\ OperatorPressed=false; //把bool变量OperatorPressed和Restarted的值改为false } void CMyDlg::On2() { Restarted=false; UpdateData(FALSE); //把字符串变量m_strResult传给编辑框 int m,n[20]; 王井泉 《计算器程序设计》 第34页 共36页 CString str; UpdateData(TRUE); //把编辑框显示的字符串传给相应的变量m_strResult m=(int)GetaStr(m_strResult); //调用GetaStr(m_strResult),用来获取m_strResult中的数字 m_strResult=\ //对m_strResult的值初始化 for(int i=0;i<=20;i++) { n[i]=m%2; //把m除2的余数保存在n[i]中 m=m/2; //把m/2的值赋给m } if(m==0) break; //当m为0时,退出循环 for(;i>=0;i--) { str.Format(\ //用Format函数把n[i]的值转化为字符串 m_strResult+=str; //把str的值加在m_strResult上 } void CMyDlg::On16() { int m; UpdateData(TRUE); } OperatorPressed=true; //把bool变量OperatorPressed的值改为true UpdateData(FALSE); //把字符串变量m_strResult传给编辑框 //把编辑框显示的字符串传给相应的变量m_strResult m=(int)GetaStr(m_strResult); //调用GetaStr(m_strResult),用来获取m_strResult中的数字 f(m); //调用f(m)函数,把十进制转化为十六进制 m_strResult=str7; //把str3的值赋给m_strResult str7=\ //把str3初始化 王井泉 《计算器程序设计》 第35页 共36页 } OperatorPressed=true; //把bool变量OperatorPressed的值改为true UpdateData(FALSE); //把字符串变量m_strResult传给编辑框 void CMyDlg::f(int n) { CString str1; int x; if((n/16)!=0) //如果n大于等于16 f(n/16); //把n除以16,进行递归调用 x=n; //把n除以16的余数赋给x if(x>=0&&x<=9){ //如果x在0到9之间 str1.Format(\ //用Format函数把x的值转化为字符串 str7+=str1;} //把str1加在str7上
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




