用C语言怎么写个计算器

2024-05-09

1. 用C语言怎么写个计算器

一、用户界面是用图形窗口还是命令行窗口。
如果是命令行窗口它的数据输入输出比较简单。
如果是图形窗口则要涉及,图形窗口相同的操作了。这个部分如果你不会,那你需要专门学习一样。

二、支持哪些计算功能。
除了加减乘除外,是否还支持其他高级的计算功能?
加减乘除的计算精度。
32位系统中,如果计算结果为不大于32位二进制的数。(64位系统则为不大于64位数)你可以直接使用C语言的相应的加减乘除表达式完成。
如果是支持超大数的运算,那就需要采取特殊手段了。

比如32位系统中,计算的数超过32位。比如两个128位数相加。
需要将128位拆分成4个32位。将每个32位作为整体。在依照数学的多位数加进行计算。
A1 B1 C1 D1
A2 B2 C2 D2
--------------

D1与D2相加(需要检测是否有进位,也就是计算结构是否有溢出)
C1与C2相加,同样要检测进位,并且要加上D1与D2结果的进位。
B1与B2相加,同样要检测进位,并且要加上C1与C2结果的进位。
B1与B2相加,同上类推。


在实际程序时,可以将用户界面与加减乘除程序分离。即用户界面的代码要与计算程序的代码分在不同的函数中。
又用户界面代码调用计算函数。计算函数将结果返回给用户界面代码。

以命令行界面为例,
用户界面代码,只是等待用户输入,将相应用户信息转换成合适的格式,
然后调用相应计算函数。
计算函数做完计算以后,返回相应数字。
用户界面代码,再将返回的数字转换成适当的格式,显示在窗口上。

用C语言怎么写个计算器

2. 用C++编写计算器

思路:
用一个变量来标记操作符(+ - * /),int flag=0;   //1为加,2为减,3为乘,4为除,0为未按操作符。
用两个CString变量来存储第一个和第二个操作数,注意如果为除时要检测第二个操作数是否为0。
随时检测输入框edit中输入的内容,最多只能有一个小数点,首先按小数点时显示为“0.”
另注意一些细节:连续操作,结果数如果有小数点,末尾为0的要全部消除0等等


实现:
edit控件:增加控件变量:m_edit新建上述button 分别更改为:IDC_0........IDC_9, IDC_AC, IDC_C , IDC_CHU(除) , IDC_C(乘) , IDC_J(减) , IDC_ADD(加) , IDC_DOT(点) , IDC_DY(等于)全局变量: CString str1, str;int flag = 0; //0为无,1为加,2为减,3为乘,4为除bool bflag = false; //输入是否为第二个操作数代码如下:void CcalcDlg::OnBnClickedAc() //AC{flag = 0;bflag = false;str1 = _T("");str = _T("");m_edit.SetWindowTextW(_T(""));}void CcalcDlg::OnBnClickedC() //C{OnBnClickedAc();}void CcalcDlg::OnBnClicked1() //1{if (bflag==true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("1");}else{str = str + _T("1");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked2() //2{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("2");}else{str = str + _T("2");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked3() //3{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("3");}else{str = str + _T("3");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked4() //4{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("4");}else{str = str + _T("4");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked5() //5{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("5");}else{str = str + _T("5");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked6() //6{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("6");}else{str = str + _T("6");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked7() //7{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("7");}else{str = str + _T("7");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked8() //8{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("8");}else{str = str + _T("8");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked9() //9{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("9");}else{str = str + _T("9");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked0() //0{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str != _T("0")){str = str + _T("0");m_edit.SetWindowTextW(str);}}void CcalcDlg::OnBnClickedDot() //点{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str.Find('.') != -1)return;if (str == _T("0") || str == _T("")){str = _T("0.");}else{str = str + _T(".");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClickedChu() //除{if (str != _T("")){flag = 4;bflag = true;}}void CcalcDlg::OnBnClickedCheng() //乘{if (str != _T("")){flag = 3;bflag = true;}}void CcalcDlg::OnBnClickedJ() //减{if (str != _T("")){bflag = true;flag = 2;}}void CcalcDlg::OnBnClickedAdd() //加{if (str != _T("")){flag = 1;bflag = true;}}void CcalcDlg::OnBnClickedDy() //等于{double a, b;b = _ttof(str);a = _ttof(str1);CString s;switch (flag){case 1: //加s.Format(_T("%f"), a + b);break;case 2: //减s.Format(_T("%f"), a - b);break;case 3: //乘s.Format(_T("%f"), a * b);break;case 4: //除if (str != _T("0")){s.Format(_T("%f"), a / b);}else{MessageBox(_T("除数为0"));OnBnClickedAc();}break;default:s = _T("");}int f = s.Find('.');if (f != -1){int i = s.GetLength();while ('0' == s.GetAt(i - 1)){s.Delete(i - 1, 1);i--;}i = s.GetLength();if ('.' == s.GetAt(i - 1)){s.Delete(i - 1, 1);}}m_edit.SetWindowTextW(s);str = _T("");str1 = _T("");flag = 0;bflag = false;}

3. 如何用C++编写计算器

思路:
用一个变量来标记操作符(+ - * /),int flag=0;   //1为加,2为减,3为乘,4为除,0为未按操作符。
用两个CString变量来存储第一个和第二个操作数,注意如果为除时要检测第二个操作数是否为0。
随时检测输入框edit中输入的内容,最多只能有一个小数点,首先按小数点时显示为“0.”
另注意一些细节:连续操作,结果数如果有小数点,末尾为0的要全部消除0等等


