c语言简单运算
1. c语言的四种基本运算是什么
,-1,0,1,2,...),分为有符号整型(sign
int)、无符号整型(unsign
int)(即数学意义上的正数)、短整型(
short
int
)以及长整型(long
int),而我们通常定义的int系统默认为sign
int;
而上述四种类型int的主要区别是数值范围不同,其中sign
int
的范围是
-32767到32767;unsign
int
的范围是
0到65534;而
long
int
范围最大,short
int
范围最小,你可以去查书。也就是说你所输入的数据不能超过它的范围。
(2)float(单精度)、double(双精度)以及long
double(长双精度),即数学意义上的实数(包括整数和所有小数);
而上述三种主要区别也是数值范围不同,long
double
的范围最大,其次是double
,最小是
float。
选取数据类型主要是看你所用数据是整数还是实数,是正数还是负数,以及所用数据的范围而选用不同的数据类型。
方法一:(调用系统函数库)
#include
"stdio.h"
#include
"math.h"
//调用系统函数库
main()
{
float
p,r,n;
printf("请输入r和n的值\n");
scanf("%f,%f",&r,&n);
p=pow((1+r),n);
//这就是所调用的函数
printf("%f\n",p);
}
方法二:(使用循环求值)
#include
"stdio.h"
main()
{
float
p,r,n,i;
printf("请输入r和n的值\n");
scanf("%f,%f",&r,&n);
for(p=1,i=1;i<=n;i++)
//使用循环求值
p=p*(1+r);
printf("%f\n",p);
}
另外,站长团上有产品团购,便宜有保证
2. 简单的用c语言写一个计算器程式,加减乘除能用就好
简单的用c语言写一个计算器程式,加减乘除能用就好 #include"stdio.h"拦掘激
void main()
{
float a,b,c;
char e;
printf("input a,e,b\n");/*输入两个数和符号,例如3+8*/
scanf("%f%c%f",&a,&e,&b);
switch(e)
{
case '+':c=a+b;break;
case '-':c=a-b;break;
case '*':c=a*b;break;
case '/':
if(b==0.0) printf("error\n");
else c=a/b;break;
}
printf("%f%c%f=%f",a,e,b,c);
}
如何用vc++编写一个简单的(只有加减乘除)计算器程式?
先设定接口如下
加法按钮程式码
void CMy03Dlg::OnBnClickedButton1()
{
TODO:在此新增控制元件通知处理程式程式码
UpdateData(TRUE);
m_Nub3=m_Nub1+m_Nub2;
UpdateData(FALSE);
}
减法按钮程式码
void CMy03Dlg::OnBnClickedButton2()
{
TODO:在此新增控制元件通知处理程式程式码
UpdateData(TRUE);
m_Nub3=m_Nub1-m_Nub2;
UpdateData(FALSE);
}
乘法按钮程式码
void CMy03Dlg::OnBnClickedButton3()
{
TODO:在此新增控制元件通知处理程式程式码
UpdateData(TRUE);
m_Nub3=m_Nub1*m_Nub2;
UpdateData(FALSE);
}
除法按钮程式码
void CMy03Dlg::OnBnClickedButton4()
{
TODO:在此新增控制元件通知处理程式程式码
UpdateData(TRUE);
if(m_Nub2!=0)
m_Nub3=m_Nub1 / m_Nub2;
else
AfxMessageBox("被除数不能为0");
UpdateData(FALSE);
}
清除按钮程式码
void CMy03Dlg::OnBnClickedButton5()
{
TODO:在此新增控制元件通知处理程式程式码
UpdateData(TRUE);
m_Nub3=0;
m_Nub1=0;
m_Nub2=0;
UpdateData(FALSE);
}
结束按钮程式码
void CMy03Dlg::OnBnClickedButton6()
{
TODO:在此新增控制元件通知处理程式简袜程式码
CDialog::OnOK();
}
如果只允许在输入框中输入资料应该怎样处理?
制作托盘程式
目的:在工作列中建立一个图示,使该程式永远驻留在记忆体中。例如邮件检查程式可以作为驻留程式,一旦有邮件来了,就可以接收邮件。
Shell_NotifyIcon函式传送讯息来增加、删除、修散历改工作列的图示
BOOL TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip)
{
BOOL res;
NOTIFYICONDATA tnd;
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = hWnd;
tnd.uID = IDI_ICON1;
tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage = WM_MY_TRAY_NOTIFICATION;
tnd.hIcon = hIcon;
lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
res = Shell_NotifyIcon(dwMessage, &tnd); dwMessage为NIM_ADD从工作列中新增图示、NIM_DELETE从工作列中删除图示、NIM_MODIFY改变工作列中图示
if (hIcon)
DestroyIcon(hIcon);
return res;
}
定义一个回拨讯息:WM_MY_TRAY_NOTIFICATION
在DLG的CPP档案中,
#define WM_MY_TRAY_NOTIFICATION WM_USER+100
为对话方块新增讯息对映ON_MESSAGE(WM_MY_TRAY_NOTIFICATION,OnTrayNotification)
在DLG的标头档案中应该有
public:
long m_Nub1;
float m_Nub3;
CBitmapButton Button;
afx_msg void OnBnClickedButton1();
long m_Nub2;
afx_msg void OnBnClickedButton2();
afx_msg void OnBnClickedButton4();
afx_msg void OnBnClickedButton5();
afx_msg void OnBnClickedButton3();
afx_msg void OnBnClickedButton6();
afx_msg void OnBnClickedButton7();
afx_msg LRESULT OnTrayNotification(WPARAM wparam, LPARAM lparam);
在DLG的CPP档案中应该有
BEGIN_MESSAGE_MAP(CMailCheckDlg, CDialog)
……
ON_MESSAGE(WM_MY_TRAY_NOTIFICATION,OnTrayNotification)
……
END_MESSAGE_MAP()
并定义一个回拨讯息函式
LRESULT CMailCheckDlg::OnTrayNotification(WPARAM wparam, LPARAM lparam)
{
switch (lparam )
{
case WM_RBUTTONUP:
case WM_LBUTTONDBLCLK:修改不同的按钮处理事件,以观察图示退出效果。
ShowWindow(SW_SHOW);
TrayMessage(m_hWnd, NIM_DELETE, NULL, "");从工作列中删除图示
}
return 0;
}
在对话方块视窗上新增“驻留”按钮,双击按钮新增程式码
void CMailCheckDlg::OnBnClickedButton1()
{
TODO:在此新增控制元件通知处理程式程式码
下面程式向工作列新增图示
TrayMessage(m_hWnd, NIM_ADD, NULL, "计算器程式");
TrayMessage(m_hWnd, NIM_MODIFY, m_hIcon, "计算器程式");
ShowWindow(SW_HIDE);
用MFC编写一个简单的加减乘除计算器
我有程式,加31782771群
c语言计算器程式设计包含加减乘除简单的函式运算
实用计算器之程式设计
[摘 要]多用计算器的构思及设计程式码
[关键词]多用计算器;设计
数值计算可以说是日常最频繁的工作了,WIN98提供了“计算器”软体供使用者使用,该软体可以处理一般的一步四则运算,例如:3+2、5/3等等,但在日常中使用者经常遇到多步四则运算问题,例如:3+4*5-4/2,45*34/2+18*7等等,那么该个计算器就无法胜任了,作者制作了一个实用的计算器,该计算器新增不少功能:(程式接口如图)
1.可以实现连续的四则运算
2.可以实现输入式子的显示
3.可以方便计算个人所得税
4.鼠标、键盘均可输入资料
5.操作接口友好
6.击键可发声
构建该个计算器所需研究及解决的核心问题有如下几个:1、连乘求值?2、字符显示 3、键盘输入?4、击键发声?5、个人所得税法规,为了使大家对程式有更一步认识,现将程式码提供给读者参考:
*定义阵列及窗体变数
Dim number2(0 To 50) As Double
Dim number(0 To 50) As Double
Dim z As Integer
Dim k As Integer, r As Integer
Dim j As Integer
Dim str As String
*呼叫名为“playsound”的API函式
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hMole As Long, ByVal dwFlags As Long) As Long
Private Const SND_FILENAME = &H20000?
Private Const SND_ASYNC = &H1?
Private Const SND_SYNC = &H0
*判断通用过程
Sub pianan(p As String)
r = 0
Dim i As Integer, l As Integer, h As Integer
h = 0
i = 1
If InStr(Trim$(p), "*") <> 0 Then
k = k + 1
End If
If InStr(Trim$(p), "/") <> 0 Then
r = r + 1
End If
End Sub
*连乘通用过程(略)
*各按钮事件过程
Private sub Command1_Click(Index As Integer)
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Text1.Text = Text1.Text + Command1(Index).Caption
Text2.Text = Text2.Text + Command1(Index).Caption
Text1.SetFocus
End Sub
rivate sub Command10_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
str = Text3.Text
End Sub
Private sub Command11_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Text3.Text = str
End Sub
rivate sub Command2_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Dim totle As Double
Dim n As Integer
Call pianan(Text1.Text)
If k >= 1 Or r >= 1 Then
Call liancheng(totle)
number2(z) = totle
If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then
number2(z) = -totle
End If
k = 0: r = 0
Else
number2(z) = Val(Text1.Text)
End If
Text1.Text = ""
Text2.Text = Text2 + "+"
z = z + 1
Text1.SetFocus
End Sub
rivate sub Command3_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Dim totle As Double
Dim n As Integer
Call pianan(Text1.Text)
If k >= 1 Or r >= 1 Then
Call liancheng(totle)
number2(z) = totle
If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then
number2(z) = -totle
End If
k = 0: r = 0
Else
number2(z) = Val(Text1.Text)
End If
Text1.Text = ""
Text2.Text = Text2 + "-"
Text1.Text = Text1.Text & "-"
z = z + 1
Text1.SetFocus
End Sub
Private sub Command4_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Text2.Text = Text2.Text + "*"
Text1.Text = Text1.Text + "*"
Text1.SetFocus
End Sub
rivate sub Command5_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Text2.Text = Text2 + "/"
Text1.Text = Text1 + "/"
Text1.SetFocus
End Sub
Private sub Command6_Click()
PlaySound App.Path & "\sound.wav", 0, SND_SYNC
Dim totle As Double
Dim n As Integer
Call pianan(Text1.Text)
If k >= 1 Or r >= 1 Then
Call liancheng(totle)
number2(z) = totle
If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then
number2(z) = -totle
End If
k = 0: r = 0
Else
number2(z) = Val(Text1.Text)
End If
Text1.Text = ""
z = z + 1
Dim dengyu As Double
Dim v As Integer
For v = 0 To 50
dengyu = dengyu + number2(v)
Next v
If dengyu < 0 Then
Text3.ForeColor = &HFF&
Else
Text3.ForeColor = &HFF0000
End If
Text3.Text = dengyu
Text1.SetFocus
If Len(Text3.Text) >= 14 Then
calcresult.Show
End If
End Sub
rivate sub Command7_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
z = 0: k = 0: r = 0: j = 0
Dim i As Integer
For i = 0 To 50
number(i) = 0
number2(i) = 0
Next i
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End Sub
rivate sub Command8_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
If Val(Text3.Text) = 0 Then
MsgBox "除数不能为0!"
Exit Sub
End If
Text3.Text = 1 / Val(Text3.Text)
End Sub
Private sub Command9_Click()
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Text3.ForeColor = &HFF0000
Text3.Text = Val(Text3.Text) * Val(Text3.Text)
End Sub
rivate sub muninter_Click()
Dim i
i = Shell("C:\Program Files\InterExplorer\iexplore.exe", vbMaximizedFocus)
End Sub
rivate sub munmp3_Click()
Dim i
i = Shell("C:\Program Files\Windows Media Player\mplayer2", vbNormalNoFocus)
End Sub
Private sub mun *** _Click()
Dialog.Show
End Sub
rivate sub muntax_Click()
tax.Show
End Sub
rivate sub munver_Click()
ver.Show
End Sub
rivate sub notepad_Click()
Dim i
i = Shell("c:\windows\notepad", vbNormalFocus)
End Sub
Private sub Text1_KeyPress(KeyAscii As Integer)
PlaySound App.Path & "\start.wav", 0, SND_SYNC
Dim num As Integer
num = Val(KeyAscii)
If num > 47 And num < 58 Then
Text1.Text = Text1.Text + CStr(num - 48)
Text2.Text = Text2.Text + CStr(num - 48)
End If
If num = 46 Then
Text1.Text = Text1.Text + "."
Text2.Text = Text2.Text + "."
End If
If KeyAscii = 43 Then
Dim totle As Double
Dim n As Integer
Call pianan(Text1.Text)
If k >= 1 Or r >= 1 Then
Call liancheng(totle)
number2(z) = totle
If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then
number2(z) = -totle
End If
k = 0: r = 0
Else
number2(z) = Val(Text1.Text)
End If
Text1.Text = ""
Text2.Text = Text2 + "+"
z = z + 1
End If
If KeyAscii = 45 Then
Call pianan(Text1.Text)
If k >= 1 Or r >= 1 Then
Call liancheng(totle)
number2(z) = totle
If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then
number2(z) = -totle
End If
k = 0: r = 0
Else
number2(z) = Val(Text1.Text)
End If
Text1.Text = ""
Text2.Text = Text2 + "-"
Text1.Text = Text1.Text & "-"
z = z + 1
End If
If KeyAscii = 42 Then
Text2.Text = Text2.Text + "*"
Text1.Text = Text1.Text + "*"
End If
If KeyAscii = 47 Then
Text2.Text = Text2.Text + "/"
Text1.Text = Text1.Text + "/"
End If
If KeyAscii = vbKeyReturn Then
PlaySound App.Path & "\sound.wav", 0, SND_SYNC
Call pianan(Text1.Text)
If k >= 1 Or r >= 1 Then
Call liancheng(totle)
number2(z) = totle
If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then
number2(z) = -totle
End If
k = 0: r = 0
Else
number2(z) = Val(Text1.Text)
End If
Text1.Text = ""
z = z + 1
Dim dengyu As Double
Dim v As Integer
For v = 0 To 50
dengyu = dengyu + number2(v)
Next v
If dengyu < 0 Then
Text3.ForeColor = &HFF&
Else
Text3.ForeColor = &HFF0000
End If
Text3.Text = dengyu
End If
If KeyAscii = vbKeyEscape Then
z = 0: k = 0: r = 0: j = 0
Dim i As Integer
For i = 0 To 50
number(i) = 0
number2(i) = 0
Next i
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End If
If Len(Text3.Text) >= 14 Then
calcresult.Show
End If
End Sub
rivate sub Text3_Change()
tax2.Text1 = Text3.Text
End Sub
用c语言编写能运算加减乘除的计算器程式,用到栈
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include "math.h"
expression evaluate
#define iMUL 0
#define iDIV 1
#define iADD 2
#define iSUB 3
#define iCap 4
#define LtKH 5
#define RtKH 6
#define MaxSize 100
void iPush(float);
float iPop();
float StaOperand[MaxSize];
int iTop=-1;
char Srcexp[MaxSize];
char Capaexp[MaxSize];
char RevPolishexp[MaxSize];
float NumCapaTab[26];
char validexp[]="*/+-()";
char NumSets[]="0123456789";
char StackSymb[MaxSize];
int operands;
void NumsToCapas(char [], int , char [], float []);
int CheckExpress(char);
int PriorChar(char,char);
int GetOperator(char [], char);
void counterPolishexp(char INexp[], int slen, char Outexp[]);
float CalcRevPolishexp(char [], float [], char [], int);
void main()
{
int ilen;
float iResult=0.0;
printf("enter a valid number string:\n");
memset(StackSymb,0,MaxSize);
memset(NumCapaTab,0,26); A--NO.1, B--NO.2, etc.
gets(Srcexp);
ilen=strlen(Srcexp);
printf("source expression:%s\n",Srcexp);
NumsToCapas(Srcexp,ilen,Capaexp,NumCapaTab);
printf("Numbers listed as follows:\n");
int i;
for (i=0; i<operands; ++i)
printf("%.2f ",NumCapaTab[i]);
printf("\nCapaexp listed in the following:\n");
printf("%s\n",Capaexp);
ilen=strlen(Capaexp);
counterPolishexp(Capaexp,ilen,RevPolishexp);
printf("RevPolishexp:\n%s\n",RevPolishexp);
ilen=strlen(RevPolishexp);
iResult=CalcRevPolishexp(validexp, NumCapaTab, RevPolishexp,ilen);
printf("\ncounterPolish expression:\n%s%.6f\n",Srcexp,iResult);
}
void iPush(float value)
{
if(iTop<MaxSize) StaOperand[++iTop]=value;
}
float iPop()
{
if(iTop>-1)
return StaOperand[iTop--];
return -1.0;
}
void NumsToCapas(char Srcexp[], int slen, char Capaexp[], float NumCapaTab[])
{
char ch;
int i, j, k, flg=0;
int sign;
float val=0.0,power=10.0;
i=0; j=0; k=0;
while (i<slen)
{
ch=Srcexp[i];
if (i==0)
{
sign=(ch=='-')?-1:1;
if(ch=='+'||ch=='-')
{
ch=Srcexp[++i];
flg=1;
}
}
if (isdigit(ch))
{
val=ch-'0';
while (isdigit(ch=Srcexp[++i]))
{
val=val*10.0+ch-'0';
}
if (ch=='.')
{
while(isdigit(ch=Srcexp[++i]))
{
val=val+(ch-'0')/power;
power*=10;
}
} end if
if(flg)
{
val*=sign;
flg=0;
}
} end if
write Capaexp array
write NO.j to array
if(val)
{
Capaexp[k++]='A'+j;
Capaexp[k++]=ch;
NumCapaTab[j++]=val; A--0, B--1,and C, etc.
}
else
{
Capaexp[k++]=ch;
}
val=0.0;
power=10.0;
i++;
}
Capaexp[k]='\0';
operands=j;
}
float CalcRevPolishexp(char validexp[], float NumCapaTab[], char RevPolishexp[], int slen)
{
float sval=0.0, op1,op2;
int i, rt;
char ch;
recursive stack
i=0;
while((ch=RevPolishexp[i]) && i<slen)
{
switch(rt=GetOperator(validexp, ch))
{
case iMUL: op2=iPop(); op1=iPop();
sval=op1*op2;
iPush(sval);
break;
case iDIV: op2=iPop(); op1=iPop();
if(!fabs(op2))
{
printf("overflow\n");
iPush(0);
break;
}
sval=op1/op2;
iPush(sval);
break;
case iADD: op2=iPop(); op1=iPop();
sval=op1+op2;
iPush(sval);
break;
case iSUB: op2=iPop(); op1=iPop();
sval=op1-op2;
iPush(sval);
break;
case iCap: iPush(NumCapaTab[ch-'A']);
break;
default: ;
}
++i;
}
while(iTop>-1)
{
sval=iPop();
}
return sval;
}
int GetOperator(char validexp[],char oper)
{
int oplen,i=0;
oplen=strlen(validexp);
if (!oplen) return -1;
if(isalpha(oper)) return 4;
while(i<oplen && validexp[i]!=oper) ++i;
if(i==oplen || i>=4) return -1;
return i;
}
int CheckExpress(char ch)
{
int i=0;
char ;
while((=validexp[i]) && ch!=) ++i;
if (!)
return 0;
return 1;
}
int PriorChar(char curch, char stach)
{
栈外优先顺序高于(>)栈顶优先顺序时,才入栈
否则(<=),一律出栈
if (curch==stach) return 0; 等于时应该出栈
else if (curch=='*' || curch=='/')
{
if(stach!='*' && stach!='/')
return 1;
}
else if (curch=='+' || curch=='-')
{
if (stach=='(' || stach==')')
return 1;
}
else if (curch=='(')
{
if (stach==')')
return 1;
}
return 0;
}
void counterPolishexp(char INexp[], int slen, char Outexp[])
{
int i, j, k,pr;
char t;
i=0;
j=k=0;
while (INexp[i]!='=' && i<slen)
{
if (INexp[i]=='(')
StackSymb[k++]=INexp[i];
iPush(*(INexp+i));
else if(INexp[i]==')')
{
if((t=iPop())!=-1)
while((t=StackSymb[k-1])!='(')
{
Outexp[j++]=t;
k--;
}
k--;
}
else if (CheckExpress(INexp[i])) is oparator
{
printf("operator %c k=%d\n",INexp[i],k);
while (k)
{
iPush(*(INexp+i));
if(pr=PriorChar(INexp[i],StackSymb[k-1]))
break;
else
{
if ((t=iPop())!=-1)
t=StackSymb[k-1]; k--;
Outexp[j++]=t;
}
} end while
StackSymb[k++]=INexp[i]; mon process
}
else if() 变数名
{
printf("operand %c k=%d\n",INexp[i],k);
Outexp[j++]=INexp[i];
}
i++;
}
while (k)
{
t=StackSymb[k-1]; k--;
Outexp[j++]=t;
}
Outexp[j]='\0';
}
注:程式源于“网络知道”
用verilog编写一个最简单的加减乘除的计算器的程式
verilog是有加法器乘法器的。也直接识别 + - * / 符号。
mole kjasdja(a,option,b,result);
input option,a,b;
output result;
always @(a,b,option)
begin
result_r=0; 结果暂存器清零
case(option)
+:result_r=a+b;
-:result_r=a-b;
*:result_r=a*b;
/:result_r=a/b;
assign result =result_r;
endmole
大概演算法就这样。写的仓促,语法可能有误。另外除法reg型别只能储存整数部分,小数通过移位操作实现,比较麻烦。比如3/5=0.6
做的时候先3=30,然后30/5=6,然后对6在数码管的显示进行调整就好。把6显示在小数点后面1位就好
用vb编写一个计算器程式,实现加减乘除,
Dim v As Boolean
Dim s As Integer
Dim X As Double
Dim Y As Double
Private Sub Command1_Click(Index As Integer)
If Form1.Tag = "T" Then
If Index = 10 Then
Text1.Text = "0"
Else
Text1.Text = Command1(Index).Caption
End If
Form1.Tag = ""
Else
Text1.Text = Text1.Text & Command1(Index).Caption
End If
End Sub
Private Sub Command2_Click(Index As Integer)
Form1.Tag = "T"
If v Then
X = Val(Text1.Text)
v = Not v
Else
Y = Val(Text1.Text)
Select Case s
Case 0
Text1.Text = X + Y
Case 1
Text1.Text = X - Y
Case 2
Text1.Text = X * Y
Case 3
If Y <> 0 Then
Text1.Text = X / Y
Else
MsgBox ("不能以0为除数")
Text1.Text = X
v = False
End If
Case 4
Y = 0
v = False
End Select
X = Val(Text1.Text)
End If
s = Index
End Sub
Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
控制元件自己新增吧,空间名要和程式码名一致
求一简单的加减乘除计算器c++程式
#include<stdio.h>
#include<math.h>
void main()
{
float a,b;
char C;
while(1)
{
scanf("%f%c%f",&a,&C,&b);
if((C!='+')&&(C!='-')&&(C!='*')&&(C!='/'))
break;
switch(C)
{
case '+': printf("%f+%f=%f",a,b,a+b);
break;
case '-': printf("%f-%f=%f",a,b,a-b);
break;
case '*': printf("%f*%f=%f",a,b,a*b);
break;
case '/': printf("%f/%f=%f",a,b,a/b);
break;
}
}
}
想改成按1 2 3 4分别为加减乘除,只需要将程式中的+ - * / 改成1 2 3 4即可。按除了+ - * / 以外的键就会退出。
用c++语言编写一个简单的计算器程式,会加减乘除就行,本人初学不太会,特训求帮助
这个是最简单,简陋的计算器。很多情况没考虑进去,例如除数不能为0之类的,真要写完整的话程式码还要更多。
程式码如下: #include <iostream>using namespace std;int main(){ float a, b, result; char operation; cout << "请输入算式,如1+2并回车:" << endl; cin >> a >> operation >> b; switch(operation) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; default: cout << "输入非法,程式退出!" << endl; return -1; } cout << endl << "结果为:" << endl << a << operation << b << "=" << result << endl; return 0;}
知道switch函式 吗 用这个就行
建俩个int型变数 一个字符型变数
3. C语言有哪些运算符
下面按优先级从高到低的顺序总结一下各种运算符,每一条所列的各运算符具有相亮者同的优先 级,对于同一优先级的多个运算符按什么顺序计算也有说明,双目运算符就简单地用“左结 合”或“右结合”来说明了。和指针有关的运算符* & ->也在这里列出来了,以后再详细解释。
1 、标识符、常量、字符串和用()括号套起搜带来的表达式是组成表达式的最基本单元,在运算中做 操作数,优先级最世键芦高。
2、后缀运算符,包括数组取下标[]、函数调用()、结构体取成员.、指向结构体的指针取成员- >、后缀自增++、后缀自减--。如果一个操作数后面有多个后缀,按照离操作数从近到远的顺序 (也就是从左到右)依次运算,比如a.name++,先算a.name,再++,这里的.name应该看成a的 一个后缀,而不是把. 看成双目运算符。
3、单目运算符,包括前缀自增++、前缀自减--、 sizeof、类型转换()、取地址运算&、指针间接 寻址*、正号+、负号-、按位取反~、逻辑非! 。如果一个操作数前面有多个前缀,按照离操作数 从近到远的顺序(也就是从右到左)依次运算,比如!~a,先算~a,再求!。
4、乘*、除/、模%运算符。这三个运算符是左结合的。 5、加+、减-运算符。左结合。
6、移位运算符<<和>>。左结合。
7、关系运算符< > <= >=。左结合。
8、相等性运算符==和!=。左结合。
9、按位与&。左结合。
10、按位异或^。左结合。
11 、按位或|。左结合。
12、逻辑与&&。左结合。
13、逻辑或||。左结合。
14、条件运算符:?。在第 2 节 “if/else语句”讲过Dangling-else问题,条件运算符也有类似的问 题。例如a ? b : c ? d : e是看成(a ? b : c) ? d : e还是a ? b : (c ? d : e) ? C语言规 定是后者。
15、赋值=和各种复合赋值(*= /= %= += -= <<= >>= &= ^= |=)。右结合。
16、逗号运算符。左结合。
4. 用c语言编四则运算
用C++写的,用C的话,函数方面很繁琐...
实现不止是整数,小数也可以,但算式中不要有负数,结果中可以有.
2000字不够用,分两部分,前一部分一些全局变量和类的申明:
#include
<iostream.h>
#include
<string.h>
#include
<stdlib.h>
#include
<math.h>
#define
MAX
100
//定义运算优先顺序数组,1表示优先,0表示相等,-1表示非优先,2表示表达式有误
int
com_value[9][9]=
{
1,1,-1,-1,-1,1,1,1,2,
1,1,-1,-1,-1,1,1,1,2,
1,1,1,1,-1,-1,1,1,2,
1,1,1,1,-1,-1,1,1,2,
1,1,1,1,2,-1,1,1,2,
-1,-1,-1,-1,-1,-1,0,2,2,
1,1,1,1,1,2,1,1,2,
-1,-1,-1,-1,-1,-1,2,0,2,
2,2,2,2,2,2,2,2,2
};
//堆栈类模板
template
<class
type>
class
stack
{
public:
stack(){top=new
type[MAX];};
~stack(){};
type
*top;
public:
void
push(type
e){*top=e;top++;}
type
pop(){top--;return*top;}
type
GetTop(){return
*(top-1);}
int
GetTopValue(type
&e)
{
if(e=='+')return
0;else
if(e=='-')return
1;
else
if(e=='*')return
2;else
if(e=='/')return
3;
else
if(e=='^')return
4;else
if(e=='(')return
5;
else
if(e==')')return
6;else
if(e=='=')return
7;
else
return
8;
}
int
GetTopValue()
{
type
temp=GetTop();
if(temp=='+')return
0;else
if(temp=='-')return
1;
else
if(temp=='*')return
2;else
if(temp=='/')return
3;
else
if(temp=='^')return
4;else
if(temp=='(')return
5;
else
if(temp==')')return
6;else
if(temp=='=')return
7;
else
return
8;
}
type
calculate(char
s)
{
type
b=pop(),a=pop();
if(s=='+')return
a+b;
if(s=='-')return
a-b;
if(s=='*')return
a*b;
if(s=='/')return
a/b;
if(s=='^')return
pow(a,b);
}
};
5. c语言编写 编写一个简单的计算器,实现两个整型数的四则运算。
1、打开CodeBlocks,新建一个空白文件,先定义头文件和主函数,接着写程序多大的主体:
6. c语言简单求和,编写程序:输入两个数,求两个数的和
利用C语言编写一个求两数相加的和的编程思想和方法如下:
1.首先需要定义三个变量a,b,c,两个为相加的数,第三个为相加后得到的和。
7. C语言的基本运算
算术运算
C语言一共有34种运算符,包括了常见的加减乘除运算
加法运算+
减法运算-
乘法运算*
除法运算/
取余运算%
自增自减
简单使用
5++是错误的
++a和a++的区别
sizeof
作用
基本形式
逻辑运算
1.&& 逻辑与
1> 使用格式
2> 运算结果
3> 运算过程
4> 举例
5> 注意
|| 逻辑或
1> 使用格式
2> 运算结果
3> 运算过程
4> 举例
5>注意
! 逻辑非
1> 使用格式
2> 运算结果
3> 举例
4> 注意
三目运算符
N目运算符->三目运算符
8. 简单的c语言加减乘除运算
#include"stdio.h"
intchuli(inti);
voidmain()
{
inta=0,i=0,x=0,u=0,s[100],zi,b=0;
charc,f[100];
for(i=0;;i++)
{
for(x=0;(c=getchar())>='0'&&c<='9';x++)
{
u=c-'0';
if(x==0)
zi=u;
elsezi=zi*10+u;
}
s[a]=zi;
if(c!='['&&c!=']')
f[a++]=c;
if(c=='[')
s[0]=chuli(i);
if(c=='=')
break;
}
for(a=0;a<=i;a++)
{
x=a+1;
if((f[a]=='*'||f[a]=='/')&&b==0){u=a;b=1;}
if(f[a]=='+'||f[a]=='-')b=0;
if(f[a]=='*'){s[u]=s[u]*s[x];f[a]='+';s[x]=0;}
if(f[a]=='/'){s[u]=s[u]/s[x];f[a]='+';s[x]=0;}
}
for(a=0;a<=i;a++)
{
x=a+1;
if(f[a]=='+'){s[0]=s[0]+s[x];}
if(f[a]=='-'){s[0]=s[0]-s[x];}
}
printf("%d",s[0]);
}
intchuli(inti)
{
intshu[100],d=0,f=0,g=0,ha,l=0,q=0;
charw,fu[100];
for(d=0;;d++)
{
for(f=0;(w=getchar())>='0'&&w<='9';f++)
{
g=w-'0';
if(f==0)ha=g;
elseha=ha*10+g;
}
shu[l]=ha;
if(w!='['&&w!=']')fu[l++]=w;
if(w==']')break;
}
for(l=0;l<=d;l++)
{
g=l+1;
if((fu[l]=='*'||fu[l]=='/')&&q==0){f=l;q=1;}
if(fu[l]=='+'||fu[l]=='-')q=0;
if(fu[l]=='*'){shu[f]=shu[f]*shu[g];fu[l]='+';shu[g]=0;}
if(fu[l]=='/'){shu[f]=shu[f]/shu[g];fu[l]='+';shu[g]=0;}
}
ha=shu[0];
for(l=0;l<=d;l++)
{
g=l++;
if(fu[l]=='+')ha=ha+shu[g];
if(fu[l]=='-')ha=ha-shu[g];
}
ha=99;
printf(" %d ",ha);
returnha;
}