c语言函数计算器程序编写 c语言实现计算器代码

如何用C程序编写一个计算器

1

创新互联是一家集网站建设,隆子企业网站建设,隆子品牌网站建设,网站定制,隆子网站建设报价,网络营销,网络优化,隆子网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

首先,得从网上下载并安装c++,然后从桌面找到并打开它。

2

四则运算+ - * / 可以用if语句或switch语句实现。两者均用于判断。

if语句运用较广,switch语句运用较为简单方便。

END

用if语句

1

下面先介绍用if语句实现四则运算的方法。

2

#include "stdafx.h"

int main(int argc, char* argv[])

{

float x;

float y;

char r;

printf("请输入如 1+2 的格式\n");

scanf("%f%c%f",x,r,y);

if(r=='+') printf("x+y=%f\n",x+y);

else if(r=='-') printf("x-y=%f\n",x-y);

else if(r=='*') printf("x*y=%f\n",x*y);

else if(r=='/') printf("x/y=%f\n",x/y);

else  printf("input error\n");

return 0;

}

3

输入完毕,进行【全部重建】,然后就可以运行了。

在运行框输入你想要进行的运算,例如想计算 2*5 的值,你只需在运行框直接输入 2*5 ,然后按【enter】键,结果就出来啦。

4

因为每次进行计算都要重新运行,很麻烦,我们可以加入循环语句。

5

#include "stdafx.h"

int main(int argc, char* argv[])

{

float x;

float y;

char r;

printf("请输入如 1+2 的格式\n");

scanf("%f%c%f",x,r,y);

for()

{

if(r=='+') printf("x+y=%f\n",x+y);

else if(r=='-') printf("x-y=%f\n",x-y);

else if(r=='*') printf("x*y=%f\n",x*y);

else if(r=='/') printf("x/y=%f\n",x/y);

else  printf("input error\n");

printf("请输入如 1+2 的格式\n");

scanf("%f%c%f",x,r,y);

}

return 0;

}

6

加入循环之后,我们不用退出再次运行,我们可以在运行框连续输入,非常方便。

END

用switch语句

1

这次是使用switch语句,可达到同样的目的。

2

#include "stdafx.h"

int main(int argc, char* argv[])

{

float x;

float y;

char r;

printf("请输入如 1+2 的格式\n");

scanf("%f%c%f",x,r,y);

switch(r)

{

case '+': printf("x+y=%f\n",x+y);break;

case '-': printf("x-y=%f\n",x-y);break;

case '*': printf("x*y=%f\n",x*y);break;

case '/': printf("x/y=%f\n",x/y);break;

default:printf("input error\n");

}

return 0;

}

3

输入表达式完毕后,进行【全部重建】,然后就可以运行了。

在运行框输入你想要进行的运算,例如想计算 8/7 的值,你只需在运行框直接输入 8/7 ,然后按【enter】键,结果就出来啦。

4

switch语句也可如if语句一般,加入循环,可进行连续输入。

5

#include "stdafx.h"

int main(int argc, char* argv[])

{

float x;

float y;

char r;

printf("请输入如 1+2 的格式\n");

scanf("%f%c%f",x,r,y);

for()

{

switch(r)

{

case '+': printf("x+y=%f\n",x+y);break;

case '-': printf("x-y=%f\n",x-y);break;

case '*': printf("x*y=%f\n",x*y);break;

case '/': printf("x/y=%f\n",x/y);break;

default:printf("input error\n");

}

printf("请输入如 1+2 的格式\n");

scanf("%f%c%f",x,r,y);

}

return 0;

}

END

用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; ioperands; ++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(iTopMaxSize) 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 (islen)

{

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]) islen)

{

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(ioplen validexp[i]!=oper) ++i;

if(i==oplen || i=4) return -1;

return i;

}

int CheckExpress(char ch)

{

int i=0;

char cc;

while((cc=validexp[i]) ch!=cc) ++i;

if (!cc)

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]!='=' islen)

{

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]; //common 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';

}

用C语言编写一个计算器程序

#includestdio.h

#includewindows.h

#includemath.h

#define p 3.1415926

#define r p/180 //r=p/180,p=3.14....,p/180是求的1弧度,下面sin(里面要求的是弧度),sin(30弧度)=0.5。 void main()