实现:
edit控件:增加控件变量:m_edit新建上述button 分别更改为:IDC_0........IDC_9, IDC_AC, IDC_C , IDC_CHU(除) , IDC_C(乘) , IDC_J(减) , IDC_ADD(加) , IDC_DOT(点) , IDC_DY(等于)全局变量: CString str1, str;int flag = 0; //0为无,1为加,2为减,3为乘,4为除bool bflag = false; //输入是否为第二个操作数代码如下:void CcalcDlg::OnBnClickedAc() //AC{flag = 0;bflag = false;str1 = _T("");str = _T("");m_edit.SetWindowTextW(_T(""));}void CcalcDlg::OnBnClickedC() //C{OnBnClickedAc();}void CcalcDlg::OnBnClicked1() //1{if (bflag==true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("1");}else{str = str + _T("1");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked2() //2{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("2");}else{str = str + _T("2");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked3() //3{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("3");}else{str = str + _T("3");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked4() //4{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("4");}else{str = str + _T("4");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked5() //5{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("5");}else{str = str + _T("5");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked6() //6{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("6");}else{str = str + _T("6");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked7() //7{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("7");}else{str = str + _T("7");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked8() //8{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("8");}else{str = str + _T("8");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked9() //9{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str == _T("0")){str = _T("9");}else{str = str + _T("9");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClicked0() //0{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str != _T("0")){str = str + _T("0");m_edit.SetWindowTextW(str);}}void CcalcDlg::OnBnClickedDot() //点{if (bflag == true){str1 = str;str = _T("");bflag = false;m_edit.SetWindowTextW(_T(""));}if (str.Find('.') != -1)return;if (str == _T("0") || str == _T("")){str = _T("0.");}else{str = str + _T(".");}m_edit.SetWindowTextW(str);}void CcalcDlg::OnBnClickedChu() //除{if (str != _T("")){flag = 4;bflag = true;}}void CcalcDlg::OnBnClickedCheng() //乘{if (str != _T("")){flag = 3;bflag = true;}}void CcalcDlg::OnBnClickedJ() //减{if (str != _T("")){bflag = true;flag = 2;}}void CcalcDlg::OnBnClickedAdd() //加{if (str != _T("")){flag = 1;bflag = true;}}void CcalcDlg::OnBnClickedDy() //等于{double a, b;b = _ttof(str);a = _ttof(str1);CString s;switch (flag){case 1: //加s.Format(_T("%f"), a + b);break;case 2: //减s.Format(_T("%f"), a - b);break;case 3: //乘s.Format(_T("%f"), a * b);break;case 4: //除if (str != _T("0")){s.Format(_T("%f"), a / b);}else{MessageBox(_T("除数为0"));OnBnClickedAc();}break;default:s = _T("");}int f = s.Find('.');if (f != -1){int i = s.GetLength();while ('0' == s.GetAt(i - 1)){s.Delete(i - 1, 1);i--;}i = s.GetLength();if ('.' == s.GetAt(i - 1)){s.Delete(i - 1, 1);}}m_edit.SetWindowTextW(s);str = _T("");str1 = _T("");flag = 0;bflag = false;}

如何用C++编写计算器

4. 用c语言 (c++) 编写计算器程序

 我们平时进行数学运算都是用计算器完成的,那么如何用C语言编写一个计算器呢?下面我给大家分享一下。
                                                                                                                                                                                    工具/材料                                                                          Dev C++
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               01                                                                                                              首先我们需要在Dev C++软件中创建一个C语言项目,项目类型选择控制台程序,如下图所示
                                                                                                                                                                                                                                                                                                                                                                                                                  02                                                                                                              接下来我们在项目下面新建C语言文件,如下图所示
                                                                                                                                                                                                                                                                                                                                                                                                                  03                                                                                                              然后我们在C文件中写入计算器逻辑代码,主要是让用户输入计算方式,然后程序自动计算,如下图所示
                                                                                                                                                                                                                                                                                                                                                                                                                  04                                                                                                              接下来我们点击运行菜单,选择下拉菜单中的运行选项,如下图所示
                                                                                                                                                                                                                                                                                                                                                                                                                  05                                                                                                              最后在弹出的界面中我们输入要计算的公式,程序就会自动计算,如下图所示
                                                                                                                                                                                                                                                                                                                                                                                                                                              

5. c语言计算

计算顺序确实是:c=(--a)+(--a)+(a++);
以a=10为例:
第一个(--a)之后,a=9,c=9;
第二个(--a)之后,a=8,c=9+8=17;
最后加上(a++),先算c=17+a=25,a再自加,所以a=9

c语言计算

6. C语言计算。

n的值不变,还是2

&&运算的特点如下:
1. 运算是左结合的,先计算左表达式,再计算右表达式
2. 注意一下,如果&&的左表达式为假,则整个&&表达式返回假,不会再计算右表达式!!

所以:
表达式(m=a>b)&&(n=c>d)
先计算(m=a>b),由于a=5,b=6,所以a>b为假,返回0
m=a>b也就变为m=0,所以左表达式为假
表达式(m=a>b)&&(n=c>d)直接返回假,不再计算右表达式
所以n的值不会发生变化

7. c语言计算

x+++y++
=(x++)+(y++)
=5

c语言计算

8. C语言编程 计算

VB运算符优先级:

6+10 mod 10\9/3+2^3
=6+10 mod 10\3+8
=6+10 mod 3+8
=6+ 1 +8
=15