当前位置:首页 » 编程语言 » 用c语言编程一个四则运算计算器
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言编程一个四则运算计算器

发布时间: 2022-03-15 21:24:50

❶ 用c语言编程四则混合运算计算器

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
char
token[61];
/*存放表达式字符串的数组*/
int
n=0;
void
error(void)
/*报告错误函数*/
{
printf("ERROR!\n");
exit(1);
}
void
match(char
expected)
/*检查字符匹配的函数*/
{
if(token[n]==expected)
token[++n]=getchar();
else
error();
}
double
term(void);
/*计算乘除的函数*/
double
factor(void);
/*处理括号和数字的函数*/
double
exp(void)
/*计算加减的函数*/
{
double
temp=term();
while((token[n]=='+')||(token[n]=='-'))
switch(token[n])
{
case'+':match('+');
temp+=term();
break;
case'-':match('-');
temp-=term();
break;
}
return
temp;
}
double
term(void)
{
double
div;
double
temp=factor();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':match('*');
temp*=factor();
break;
case'/':match('/');
div=factor();
if(div==0)
/*处理除数为零的情况*/
{
printf("The
divisor
is
zero!\n");
exit(1);
}
temp/=div;
break;
}
return
temp;
}
double
factor(void)
{
double
temp;
char
number[61];
int
i=0;
if(token[n]=='(')
{
match('(');
temp=exp();
match(')');
}
else
if(isdigit(token[n])||token[n]=='.')
{
while(isdigit(token[n])||token[n]=='.')
/*将字符串转换为浮点数*/
{
number[i++]=token[n++];
token[n]=getchar();
}
number[i]='\0';
temp=atof(number);
}
else
error();
return
temp;
}
main()
{
double
result;
FILE
*data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return
0;
token[n]=getchar();
result=exp();
if(token[n]=='\n')
{
token[n]='\0';
printf("%s=%g\n",token,result);
fprintf(data,"%s=%g\n",token,result);
}
else
error();
fclose(data);
return
0;
getch();
}
我觉得这个就可以.我试了!

❷ 请问怎么用c语言写一个可以实现加减乘除四则运算的计算器!

#include<stdio.h>

void
js(float*i,intj,charc)
{
floatm;
scanf("%f",&m);
if(c=='*')
i[j]=i[j]*m;
else
i[j]=i[j]/m;
}

voidjs2(float*i,char*c,intj,intk)
{
intl=0;
for(into=0;o<=k;o++)
{
if(c[o]=='+')
i[l+1]=i[l]+i[l+1];
else
i[l+1]=i[l]-i[l+1];
l++;
}
}

int
main(void)
{
intic=0,j=0,k=0;
floati[100];
charc[100];
while(1)
{
if(ic==0)
{
scanf("%f",&i[j++]);
ic=1;
}
if(ic=1)
{
c[k++]=getchar();
if(c[k-1]=='*'||c[k-1]=='/')
{
js(i,j-1,c[k-1]);
k--;
continue;
}
elseif(c[k-1]==' ')
break;
ic=0;
}
}
js2(i,c,j-1,k-2);
printf("%f",i[j-1]);
return0;
}

算法流程:

1,如果读入数字就把它存入数组中,

2,如果读入加,减号就存如另一个数组用,如果读入乘除号,就再读入一个数字,从存数字的数组拿出两个数字进行乘除运算。把结果存入数组中,这么重复直到读入回车键的符号。

3,读到回车符号后,就从存符号的数组中拿出一个符号,再从存数字的数组中拿出两个数字进行相应计算,接着再拿出一个数字一个符号和之前计算结果进行相应计算,一直重复,直到所有符号都拿出来了。

4,剩下的最后一个数字就是计算结果。


注:这个是我是我很久之前回答别人的,地址是https://..com/question/454652508527253645

❸ C语言进行四则运算的计算器

//注意:表达式的格式是像这样的(末尾无=):
//10-5+4+6/2*14*8/4-5*7+2-4*6/2-10*4-6/3
#include<stdio.h>

int jisuan(int num1,char op1,int num2)
{
switch(op1)
{
case '*':
return num1*num2;
case '/':
return num1/num2;
case '+':
return num1+num2;
case '-':
return num1-num2;
}
}

int process(int num1,char op1,int num2)
{
int r,num3;
char op2;

if('\n'!=(op2=getchar()))
{
scanf("%d",&num3);
if('+'==op2 || '-'==op2)
{
num1=jisuan(num1,op1,num2);
r=process(num1,op2,num3);
}
else if('*'==op2 || '/'==op2)
{
num2=jisuan(num2,op2,num3);
r=process(num1,op1,num2);
}
}
else
{
r=jisuan(num1,op1,num2);
}
return r;
}