{

float i,j,k;

int l,m,n,a[10];

char cmd;

LOOP:

system("cls");

printf("***********************\n");

printf("*******小寒计算器******\n");

printf("***********************\n");

printf("\n\n本计算器提供+、-、*、/四种运算。\n");

printf("p-代表圆周率pai。\n");

printf("a-代表十进制转换为二进制。\n");

printf("b-代表十进制转换为八进制。\n");

printf("c-代表十进制转换为十六进制。\n");

printf("d-代表该数值开方。\n");

printf("e-代表该数值开立方。\n");

printf("f-代表求几次方。\n");

printf("S-代表sin。\n");

printf("C-代表cos。\n");

printf("T-代表tan。\n");

printf("\n\n请输入要计算的数字和运算符号,输入“#”时,结束;输入“!”时复位。\n");

scanf("%f",k);

while((cmd=getchar())!='#')

{

if(i!=0)

switch(cmd)

{

case '+': scanf("%f",i);

k=k+i;

printf("=%5.2f",k);

break; case '-': scanf("%f",i);

k=k-i;

printf("=%5.2f",k);

break; case '*': scanf("%f",i);

k=k*i;

printf("=%5.2f",k);

break; case '/': scanf("%f",i);

k=k/i;

printf("=%5.2f",k);

break;

case 'p': k=k*p;

printf("%6.4f",k);

break; case 'f': printf("请输入要求该数字的几次方:");

scanf("%d",n);

i=k;

for(m=0;mn-1;m++)

k=k*i;

printf("%5.2f",k);

break; case 'a': printf("转换成二进制\n");

m=0;

while((int)k0)

{

l=k;

k=k/2;

l=l%2;

a[m]=l;

m++;

}

for(n=m-1;n=0;n--)

printf("%d",a[n]);

break; case 'b': printf("转换成八进制\n");

m=0;

while((int)k0)

{

l=k;

k=k/8;

l=l%8;

a[m]=l;

m++;

}

for(n=m-1;n=0;n--)

printf("%d",a[n]);

break;

case 'c': printf("转换成十六进制\n");

m=0;

while((int)k0)

{

l=k;

k=k/16;

l=l%16;

a[m]=l;

m++;

}

for(n=m-1;n=0;n--)

{

if(a[n]==10)

{ printf("A");continue;}

else if(a[n]==11)

{ printf("B");continue;}

else if(a[n]==12)

{ printf("C");continue;}

else if(a[n]==13)

{ printf("D");continue;}

else if(a[n]==14)

{ printf("E");continue;}

else if(a[n]==15)

{ printf("F");continue;} printf("%d",a[n]);

}

break;

case 'e': printf("该数值开立方得\n");

i=pow(k,1.0/3);

printf("%5.2f",i );

break;

case 'd': printf("该数值开方得\n");

i=k/2;

j=sqrt(k);

printf("%5.2f",j);

break; case 'S': k=k*r;

i=sin(k);

printf("%5.2f",i);

break;

case 'C': k=k*r;

i=cos(k);

printf("%5.2f",i);

break; case 'T': k=k*r;

i=tan(k);

printf("%5.2f",i);

break; case '!': goto LOOP;

}

}

}

C语言编写一个简单的计算器

我给你写一个简单的计算器程序,你可以看一下。如果需要更多的功能,那么还要更复杂一些。不是一句话可以说明白的。要用到很多函数的调用,和函数的方法。

#include

"stdio.h"

void

main()

{

int

a,b,result;

char

m;

printf("请输入需要计算的数:\n");

scanf("%d

%d",a,b);

printf("请输入加、减、乘或除\n");

scanf("%c",m);

if(m=="+")

//判断是否进行加法运算,以下同理

result=a+b;

else

if(m=="-")

result=a-b;

elsee

if(m=="*")

result=a*b;

else

if(m=="/")

result=a/b;

else

printf("您输入有误\n");

//如果输入的符号非加减乘或是除,报错

printf("计算结果为:%d\n",result);

//最后输出结果

}


当前题目:c语言函数计算器程序编写 c语言实现计算器代码
分享URL:http://ybzwz.com/article/ddsooic.html