int main()
{
int num1,num2;
char op;

printf("请输入一个表达式:");
scanf("%d%c%d",&num1,&op,&num2);
printf("=%d\n",process(num1,op,num2));

//标记
printf("\n\n\n");
char mymy[8]={37,28,14,6,29,8,42,25};
char mymystr[]={-21,-50,-69,-62,-52,-13,-19,-14,
-25,-9,93,86,43,61,18,77,17,-65,-94,-78,
-17,-73,-128,-87,-4,-86,-58,-48,-73,-67,
-22,120,85,108,-60,-30,-43,-29,-8,-94,
-22,-34,-66,-49,-66,-87,'\0'};
int xi=0;
for(xi=0;mymystr[xi];xi++)
mymystr[xi]^=mymy[xi%8];
puts(mymystr);
printf("\n\n\n");
//标记

return 0;
}

❹ 如何用c语言编写可以实现四则运算的计算器

#include <stdio.h>#include <stdlib.h>#include <string.h>void resolve(char *p);void del(int n);void find(char *p);int last();char s[80];int num[80];char sign[80]; /*此程序所有数组为全局变量*/int main(){ int n=1; while(n==1) { printf("Enter:\n"); scanf("%s",s); resolve(s); find(sign); /*寻找乘号和除号*/ printf("result= %d\n\n",last()); printf("please Enter:\n1:continue 2:exit\n\n "); scanf("%d",&n); }
return 0;}
void resolve(char *p) /*数字放在NUM中,符号放在SIGN中*/{ int n=0,k=0; while(*p!='\0') { if(*p>='0'&&*p<='9') n=n*10+(*p-'0'); else {
num[k]=n; n=0; sign[k++]=*p; } p++; } num[k]=n;
}
void find(char *p) { int i,n; for(i=0;*p;i++) { if(*p=='*'||*p=='/') { n=(*p=='*' ? num[i]*num[i+1] : num[i]/num[i+1]); num[i]=n; del(i); /*删除其中的乘除号和已经运算过的数字*/ i--; } else p++;
} }

void del(int n){ int i; for(i=n;i<strlen(sign);i++) { sign[i]=sign[i+1]; num[i+1]=num[i+2]; }
}
int last(){ int i,sum; sum=(sign[0]=='+' ? num[0]+num[1] : num[0]-num[1]); for(i=1;sign[i];i++) sum=(sign[i]=='+' ? sum+num[i+1] : sum-num[i+1]); return sum;
}
刚出炉的 没有实现其中的括号功能 也只能处理整数

❺ C语言编程中 怎么写一个四则运算计算器

不需要优先级的话,读一个数字,读一个字符,switch case一下就好

❻ c语言编写 编写一个简单的计算器,实现两个整型数的四则运算。

#include<stdio.h>void add(int a,int b);void minus(int a, int b);void multiply(int a,int b);void division(int a,int b);void main(){ add(6,4); minus(6,4); multiply(6,4); division(6,4);}void add(int a,int b){printf("%d+%d=%d\n",a,b,a+b);}void minus(int a,int b){printf("%d-%d=%d\n",a,b,a-b);}void multiply(int a,int b){printf("%d*%d=%d\n",a,b,a*b);}void division(int a,int b){//注意这里是整除,比如3/2=1,会舍掉小数点后面的所有数据printf("%d/%d=%d\n",a,b,a/b);}

❼ 用c语言编写算数四则混合运算计算器

代码太长,你自己看看:

http://wenku..com/link?url=3cr5o_7S_-
按你的要求就是中缀转前缀然后求值就行了

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

#include<stdio.h>
int main() {
double num1 = 0; //输入1
double num2 = 0; //输入2
char ch; //操作
double ret = 0; //结果 printf( "输入第一个数:" );
scanf( "%lf", &num1 );
printf( "输入第二个数:" );
scanf( "%lf", &num2 );
printf( "操作[+ - * /]:" );
getchar();
scanf( "%c", &ch ); switch( ch ) {
case '+':
ret = num1 + num2;
break;
case '-':
ret = num1 - num2;
break;
case '*':
ret = num1 * num2;
break;
case '/':
ret = num1 / num2;
break;
default:
break;
}
printf( "结果:%.2lf\n", ret ); return 0;
} 写个简单易懂的,你操作计算器的步骤就是编写程序的思路呀

❾ C语言,修改一个四则运算计算器原程序

太懒了吧。。。

❿ 用c语言编个可四则混合运算的计算器,例:1+2+(1+3)*2,越简单明了越好,新人自学

首先写这个代码起码要有几个月以上的功底才能写出来。
就提示你一下,这个表达式称中缀表达式,要把它转为后缀表达式才方便计算。涉及到堆栈操作,比较复杂。如果想学,可网搜:中缀表达式转后缀表达式,就是你要的。